pdfLaTeX, XeLaTeX, LuaLaTeX, upLaTeX – welches sollten Sie verwenden? Diese Seite ist eine praktische Entscheidungshilfe für genau diese Frage. Es beginnt mit einer Empfehlung, erläutert dann die Faktoren, die die Wahl beeinflussen, und endet mit einer Vergleichstabelle und Hinweisen zum Motorwechsel.
Die schnelle Empfehlung
Bevor wir auf die Details eingehen, hier die ersten Tipps zum jeweiligen Zweck – für die meisten Menschen reichen diese aus. Erinnern Sie sich an die Seite „LaTeX-Formate“, dass jeder Name eine Engine (das Verarbeitungsprogramm) kombiniert mit einem Format (LaTeX, das Befehlssystem) ist. Nachfolgend geben wir sie durch den Befehl an, den Sie tatsächlich eingeben (pdflatex usw.).
- Westlicher Text (Englisch / Europäische Sprachen), der einfachste Weg, maximale Paketkompatibilität → pdfLaTeX (
pdflatex). Es ist der De-facto-Standard von LaTeX mit der meisten Dokumentation und dem Stand der Technik. - Sie möchten die OpenType-Schriftarten des Systems verwenden, Unicode/mehrsprachigen Text verarbeiten und die Dinge einfach halten → XeLaTeX (
xelatex).fontspecerleichtert nicht-japanisches mehrsprachiges Arbeiten. - Systemschriftarten und Unicode plus programmierbare, fein abgestimmte Steuerung und Zukunftssicherheit → LuaLaTeX (
lualatex). Sie können den Schriftsatz von Lua aus gestalten, und das Team von LaTeX betrachtet ihn als den zukünftigen Standard. - Japanisch → upLaTeX (
uplatex) ist die gängige, sichere Wahl; LuaLaTeX + luatexja ist die moderne, Unicode-native Route (aber langsamer). Die Klassejlreqfunktioniert mit beiden.
In einem Satz: pdfLaTeX für westlichen Text, XeLaTeX oder LuaLaTeX, wenn Sie Systemschriftarten oder Unicode benötigen, und upLaTeX oder LuaLaTeX für Japanisch. Für ein neues Projekt ohne besondere Anforderungen ist es sicher, mit pdfLaTeX (Western) oder upLaTeX (Japanisch) zu beginnen; Wenn Sie auf lange Sicht alles auf Unicode vereinheitlichen möchten, ist LuaLaTeX eine Wahl wert.
Fünf Kontrollen vor dem Schreiben
Die Auswahl der Engine ist sicherer, wenn Sie vom Einreichungsziel und den Quellmaterialien ausgehen und nicht vom persönlichen Geschmack. Eine Abschlussarbeit kann eine Laborvorlage erben, eine Zeitschriftenarbeit kann eine Klassendatei erfordern und ein technisches Handbuch kann von CI oder von einem Lesegerät zusammengestellt werden. Überprüfen Sie diese fünf Punkte, bevor Sie den ersten richtigen Absatz schreiben, und Sie vermeiden, später Dutzende Seiten noch einmal zu schreiben.
- Befolgen Sie zuerst das Übermittlungsziel: Wenn die Klassendatei oder die Anweisungen
uplatex,pdflatex,lualatexoder eine andere Engine heißen, verwenden Sie sie. - Entscheiden Sie, wie mit Japanisch umgegangen wird: Geerbte japanische Vorlagen verweisen oft auf upLaTeX; Ein neues Unicode/OpenType-Setup zeigt auf LuaLaTeX +
luatexja. - Überprüfen Sie die Bibliographie- und Indexierungstools: BibTeX vs. Biber und mendex vs. upmendex wirken sich auf die Einrichtung von
latexmkaus. - Schauen Sie sich Zahlen und Schriftarten an: Geerbte EPS oder PSTricks bevorzugen eine DVI-Route, während PDF/PNG-Figuren und OpenType-Schriftarten pdfLaTeX, LuaLaTeX oder XeLaTeX bevorzugen.
- Frieren Sie den Build ein: Schreiben Sie den Befehl in
.latexmkrcoder README, damit Mitarbeiter und CI denselben PDF reproduzieren können.
Die Faktoren, die die Wahl bestimmen
Für den Fall, dass die schnelle Antwort nicht passt – oder Sie wissen möchten, warum – finden Sie hier die Achsen einzeln. Die meisten davon beziehen sich auf wie die Engine mit Schriftarten und Zeichenkodierung umgeht.
Schriftarten. pdfTeX verwendet das traditionelle Schriftartenmodell von TeX: TFM (TeX Font Metric) plus Type1/PK Schriftarten. Es kann nicht einfach auf eine normale Schriftart verweisen, die auf Ihrem OS installiert ist. XeTeX und LuaTeX unterscheiden sich hier am deutlichsten – sie können die bereits auf dem System vorhandenen Schriftarten TrueType / OpenType direkt verwenden, benannt durch das Paket fontspec, z.B. \setmainfont{Times New Roman}. fontspec erfordert XeTeX oder LuaTeX; es funktioniert nicht unter pdfLaTeX.
Unicode-Eingabe. XeTeX und LuaTeX sind intern Unicode-nativ und nehmen die UTF-8-Quelle unverändert. Auch pdfTeX verwendet seit der LaTeX-Version 2018 UTF-8 als Standard-Eingabekodierung (daher wird \usepackage[utf8]{inputenc} nicht mehr benötigt) – aber intern wird es immer noch auf 8-Bit-Schriftartkodierungen (T1 und dergleichen) abgebildet, sodass welche Zeichen funktionieren, von Ihrem fontenc und Ihrer Schriftart abhängt, und Sie können keine beliebigen Unicode oder frei eingeben CJK direkt. Wenn es um die unkomplizierte Eingabe mehrsprachiger Texte und Symbole geht, haben XeTeX/LuaTeX die Nase vorn.
Paketkompatibilität. Dies ist die praktische Falle, die die Leute vermissen. Einige Pakete sind motorspezifisch. fontspec und unicode-math sind beispielsweise nur XeTeX/LuaTeX. Umgekehrt funktioniert pstricks unter den DVI-gerouteten pdfLaTeX und XeLaTeX, aber in der Regel nicht unter LuaLaTeX. Teile von microtype (unten) tendieren ebenfalls zu pdfTeX/LuaTeX. Die Inkompatibilität gilt auch in die andere Richtung: Quellcode, der nach einem alten Tutorial geschrieben wurde, kann möglicherweise nicht auf einer neueren Engine kompiliert werden. Die Grundregel besteht darin, vor allem zu prüfen, welche Engine Ihre Vorlage oder Journalklasse erfordert.
Geschwindigkeit. Der Unterschied ist real und spürbar. Die übliche Reihenfolge ist pdfTeX am schnellsten, XeTeX in der Mitte, LuaTeX am langsamsten. LuaTeX trägt den Aufwand für das Starten eines Lua VM und das Formen von Schriftarten über HarfBuzz und kann bei großen, schriftlastigen Dokumenten mehr als dreimal langsamer als pdfLaTeX laufen (bei einfachen Dokumenten ist die Lücke gering). Über die Hunderte von Neukompilierungen, die eine echte Schreibsitzung erfordert, summiert sich das.
Mikrotypografie. Der Zeichenvorsprung und die Schrifterweiterung des microtype-Pakets heben das Aussehen westlicher Texte sichtbar auf. Hier sind die Engine-Unterschiede groß: Protrusion funktioniert auf allen drei, aber die Schrifterweiterung wird nur auf pdfTeX und LuaTeX unterstützt, nicht auf XeTeX. Zwischenwortabstände und Kerning-Anpassungen sind nur für pdfTeX möglich, das Deaktivieren von Ligaturen funktioniert bei pdfTeX/LuaTeX und der Buchstabenabstand funktioniert bei allen drei. Für die allerbeste Western-Ausgabe ist pdfLaTeX oder LuaLaTeX die sichere Wahl.
Grafik-/PDF-Funktionen und Programmierbarkeit. Jede Engine importiert PNG, JPEG und PDF über graphicx, und \includegraphics verhält sich bei ihnen weitgehend gleich (pdfLaTeX konvertiert EPS automatisch). Die besondere Stärke von LuaTeX ist die Steuerung über Lua: Sie können sich in Satzdurchgänge einklinken oder externe Daten lesen, um Tabellen zu erstellen – Dinge, die in Makros umständlich sind. Es lässt sich auch gut mit dem modernen Paketstapel einschließlich fontspec und unicode-math kombinieren, weshalb es als „zukunftssicher“ bezeichnet wird.
Der Sonderfall von CJK / Japanisch. Die korrekte Einstellung von Japanisch – vertikale Schrift, Zeilenumbruchregeln (Kinsoku), Abstand zwischen japanischem und westlichem Text – erfordert spezielle Maschinen. Der langjährige Standard ist die Engine der pTeX-Familie (uplatex), die das japanische JFM (Schriftartenmetriken) verwendet und stabil und schnell ist. Die moderne Alternative, LuaLaTeX + luatexja, erledigt alles in Unicode und ermöglicht Ihnen die freie Verwendung von Systemschriftarten, aber wie das TeX-Wiki deutlich anmerkt, dauert die Schriftsetzung länger als XeLaTeX, upLaTeX oder pLaTeX (LuaJITTeX kauft ungefähr das 1,3-fache zurück). Beachten Sie auch, dass bei der direkten Auswahl der Schriftart CJK luatexja-fontspec und nicht einfach fontspec verwendet wird. Die jlreq-Klasse (basiert auf den JIS-Anforderungen für japanischen Schriftsatz) läuft unter platex, uplatex oder lualatex und erkennt die Engine automatisch. Den Rest deckt die spezielle japanische Seite ab.
Entscheiden Sie sich mit einer kleinen Testdatei
Durch das Ändern von Engines innerhalb einer Dissertation oder eines Einreichungsentwurfs können Schriftarten, Abbildungen, Literaturverzeichnis und Zeilenumbrüche auf einmal verschoben werden, wodurch die Ursache des Problems verschleiert wird. Erstellen Sie im Zweifelsfall eine einseitige Testdatei, bevor Sie mit dem eigentlichen Schreiben beginnen, und stellen Sie die gleichen Materialien mit den Kandidaten-Engines zusammen. Überprüfen Sie nicht nur, ob es kompiliert wird, sondern auch Warnungen im Protokoll, die Einbettung von Schriftarten in PDF, die Abbildungsverarbeitung und ob Mitarbeiter die Schritte reproduzieren können.
# 欧文の候補 / Western candidates
pdflatex engine-test.tex
lualatex engine-test.tex
xelatex engine-test.tex
# 日本語 upLaTeX の候補 / Japanese upLaTeX candidate
uplatex engine-test.tex
dvipdfmx engine-test.dvi- Wenn eine Zielvorlage vorhanden ist, testen Sie sie mit dieser Vorlage. Der Erfolg einer leeren Datei beweist nicht, dass die Übermittlungseinrichtung funktioniert.
- Fügen Sie eine Abbildung, eine angezeigte Gleichung und einen Bibliographieeintrag hinzu, damit die Probe das echte Manuskript im Miniaturformat darstellt.
- Sobald Sie die Engine ausgewählt haben, heften Sie sie an
.latexmkrcoder README und vermeiden Sie es, das Projekt beiläufig mit einer anderen Engine zu kompilieren. - Vergleichen Sie die PDFs; Wenn sich Zeilenumbrüche oder Schriftarten unterscheiden, belassen Sie den Grund für die Auswahl im Projekt.
Vergleichstabelle
Die vier Hauptoptionen, angeordnet entlang der entscheidenden Achsen. Der Befehlsname befindet sich in der Spalte ganz links. Für microtype werden Vorsprung und Ausdehnung separat angezeigt (ein Bindestrich bedeutet nicht unterstützt).
| Befehl | Unicode / Systemschriftarten | microtype | Geschwindigkeit | Hauptverwendung |
|---|---|---|---|---|
pdflatex | Nein (TFM/Type1; UTF-8 Eingabe ok, aber 8-Bit zugeordnet) | Vorsprung ja / Erweiterung ja | Am schnellsten | Westlicher Zahlungsausfall; Größte Kompatibilität |
xelatex | Ja (OpenType direkt über fontspec) | Überstand ja / Dehnung nein | Mitte | Einfache Mehrsprachigkeit / OpenType |
lualatex | Ja (fontspec, plus Lua-Steuerung) | Vorsprung ja / Erweiterung ja | Am langsamsten | Modern / Zukunft; Japanisch über luatexja |
uplatex | Japanisch über JFM (DVI-Route); UTF-8 Eingang | Begrenzt, nur westlicher Teil | Schnell | Japanische Papiere; stabiler Standard |
Betrachten Sie die Tabelle als Leitfaden, nicht als Urteil. pdfLaTeX, gepaart mit \usepackage[T1]{fontenc} und einem geeigneten westlichen Schriftartenpaket, stellt viele europäische Sprachen wunderbar dar; und selbst bei XeLaTeX gilt der microtype-Überstand immer noch. Lesen Sie es weniger als eine Binärform von „kann/kann nicht“ als vielmehr als Abwägung von Aufwand und Politur.
Hinweise zum Motorwechsel
Ein teilweiser Wechsel der Engine kann das Ergebnis selbst bei identischer Quelle verändern. Hier sind die Probleme, auf die die Leute tatsächlich stoßen.
Schriftart- und Codierungs-Setup-Änderungen. Die pdfLaTeX-Heftklammern \usepackage[utf8]{inputenc} und \usepackage[T1]{fontenc} sind bei XeLaTeX/LuaLaTeX unnötig und werden normalerweise weggelassen (sie lauten intern Unicode); Sie greifen stattdessen nach fontspec und \setmainfont. Das direkte Übertragen einer pdfLaTeX-Präambel auf XeLaTeX kann zu Warnungen oder schriftartbezogenen Fehlern führen.
% pdfLaTeX 向け(旧来)/ for pdfLaTeX (traditional)
% \usepackage[utf8]{inputenc}
% \usepackage[T1]{fontenc}
% XeLaTeX / LuaLaTeX 向け / for XeLaTeX / LuaLaTeX
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes} % OS / TeX のフォントを名前で指定microtype verhält sich anders. Das gleiche \usepackage{microtype} führt zu unterschiedlichen Effekten pro Engine – bei XeLaTeX ist die Schriftartenerweiterung beispielsweise einfach deaktiviert. Das unter pdfLaTeX optimierte Layout kann sich nach der Verschiebung auf XeLaTeX leicht verschieben (Zeilenlängen, Umbruchpositionen).
Änderungen der Paketverfügbarkeit. Einige Pakete funktionieren auf der Ziel-Engine nicht mehr (oder werden erst verfügbar). PSTricks-basierte Figuren werden nicht ausgeführt, wenn Sie sie nach LuaLaTeX verschieben (pstricks wird dort nicht unterstützt); Umgekehrt sind fontspec und unicode-math auf pdfLaTeX nicht verfügbar. Zeitschriften- und Verlagsvorlagen gehen normalerweise von einer bestimmten Engine aus, daher ist es der sichere Schritt, diese zuerst zu befolgen.
Für Japanisch ändert sich die gesamte Einrichtung der CJK-Schriftarten. upLaTeX (pTeX-Familie) und LuaLaTeX + luatexja unterscheiden sich sowohl darin, wie Sie japanische Schriftarten benennen als auch wie sie eingebettet sind. Erwarten Sie, dass eine Engine-Migration bei japanischen Dokumenten stärkere Auswirkungen haben wird als bei westlichen. Die konkreten Befehlsäquivalente finden Sie auf der Seite „Kompilierungsbefehle“.