\cvline und \cventry in moderncv

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


greg
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 13. Jul 2010, 17:11

\cvline und \cventry in moderncv

Beitrag von greg »

Hi, ich schreibe meinen Lebenslauf mit cvmodern.

1. Wer kann mir sagen, warum uneinheitlich am Ende der (ersten) Zeile nach \cventry ein Punkt kommt, jedoch nicht nach \cvline?

2. Da mir der Abschlusspunkt bei \cventry nicht gefällt, da kein Satz beendet wird: Wie bekomme ich ihn weg?

das Beispiel:
\documentclass[11pt,a4paper]{moderncv}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}

\moderncvtheme[green]{classic}

\firstname{Vor-}
\familyname{Nachname}
\title{Lebenslauf}
\address{Musterstraße 1}{00000 Musterstadt}
\mobile{0000\,000000000}
\email{name@email.de}


\begin{document}
\maketitle

\section{Angaben zur Person}
\cvline{Geburtsdatum}{00.~Januar 0000}
\cvline{Geburtsort}{Musterstadt}

\section{Ausbildung}
\subsection{Schule}
\cventry{Juni 0000}{Allgemeine Hochschulreife (Abitur)}{\textit{Note 6,0}}{}{}{einschließlich Latinum}

\section{Tätigkeiten}
\cventry{2000-2001}{Freiwilligenjahr}{Freiwilligeninstitution}{Ort}{}{meine Tätigkeiten}

\vfill

\emptysection \closesection
Musterstadt, \today{}

\end{document}

Grüße und Dank für Hilfe,
Gregor

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Annahme: Das unterschiedliche Verhalten dürfte daran liegen, dass \cvline die allgemeinere Anweisung ist, also mehr Spielraum lässt.

Um den Punkt bei \cventry weg zu bekommen, bleibt wohl nur, \cventry umzudefinieren:
\renewcommand*{\cventry}[6]{%
  \cvline{#1}{%
    {\bfseries#2}%
    \ifx#3\else{, {\slshape#3}}\fi%
    \ifx#4\else{, #4}\fi%
    \ifx#5\else{, #5}\fi%
%    .%<--- DIESE ZEILE AUSKOMMENTIERT
    \ifx#6\else{\newline{}\begin{minipage}[t]{\linewidth}\small#6\end{minipage}}\fi
    }}%
Da hier keine internen Anweisungen (solche mit »@« im Namen) vorkommen, kannst Du die Umdefinierung irgendwo in die Dokumentpräambel packen. Ich habe die Änderung gegenüber der Originaldefinition markiert.

BTW: Ich halte obige Definition bzw. die Originaldefinition für fehlerhaft. Bei den ganzen \ifx... wird nämlich keineswegs getestet, ob das jeweilige Argument leer ist. Wenn das Argument wirklich leer ist, wird getestet, ob \else gleich { ist. Expandiert das Argument nur zu einem Token, wird getestet ob dieses \else ist. Wenn das Argument zu mehreren Token expandiert wird getestet, ob die ersten beiden Token gleich sein. Damit wird also bei
\cventry{A}{B}{}{C}{DE}{FF}
für das dritte Argument \else mit { verglichen. Die sind ungleich, das Argument wird nicht ausgegeben, weil für TeX kein else-Teil existiert. C wird mit \else verglichen. Die sind ungleich. Das Argument wird nicht ausgegeben, weil \else bereits gelesen wurde und damit für TeX kein else-Teil mehr existiert. D wird mit E verglichen, die sind ungleich, das Argument wird über den else-Teil ausgegeben. F mit F verglichen, die sind gleich und FF wird nicht ausgegeben. Noch schlimmer wird es mit
\cventry{A}{B}{C}{AALFISCHEN}{AALFISCHEN}{AALFISCHEN}{AALFISCHEN}
Weil hier das Argument 3 bis 6 mit zwei gleichen Buchstaben beginnt, wird nicht der else-Teil, sondern der then-Teil ausgeführt. In diesem befindet sich der Expansionsrest LFISCHEN der darüber ohne die Zusätze des else-Teils ausgegeben wird. Das Ergebnis wird damit grob falsch, was man besonders beim 6. Argument sofort erkennen kann.

Fazit: moderncv ist grob fehlerhaft! Du solltest einen Bugreport an den Autor schreiben, damit er die Vergleiche beispielsweise in der Form
\ifx\relax#3\relax ... \else ...\fi
implementiert. In dem Fall gibt es nur noch ein Problem, wenn das Argument mit \relax beginnt. Alternativ kann er hier auch auf das Paket ifthen zurückgreifen, wie er das an anderer Stelle auch schon tut.

greg
Forum-Anfänger
Forum-Anfänger
Beiträge: 10
Registriert: Di 13. Jul 2010, 17:11

Beitrag von greg »

Ok, danke! geht soweit erstmal, Fehlermeldung muss noch etwas auf mehr Zeit warten...

VG, Gregor

Antworten