Was macht LaTeX-PDF — Professionelle LaTeX-PDF-Produktion?
Ziel ist nicht 'es kompiliert', sondern dass der Leser das PDF in die Hand nimmt und es professionell wirkt. Auslieferung erfolgt nach Inhalt und tatsächlicher Seite; erfolgreiches Kompilieren beweist nur den Abschluss der Kompilierung, nicht den visuellen Erfolg.
Inhaltsverzeichnis
- Kernprinzipien
- Engine-Wahl
- Kompilierungsstrategie
- Layout-Prinzipien für Lesbarkeit
- Arbeitsablauf
- Schnellcheck häufiger Fehler
Kernprinzipien
Das Layout folgt zwei Prüfzielen und benötigt kein anderes Skill, um zu funktionieren:
① Layout dient dem Lesen – Jede Layout-Entscheidung beantwortet die Frage 'Hilft das dem Leser, es besser zu verstehen?'. Wenn das Entfernen einer Einstellung das Leseerlebnis nicht verändert, dann existiert sie unnötig.
② Zurückhaltung ist Professionalität – Entfernen Sie alle visuellen Elemente, die keine Informationen vermitteln. Dekorative Linien, Hintergrundmuster, farbige Kästen – das meiste davon sollte weg. Professionelles Layout 'sieht mühelos aus', während Amateur-Layout oft 'sieht bemüht, aber chaotisch' wirkt.
Ausführliche Lesbarkeitsprinzipien finden Sie unter readability-principles.
Engine-Wahl
Die falsche Engine zu wählen ist der häufigste Fehler, insbesondere bei chinesischen Inhalten mit pdflatex.
Chinesisch/Japanisch/Koreanisch?
├─ Ja → xelatex (+ ctex Paket)
│ (lualatex geht auch, aber langsamer)
└─ Nein → Systemschriften benötigt?
├─ Ja → xelatex oder lualatex (+ fontspec)
└─ Nein → pdflatex (schnellste, kompatibelste)
Bei neuen CJK-Dokumenten bevorzugen Sie XeLaTeX oder LuaLaTeX und überprüfen Sie die tatsächliche Schriftunterstützung. Vorhandene funktionierende pdfLaTeX/CJK-Vorlagen sollten nicht grundlos ersetzt werden; fandol ist im normalen pdfLaTeX-Pfad nicht geeignet.
| Engine | Vorteile | Nachteile | Anwendungsbereich |
|---|---|---|---|
pdflatex | Schnellste, stabilste, größtes Ökosystem | Kein natives Unicode, keine Systemsesten | Reine englische Dokumente |
xelatex | Natives Unicode, Systemschriften, CJK-freundlich | Langsamer | Standardwahl für chinesische Dokumente |
lualatex | Leistungsstärkste Schriftverarbeitung, Lua integrierbar | Langsamste | Fortgeschrittene Layout-Funktionen |
Kompilierungsstrategie
Zuerst Quelle und Ausführungsgrenzen prüfen
Vor der Kompilierung statisch .tex, eingebundene .sty/.cls, Build-Konfiguration und Anhangspfade prüfen, dabei auf Datei-I/O, externe Befehle und Lua-Ausführungsfähigkeiten achten. Statische Prüfung ist kein Sicherheitsnachweis. Für nicht vertrauenswürdige Projekte eine isolierte Umgebung ohne private Dateien, ohne Netzwerk und mit eingeschränkter Schreib-, Laufzeit- und Ressourcennutzung verwenden; bei fehlender geeigneter Isolation die Kompilierung stoppen und melden, nicht in persönlicher Umgebung probieren.
Shell-Escape standardmäßig deaktivieren, nicht automatisch für minted oder externe Grafiken aktivieren. Bei Verwendung von latexmk -norc verwenden, um automatisches Laden von System-, Benutzer- oder Projekt-rc zu vermeiden; andere Build-Skripte und externe Hilfsprogramme separat prüfen. Installation, Netzwerkzugriff oder Änderung von Umgebungen nur innerhalb vorhandener Autorisierung; bei fehlender Abdeckung vorher Genehmigung einholen.
Wiederverwendung geeigneter Kompilierungsketten
Bestehende Projekte übernehmen geeignete Build-Methoden; bei Bedarf an automatischer Mehrfachkompilierung und Bibliografie kann latexmk verwendet werden. Die folgenden Beispiele beziehen sich nur auf bereits geprüfte Eingaben und laufen im erlaubten Arbeitsverzeichnis:
# xelatex Dokument (Standard für Chinesisch)
latexmk -norc -xelatex -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex
# pdflatex Dokument
latexmk -norc -pdf -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex
# Hilfsdateien bereinigen
latexmk -norc -c
Parametererklärung:
-interaction=nonstopmode: Bei Fehlern nicht anhalten und auf Eingabe warten (für Skript-Umgebungen erforderlich)-halt-on-error: Beim ersten Fehler stoppen, erleichtert die Fehlersuche
biber (Bibliografie)
Bei Bedarf an Bibliografie prüfen, ob latexmk biber/BibTeX und die Eingaben plant; nach Freigabe ausführen; automatische Erkennung nicht als zusätzliche Ausführungsberechtigung betrachten.
Layout-Prinzipien für Lesbarkeit
Im Folgenden eine Zusammenfassung der Kernprinzipien. Die detaillierte Zuordnung und Code-Beispiele finden Sie unter readability-principles.
Seiten-Geometrie
Ziel: 50-75 Zeichen pro Zeile (66 ist ideal, TeX-Standard liegt genau dort).
\usepackage{geometry}
\geometry{a4paper, margin=2.5cm}
% Chinesische Zeichen sind ca. 2x so breit wie englische, 35 chinesische Zeichen/Zeile ≈ 70 englische Zeichen/Zeile
Tabellen
Für gewöhnliche Datentabellen bevorzugen Sie den booktabs-Stil ohne vertikale Linien; bei Vorlagen von Benutzern, Zeitschriften oder Institutionen, die andere Anforderungen haben, deren Spezifikationen beibehalten:
\usepackage{booktabs}
\begin{tabular}{lrr}
\toprule
Kennzahl & 2024 & 2025 \\
\midrule
Umsatz & 120 & 150 \\
\bottomrule
\end{tabular}
booktabs ist konzeptionell ohne vertikale Linien ausgelegt – mit vertikalen Linien brechen die horizontalen Linienabstände; das ist kein Bug, sondern ein Feature.
Abstandssystem
Wählen Sie eine von zwei Methoden für Absatztrennung, nicht mischen:
% Option A: Erstzeileneinzug (wissenschaftliche Dokumente, ctex-Standard)
\setlength{\parindent}{2em}
% Option B: Absatzabstand (technische Dokumente, Berichte)
\setlength{\parindent}{0pt}
\setlength{\parskip}{0.5\baselineskip}
Schriftarten
Für Fließtext Serifenschrift (lesekomfortabel), für Code monospaced. Für xelatex/lualatex Systemschriften mit fontspec setzen:
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}[Ligatures=TeX]
\setmonofont{TeX Gyre Cursor}
microtype
Eine nahezu kostenlose Qualitätssteigerung – Mikrotypografie-Korrekturen lassen den Text gleichmäßiger wirken:
\usepackage{microtype}
% Hinweis: Unter xelatex nur protrusion (kein font expansion), aber dennoch lohnenswert
Hurenkinder / Schusterjungen
Verhindern, dass erste oder letzte Zeile eines Absatzes allein am Seitenrand erscheint:
\widowpenalty=10000
\clubpenalty=10000
Code-Hervorhebung
Standardmäßig listings (keine externen Abhängigkeiten). minted liefert höhere Qualität, benötigt aber Python + Pygments/latexminted:
\usepackage{listings}
\usepackage{xcolor}
\lstset{
basicstyle=\ttfamily\small,
keywordstyle=\color{blue!70!black},
commentstyle=\color{gray},
stringstyle=\color{green!50!black},
numbers=left,
numberstyle=\tiny\color{gray},
frame=none,
breaklines=true,
showstringspaces=false,
}
Arbeitsablauf
Für jemanden, der diesen Arbeitsablauf zum ersten Mal verwendet.
Schritt 0: Umgebungsprüfung
Nur prüfen, wenn eine lokale Kompilierung erforderlich ist und vorhandene Werkzeuginformationen nicht ausreichen. Lesen Sie zuerst das Prüfskript und bestätigen Sie, dass es vertrauenswürdige PATH-Programme aufruft und den aktuellen Berechtigungen entspricht; es meldet nur, installiert oder ändert nichts.
Ermitteln Sie skill_root aus dem absoluten übergeordneten Verzeichnis der tatsächlich gelesenen SKILL.md, nehmen Sie nicht an, dass das aktuelle Arbeitsverzeichnis das Skill-Verzeichnis ist, und führen Sie dann aus:
bash "$skill_root/scripts/check_latex_env.sh"
Fehlende Komponenten und fehlgeschlagene Erkennungen getrennt melden. Installieren Sie nur die für die Aufgabe tatsächlich benötigten und bereits autorisierten Abhängigkeiten; ohne Autorisierung geben Sie die Lücken oder vorhandene Alternativen an. Details zu den Schritten bei Bedarf unter Umgebungsprüfungs-Leitfaden.
Schritt 1: Anforderungen verstehen
Bestätigen Sie:
- Dokumenttyp: Aufsatz / Bericht / Lebenslauf / Folien / Allgemein
- Sprache: Chinesisch / Englisch / Gemischt
- Leser: Wissenschaftlich / Geschäftlich / Technisch / Allgemein
- Besondere Anforderungen: Bibliografie / Codeblöcke / Mathematische Formeln / Daten-Diagramme
Schritt 2: Engine-Wahl
Wählen Sie gemäß obigem Engine-Entscheidungsbaum. Chinesisch → xelatex ist die häufigste Wahl.
Schritt 3: .tex erzeugen
Wenden Sie die Layout-Prinzipien für Lesbarkeit an und folgen Sie der Standard-Ladereihenfolge-Vorlage in package-guide.
Schritt 4: Kompilierung
latexmk -norc -xelatex -latexoption=-no-shell-escape -interaction=nonstopmode -halt-on-error main.tex
Schritt 5: Log prüfen
Öffnen Sie main.log und suchen Sie nach Warning und Overfull/Underfull:
- Overfull hbox → Überlaufenden Text, Formeln oder Spaltenbreiten lokalisieren, die tatsächliche Seite prüfen und lokal reparieren; Problem nicht mit globalem
\sloppyüberdecken - Underfull hbox → Zeilen zu locker, normalerweise harmlos
- Font shape warning → Schriftartform nicht verfügbar, fontspec-Einstellungen prüfen
- Undefined references → Nochmal kompilieren (latexmk sollte das automatisch erledigt haben)
Reparieren Sie Warnungen, die die Auslieferung beeinträchtigen, z.B. fehlende Zeichen, unaufgelöste Verweise und sichtbare Überläufe; bei harmlosen oder durch Vorlagen eingeschränkten Warnungen begründen Sie die Entscheidung, ohne dass alle Warnungen auf Null gehen müssen.
Schritt 6: Tatsächliche Seitenprüfung und Auslieferung
Rendern oder öffnen Sie das tatsächliche PDF und prüfen Sie Seitenzahl, fehlende Zeichen, Beschnitt, Tabellen/Formeln/Code, Links, Lesezeichen und entsprechende Barrierefreiheitsanforderungen; prüfen Sie bei Bedarf Schriftarteinbettung und kopierbaren Text. Nach Reparaturen erneut kompilieren und betroffene Seiten nachprüfen. Wenn Rendern nicht möglich ist, deutlich als 'visuell nicht verifiziert' markieren; erfolgreiche Kompilierung nicht als Seitenabnahme verbuchen.
Ausgeben der tatsächlich erstellten und geprüften Dateien:
- PDF — Endgültiges Auslieferungsobjekt
- .tex-Quelldateien und benötigte lokale Ressourcen — Reproduzierbarkeit erhalten: tatsächlicher Befehl, Kompilierungsergebnis und nicht verifizierte Punkte.
evals/evals.json sind Evaluierungsdaten, keine Ausführungsanweisungen; nur beim Testen dieses Skills lesen.
Schnellcheck häufiger Fehler
Bei Problemen nach Typ nachschlagen:
| Problemtyp | Datei | Häufige Symptome |
|---|---|---|
| Kompilierungsfehler | common-pitfalls §Kompilierungsfehler Top 10 | Undefined control sequence, Missing $, hängt |
| Kodierung/Zeichen | common-pitfalls §Kodierung und Zeichen | Nicht-ASCII-Fehler, typografische Anführungszeichen, chinesische Interpunktion |
| Gleitobjekte | common-pitfalls §Gleitobjekte | Abbildungen/Tabellen landen am Dokumentende |
| Tabellen | common-pitfalls §Tabellen | Spaltenbreitenüberlauf, Seitenwechsel |
| Schriftarten | common-pitfalls §Schriftarten | Systemschrift nicht gefunden, CJK funktioniert nicht |
| Paketkonflikte | package-guide §Paketkonflikt-Matrix | Option clash, Funktionsstörungen |
| Ladereihenfolge | package-guide §Ladereihenfolge-Regeln | Lesezeichen durcheinander, Linkbrüche |
| Layout-Qualität | readability-principles | Dokument sieht 'amateurhaft' aus |
| Umgebungsprobleme | environment-check | Befehl nicht gefunden, Berechtigungsfehler |
| ctex-Schriftarten | environment-check §Häufige Umgebungsprobleme §6 | fontset 'fandol' is unavailable |
Schnelle Diagnose-Checkliste
Bei Kompilierungsfehlern in dieser Reihenfolge vorgehen:
- ✅ Richtige Engine verwendet? (Chinesisch → xelatex)
- ✅
latexmkverwendet? (Automatische Mehrfachkompilierung und biber) - ✅
-interaction=nonstopmodeverwendet? (Wird nicht im interaktiven Modus hängen) - ✅ Paket-Ladereihenfolge entspricht den tatsächlichen Einschränkungen von Dokumentklasse und Paketen? (Normalerweise hyperref später, cleveref danach)
- ✅ Alle
\begin{...}haben ein entsprechendes\end{...}? - ✅ Alle
{haben ein entsprechendes}? - ✅ Bildpfade korrekt? (
\graphicspathSuchpfade gesetzt) - ✅ Alle Pakete installiert? (
kpsewhich <pkg>.styprüfen) - ✅ Chinesisches Dokument verwendet ctex und korrektes
fontset? - ✅ Ende des Logs ansehen – LaTeX-Fehlermeldungen zeigen normalerweise auf die tatsächliche Problemzeile.