Der Lebenslauf gehört zu den ganz wenigen Dokumenten, bei denen die Lesenden über die Typografie urteilen, bevor sie ein Wort des Inhalts gelesen haben. Der Grund, ihn dennoch in LaTeX zu schreiben, ist nicht die Schönheit des Ergebnisses, sondern dass sich der CV vom Vorjahr auch dieses Jahr noch übersetzen lässt und dass jede Anpassung an einen Arbeitgeber als git-Diff erhalten bleibt. Zugleich ist dies die Ecke von LaTeX, in der Ratschläge aus dem Netz am schnellsten veralten: Mehrere Klassen, die routinemäßig als „Standardwahl“ genannt werden, sind in TeX Live 2024 überhaupt nicht enthalten, und eine der enthaltenen wirft schon beim ersten Lauf einen Fehler. Diese Seite führt nur auf, was auf TeX Live 2024 tatsächlich funktioniert – geprüft mit kpsewhich und durch echte Übersetzungsläufe. Die zweite Hälfte behandelt Briefe: die Standardklasse letter, scrlttr2 aus KOMA-Script und die japanische Briefpraxis.
Welche CV-Klassen in TeX Live 2024 enthalten sind – und welche nicht
Die kurze Antwort: moderncv, europecv, europasscv, currvita, komacv und limecv sind in TeX Live 2024 enthalten, die beiden von Blogbeiträgen und Overleaf-Vorstellungen am häufigsten genannten Namen altacv und awesome-cv dagegen nicht. Lokal führt \documentclass{altacv} zum Abbruch mit ! LaTeX Error: File 'altacv.cls' not found. (bei awesome-cv wortgleich). Beide werden über GitHub und die Overleaf-Vorlagensammlung verteilt, nicht über CTAN; wer sie nutzen will, muss das Repository holen und die .cls neben das eigene Dokument legen. Genau daran scheitert der erste Versuch, einen auf Overleaf gebauten Lebenslauf auf dem eigenen Rechner zu übersetzen. Ein kpsewhich altacv.cls schafft Klarheit: keine Ausgabe, keine Installation.
| Klasse / Paket | In TeX Live 2024 | Was sie bietet |
|---|---|---|
moderncv | ja (v2.3.1) | fünf Stile, sieben Farben, Lebenslauf und Anschreiben aus einer Klasse |
europecv | ja (mit Umgehung) | das Europass-Layout der EU; Beschriftungen für 29 Sprachen |
europasscv | ja | die Europass-Revision von 2013; die README nennt die Layouts von 2020 als nicht umgesetzt |
currvita | ja | ein Paket, keine Klasse: ergänzt article um die Umgebungen cv und cvlist |
komacv | ja (v1.1.2) | die moderncv-Optik, neu gebaut auf KOMA-Script |
limecv | ja (v0.1.12) | modernes Layout mit Seitenspalte – die nächstliegende Antwort auf altacv aus der Distribution |
altacv | nein | über GitHub / Overleaf verteilt; kpsewhich altacv.cls liefert nichts |
awesome-cv | nein | ebenso; es erscheint ! LaTeX Error: File 'awesome-cv.cls' not found. |
moderncv verwenden: \moderncvstyle und \cventry
moderncv beruht auf einem Gedanken: Das Aussehen in zwei Zeilen festlegen, danach nur noch Struktur schreiben. \moderncvstyle{...} wählt eines von fünf Layouts (casual [Standard], classic, banking, oldstyle, fancy), \moderncvcolor{...} eine von sieben Farben (blue, black, burgundy, green, grey, orange, purple, red). Ein Übersetzungslauf aller fünf Stile mit pdfLaTeX gegen die in TeX Live 2024 enthaltene v2.3.1 lief in jedem Fall fehlerfrei durch. Das Arbeitspferd ist \cventry{years}{title}{institution}{location}{grade}{description} mit sechs Argumenten; ein leeres {} lässt die betreffende Spalte einfach zusammenfallen. Einzeilige Einträge nehmen \cvitem{header}{text}, zwei nebeneinander \cvdoubleitem, Aufzählungen \cvlistitem. Die Struktur ist das Dokument, der Stil nur eine Hülle darüber – deshalb ändert der Wechsel von casual zu banking für eine andere Bewerbung kein einziges Zeichen des Inhalts.
\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{casual} % casual | classic | banking | oldstyle | fancy
\moderncvcolor{blue}
\usepackage[scale=0.75]{geometry}
\name{Taro}{Yamada}
\title{Software Engineer}
\address{1-1 Chiyoda}{Tokyo}{Japan}
\phone[mobile]{+81~90~0000~0000}
\email{[email protected]}
\begin{document}
\makecvtitle
\section{Experience}
% {years}{title}{institution}{location}{grade}{description}
\cventry{2020--2024}{Engineer}{ABC Inc.}{Tokyo}{}{Web development.}
\cvitem{Skills}{LaTeX, C, Python}
\end{document}Ist moderncv verwaist? Die eigene README antwortet
„Verwaist“ trifft nur zur Hälfte zu, und die in TeX Live 2024 mitgelieferte README.md sagt, welche Hälfte: Diese Distribution ist ein Fork mit dem Ziel, moderncv innerhalb des CTAN am Leben zu halten, da der ursprüngliche Zweig seit 2016 tot ist. Ursprünglicher Autor ist Xavier Danaux; der CHANGELOG-Eintrag zu v2.1.0 (21. Januar 2021) vermerkt „maintainer change: now team maintained“ – dort beginnt die Rettung durch Freiwillige. In TeX Live 2024 steckt v2.3.1 vom 21. Februar 2022. Genauer als „tot“ ist also „2016 verwaist, 2021 adoptiert“ – und übersetzen lässt es sich auf TeX Live 2024 fehlerfrei. Die zusätzlichen \social-Dienste und der Umstieg auf fontawesome5 gehen ebenfalls auf dieses Team zurück.
Die Spuren eines geretteten Pakets sind allerdings geblieben. moderncv hat kein Handbuch: Die README.md sagt offen, „bis ein ordentliches Handbuch geschrieben ist“ solle man in template.tex nachsehen (das mitgelieferte moderncv_userguide.pdf trägt weiterhin ein Datum vom Januar 2021). Und im Dokumentationsverzeichnis liegt unverändert eine Datei namens KNOWN_BUGS, die etwa den überflüssigen Abstand um das Literaturverzeichnis im Stil fancy, das lonely \item--perhaps a missing list environment bei Verwendung von bibentry und das Zusammenspiel von CJK mit fancyhdr auflistet. Wer eine Publikationsliste in den Lebenslauf aufnehmen will, sollte diese eine Datei lesen, bevor er sich für die Klasse entscheidet. Wo sie liegt, verrät texdoc -l moderncv.
europecvs Sorting rule for 'begindocument' hook applied too late. beheben
Die Lösung ist eine Zeile: \usepackage{hyperref} (oder bookmark) selbst in die Präambel schreiben – damit verschwindet der Fehler. Die Ursache liegt in der Klasse. europecv.cls lädt hyperref aus \AtBeginDocument{...\RequirePackage{hyperref}...} heraus, also während \begin{document} bereits läuft. Das von hyperref mitgebrachte nameref.sty führt \DeclareHookRule{begindocument}{showkeys}{before}{nameref} aus, doch da hat der Hook begindocument schon begonnen, und der LaTeX-Kern meldet ! LaTeX hooks Error: Sorting rule for 'begindocument' hook applied too late. Wird hyperref früher selbst geladen, kommt nameref zu einem Zeitpunkt an, zu dem seine Hook-Regel noch zählt.
% europecv on TeX Live 2024: the class loads hyperref inside \AtBeginDocument,
% so nameref's hook rule arrives too late. Load hyperref yourself first.
\documentclass[a4paper,helvetica]{europecv}
\usepackage{graphicx} % europecv calls \includegraphics but does not load it
\usepackage{hyperref} % <- this line removes the "hook applied too late" error
\ecvname{Yamada, Taro}
\ecvemail{[email protected]}
\begin{document}
\begin{europecv}
\ecvpersonalinfo
\ecvsection{Work experience}
\ecvitem{2020--2024}{Engineer, ABC Inc., Tokyo}
\end{europecv}
\end{document}Dass es sich um einen Fehler der Klasse und nicht um einen Anfängerfehler handelt, lässt sich am mitgelieferten Beispiel von europecv prüfen: Schickt man doc/latex/europecv/examples/minimal.tex – die offizielle Minimaldatei – durch pdfLaTeX, erscheint derselbe Fehler. templates/cv_template_en.tex dagegen übersetzt sauber, und der einzige relevante Unterschied ist das dort stehende \usepackage{bookmark}, das hyperref zuerst hereinholt. Außerdem ruft europecv.cls \includegraphics auf, ohne graphicx selbst zu laden; bei eingeschaltetem Logo und eingeschalteter Flagge kommt daher zusätzlich ! Undefined control sequence. \draweuropasslogo. Abhilfe: \usepackage{graphicx} ergänzen oder die Klassenoption nologo setzen.
Zum Europass-Format selbst: Die beiden ähnlich benannten Klassen nicht verwechseln. europecv setzt die Linie des 2002 eingeführten gemeinsamen europäischen Formats um und liefert Beschriftungsdateien für 29 Sprachen mit, von ecvbg.def bis ecvsv.def. europasscv setzt das Layout der Revision von 2013 um, und in seiner README steht weiterhin die Warnung, dass „diese Klasse derzeit die neuesten, 2020 eingeführten Europass-Layouts nicht umsetzt“. Die EU überarbeitet ihre Vorlage, deshalb lautet der erste praktische Schritt bei der Vorgabe „Lebenslauf im Europass-Format“: klären, welche Ausgabe gemeint ist.
Die Standardklasse letter: viele Empfänger aus einer Datei
Der eigentliche Vorzug der Klasse letter ist: Man erhält so viele Briefe, wie man letter-Umgebungen schreibt. Absender (\address) und Unterschrift (\signature) stehen einmal in der Präambel; danach reiht man \begin{letter}{Empfänger} aneinander, und jeder Block ergibt einen eigenen Brief auf einer eigenen Seite, alle vom selben Absender. Zehn Empfehlungsschreiben oder dieselbe Mitteilung an dreißig Firmen entstehen so aus einer einzigen Datei. Im Inneren gibt es nur drei Teile: \opening{Anrede}, den Text und \closing{Grußformel}. Das Datum setzt \today automatisch; \encl{...} erscheint als encl:, \cc{...} als cc:, und \ps{...} stellt ein Postskriptum unter die Unterschrift. Zwei Briefe hinein, zwei Seiten heraus – das lässt sich durch Übersetzen nachprüfen.
\documentclass[11pt]{letter}
\address{Taro Yamada\\1-1 Chiyoda\\Tokyo 100-0001}
\signature{Taro Yamada}
\begin{document}
\begin{letter}{Hiring Manager\\ABC Inc.\\Osaka}
\opening{Dear Hiring Manager,}
I am writing to apply for the position.
\closing{Sincerely,}
\encl{CV, transcript} % prints as "encl:"
\cc{Personnel} % prints as "cc:"
\ps{P.S. Available from April.}
\end{letter}
% a second letter, same sender, second page
\begin{letter}{Second Recipient\\XYZ Ltd.}
\opening{Dear Sir or Madam,}
A second letter from the same source file.
\closing{Yours faithfully,}
\end{letter}
\end{document}scrlttr2 und scrletter: Falzmarken und Fensterumschläge
Der entscheidende Unterschied von scrlttr2 zur schlichten Klasse letter ist, dass auch das Falten des Blattes und das Einlegen in den Umschlag bedacht werden. Die Klasse druckt feine Linien an den Faltstellen (foldmarks) und setzt den Adressblock so, dass er im Fenster erscheint. Diese Anpassungen sind in .lco-Dateien ausgelagert – letter class options –, geladen mit \LoadLetterOption{DIN}. KOMA-Script liefert DIN, DIN5008A, DIN5008B, DINmtext, NF (Frankreich), SN und SNleft (Schweiz), UScommercial9 und UScommercial9DW sowie visualize, das die Geometrie sichtbar mitdruckt. Konfiguriert wird durchweg über Variablen der Form \setkomavar{fromname}{...}, sodass Inhalt und Gestalt vollständig getrennt bleiben. Denselben Brief für einen anderen Umschlagstandard neu zu setzen, ändert genau eine Zeile: das \LoadLetterOption.
Ebenfalls nützlich zu wissen ist scrletter: keine Klasse, sondern ein Paket, mit dem sich eine letter-Umgebung mitten in ein scrartcl- oder scrbook-Dokument setzen lässt. Ein Anschreiben im Anhang eines Berichts oder ein Begleitschreiben am Ende eines Vertrags muss so kein zweites Dokument mehr werden. Tatsächlich übersetzt eine Datei mit \documentclass{scrartcl} plus \usepackage{scrletter}, in der direkt nach einem \section{...} ein \begin{letter}{...} steht, ohne Weiteres. scrlttr2 und scrletter verwenden dieselben Variablen und dieselben .lco-Dateien; umlernen muss man nichts.
\documentclass[fontsize=11pt,foldmarks=true,parskip=half]{scrlttr2}
\LoadLetterOption{DIN} % or NipponEL, KakuLL, UScommercial9, SN, NF ...
\setkomavar{fromname}{Taro Yamada}
\setkomavar{fromaddress}{1-1 Chiyoda\\Tokyo 100-0001}
\setkomavar{signature}{Taro Yamada}
\setkomavar{subject}{Application for the advertised position}
\setkomavar{place}{Tokyo}
\begin{document}
\begin{letter}{Hiring Manager\\ABC Inc.\\Osaka}
\opening{Dear Hiring Manager,}
I am writing to apply for the position.
\closing{Sincerely,}
\encl{CV\\Transcript}
\end{letter}
\end{document}Gibt es eine japanische Briefklasse? \挨拶 und die Nippon-.lco-Dateien
Eine eigene japanische Briefklasse gibt es in TeX Live 2024 nicht. Eine Suche nach *letter*.cls fördert scrlttr2, g-brief, dinbrief, akletter und weitere westliche Klassen zutage, aber nichts für japanische Korrespondenz. Praktisch gibt es dennoch zwei Antworten. Die erste betrifft den Umschlag: KOMA-Script liefert .lco-Dateien für japanische Umschläge mit – NipponEL, NipponEH, NipponLL, NipponLH und NipponRL decken die Formate Chou und You 3 und 4 ab, KakuLL das Format Kaku A4 (Fenster von 90×45 mm oder 90×55 mm). Die Unterstützung existiert seit KOMA-Script 2.97e; ein Anhangkapitel des Handbuchs von Gernot Hassenpflug erklärt sie bis hin zum Unterschied zwischen JIS-A- und JIS-B-Papierformaten.
| .lco-Datei | Umschlag | Fenstergröße |
|---|---|---|
DIN | europäische DIN-Umschläge (üblicher Ausgangspunkt) | — |
NipponEL | Chou / You Größe 3 und 4 | 90 × 45 mm |
NipponEH | dieselben, mit höherem Fenster | 90 × 55 mm |
NipponRL | Chou / You mit rechts liegendem Fenster | 90 × 45 mm |
KakuLL | Kaku A4 | 90 × 45 mm |
visualize | kein Umschlagstandard, sondern druckt die Geometrie zur Kontrolle | — |
Die zweite Antwort betrifft den Briefanfang. okumacro.sty – die Makrosammlung von Haruhiko Okumura, die in TeX Live mit jsclasses ausgeliefert wird – definiert einen Befehl, dessen Name auf Japanisch geschrieben ist: \挨拶 („Gruß“). Ihn allein zu schreiben erzeugt 拝啓, gefolgt von der Jahreszeitenformel, die zum aktuellen Monat passt. Die Umsetzung ist ein schlichtes zwölffaches \ifcase\month: ab Januar 厳寒, 春寒, 早春, 陽春, 新緑, 向暑, 猛暑, 残暑, 初秋, 仲秋, 晩秋, 初冬, abgeschlossen mit の候,ますますご清栄のこととお喜び申し上げます。 Im August mit upLaTeX übersetzt erscheint tatsächlich 拝啓 残暑の候,ますますご清栄のこととお喜び申し上げます。 Dass ein Makroname überhaupt japanisch geschrieben sein kann, ist eine Eigenheit der pTeX-Familie – ein Beleg dafür, dass Japanisch hier als Sprache und nicht bloß als Zeichenmaterial behandelt wird.
% Japanese letter opening: okumacro defines a Japanese-named command that
% emits the salutation plus the seasonal formula for the current \month.
% Build with: uplatex jl.tex && dvipdfmx jl.dvi
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage{okumacro}
\begin{document}
\挨拶
このたびは大変お世話になりました。
\hfill 敬具
\end{document}In der Praxis: welche Klasse wählen und was in git gehört
Die Wahl trifft meist die Einreichungsvorgabe. Ist Europass vorgeschrieben, kommen europecv oder europasscv infrage – nach Klärung, welche Ausgabe gemeint ist. Wer einen japanischen Rirekisho mit den JIS-typischen Kästen braucht, baut ihn besser mit tabular als mit einer CV-Klasse: Alle CV-Klassen setzen den westlichen, listenförmigen Lebenslauf voraus und passen schlecht zu einem Formular mit Namens-, Foto- und Siegelfeld. Für einen gewöhnlichen englischsprachigen CV moderncv; für eine zeitgemäßere zweispaltige Optik limecv; wer ohnehin mit KOMA-Script arbeitet, nimmt komacv. Und in jedem Fall gilt: das Anschreiben in derselben Klasse schreiben. moderncv bietet \recipient, \opening, \makelettertitle, \makeletterclosing und \enclosure, sodass Überschriften, Schrift und Farbe über beide Dokumente hinweg übereinstimmen. Zwei Blätter aus zwei verschiedenen Vorlagen fallen nebeneinander meist auf.
- Unterschiede je Arbeitgeber gehören in getrennte Dateien, nicht in Branches: ein gemeinsames
cv-body.tex, das jedescv-firma-a.texnur per\inputeinbindet, bedeutet eine einzige Stelle zum Aktualisieren. - Klasse und Vorlage im Repository mitführen. Was nicht in der Distribution steckt – etwa
altacv–, ist genau das, worüber das eigene Ich in drei Jahren stolpert. - Einen expliziten Ausgabenamen verwenden statt des zufälligen
\jobname. Ein Anhang namensmain.pdfverschwindet im Downloadordner der Gegenseite. - Die PDF-Metadaten prüfen. Autorname und Titel, die
pdfinfozeigt, reisen mit der Datei zum Arbeitgeber. - Einen japanischen Brief bis zum Drucken und Falten testen. Für Fensterumschläge druckt die Option
visualizevonscrlttr2die Geometrie zur Kontrolle mit.
Zuletzt: Wo LaTeX hier wirklich gewinnt. Ein Lebenslauf ist ein Gestaltungsdokument, und rein optisch schlägt er weder InDesign noch eine Canva-Vorlage. LaTeXs Vorteil liegt anderswo: Eine .tex von vor fünf Jahren liefert heute dasselbe PDF, die Umarbeitung für jede Bewerbung ist als git diff lesbar, und eine Publikationsliste lässt sich aus einer .bib erzeugen. Anders gesagt: Der Lebenslauf wird zu einem gepflegten Bestand statt zu einem einmal angefertigten Werkstück. Genau deshalb ist bei der Klassenwahl nicht die Optik das Erste, was zu prüfen ist, sondern ob sie in drei Jahren noch übersetzt – Existenz mit kpsewhich, Gesundheit mit einem echten Lauf, in dieser Reihenfolge.