6
1

Die meisten LaTeX-Anfänger verwenden LaTeX einfach so wie es ihnen in der Voreinstellung vom Editor angeboten wird. Im Internet stoßen sie dann auf Begriffe wie LuaTeX, pdfTeX, XeTeX und dasselbe noch einmal mit La, also LaTeX, LuaLaTeX, pdfLaTeX, XeLaTeX, teilweise auch in anderer Groß-/Kleinschreibung. Was sind denn die Unterschiede zwischen diesen? Sind diese einfach austauschbar?

gefragt 26 Mai '14, 05:08

Bes's gravatar image

Bes
1911817
Akzeptiert: 100%

bearbeitet 14 Mai, 10:01

1

Ich habe unten eine Art Grundlagenantwort dazu gegeben. Ich schlage vor dass diejenigen, die gerne Detailunterschiede hervorheben wollen, dies in eigenen Antworten tun. Eventuell werde ich meine allgemeine Antwort noch wikifizieren.

(26 Mai '14, 07:35) Bes

Zunächst sei darauf hingewiesen, dass der Unterschied zwischen TeX und LaTeX bereits in »Was ist der Unterschied zwischen TeX und LaTeX?« erklärt wird. Darauf will ich hier deshalb nicht tiefer eingehen. In den Antworten zu besagter Frage wird auch erklärt, dass es unterschiedliche TeX-Maschinen (engl. engines) gibt. Verallgemeinernd wird jede Verwendung des LaTeX-Formats unabhängig von der verwendeten TeX-Maschine als LaTeX bezeichnet. Erst, wenn die Maschine eine Rolle spielt, spricht man auch von LuaLaTeX (oder luaLaTeX), pdfLaTeX (oder PDFLaTeX) oder XeLaTeX oder nennt direkt das verwendete Programm.

Was sind die unterschiedlichen TeX-Maschinen und Programme?

Die ursprüngliche TeX-Maschine ist TeX. Diese produziert immer eine Ausgabe als DVI-Datei. Um diese Ausgabe drucken oder an andere weitere geben zu können, muss man sie dann in der Regel mit weiteren Programmen umwandeln, beispielsweise mit dvips in eine PostScript-Datei (und diese dann beispielsweise mit pstopdf weiter in eine PDF-Datei) oder mit dvipdfmx direkt in eine PDF-Datei. Ursprünglich war das Programm latex schlicht die Verwendung des LaTeX-Formats mit der TeX-Maschine. Heute jedoch verbirgt sich auch hinter dem Programm latex die Verwendung des LaTeX-Formats mit der pdfTeX-Maschine. Dazu im übernächsten Absatz mehr.

Eine der ersten Erweiterungen der TeX-Maschine war e-TeX. e-TeX bietet einige Erweiterungen der Sprache TeX. Um diese Erweiterungen mit LaTeX verwenden zu können, benötigt man ein LaTeX-Format für die e-TeX-Maschine. Dieses war ursprünglich als das Programm elatex verfügbar. Seite rund zehn Jahren wird allerdings e-TeX bereits für das normale LaTeX empfohlen. Daher enthält normalerweise nicht nur latex, sondern alle nachfolgend genannten LaTeX auch e-TeX.

Die pdfTeX-Maschine bietet nicht nur direkte PDF-Ausgabe ohne den Umweg über die DVI-Datei. Sie bietet auch einige Spracherweiterungen, die nicht alle mit der PDF-Ausgabe zu tun haben. Statt der PDF-Ausgabe beherrscht es auch weiterhin die DVI-Ausgabe und dann auch einige der Spracherweiterungen. Daher ist das Programm latex heutzutage die Verwendung des LaTeX-Formats mit der pdfTeX-Maschine (ganz genau der pdfeTeX-Maschine also der Verschmelzung von pdfTeX und e-TeX), die auf DVI-Ausgabe konfiguriert ist. Das Programm pdflatex unterscheidet sich dadurch, dass die PDF-Ausgabe ausgewählt ist. Will man betonen, dass LaTeX mit der Maschine pdfTeX verwendet wird, spricht man von pdfLaTeX oder PDFLaTeX.

Die XeTeX-Maschine bietet ebenfalls eine PDF-Ausgabe. Intern erzeugt es dazu eine Art DVI-Datei, die jedoch deutlich erweitert ist. Daraus wird dann intern die PDF-Ausgabe erzeugt. XeTeX war die erste TeX-Maschine, die Systemfonts oder allgemein TrueType-, Type-1- und OpenType-Fonts direkt einbinden konnte. Außerdem bietet es native UTF8-Unterstützung. Wird das LaTeX-Format mit der Maschine XeTeX verwendet, spricht man von XeLaTeX. Das zugehörige Programm heißt dann xelatex.

Die LuaTeX-Maschine ist eine Weiterentwicklung der pdfTeX-Maschine. Diese wurde ebenfalls um native UTF8-Unterstützung und einen eingebauten, mit der TeX-Maschine verzahnten Lua-Interpreter erweitert. Dieser Lua-Interpreter ermöglicht es beispielsweise eine eigene Fontverwaltung zu schreiben. Diese existiert mit luaotfload auch für LaTeX, so dass auch LuaLaTeX Systemfonts oder allgemein Fonts in Formaten wie OpenType, TrueType oder Type-1 verwenden kann. LuaLaTeX ist also das LaTeX-Format mit der LuaTeX-Maschine. Das zugehörige Programm heißt 'lualatex'.

Was sind nun die Unterschiede in der Anwendung?

Wie bereits erwähnt, beherrschen LuaLaTeX und XeLaTeX direkt die Eingabe in UTF8. Daher darf man auch das Paket inputenc nicht mit diesen beiden verwenden. Stattdessen konfiguriert man seinen Editor einfach auf UTF8.

Sowohl pdfLaTeX, als auch LuaLaTeX als auch XeLaTeX erzeugen PDF-Dateien. Alle drei erlauben als Grafikformate für graphicx PNG, JPEG und PDF. Darüber hinaus unterstützt XeLaTeX auch EPS. Bei den anderen beiden benötigt man hingegen das Paket epstopdf für die Einbindung von EPS-Dateien. Bei TeX Live geschieht dies jedoch im Hintergrund.

Sowohl LuaLaTeX als auch XeLaTeX beherrschen die Verwendung von Zeichensätzen mit mehr als 256 Zeichen. Statt fontenc lädt der Anwender dazu das Paket fontspec (intern wird allerdings weiterhin fontenc mit dem dafür speziell entwickelten TU-codierung verwendet). Damit können dann OpenType- und Type1-Fonts ohne spezielle Fonteinbindung direkt geladen werden. Ob dabei Systemfonts oder Fonts in speziellen Verzeichnissen im TEXMF-Baum direkt über den Fontnamen oder über den Dateinamen des Fonts geladen werden können, hängt von der TeX-Distribution und davon ab, ob man LuaLaTeX oder XeLaTeX verwendet. In der Regel kann LuaLaTeX sowohl Systemfonts als auch Fonts im TEXMF-Baum über den Fontnamen findet, während XeLaTeX häufig etwas restriktiver ist. Die Installation von Fonts für pdfLaTeX ist dagegen ungleich komplizierter, wenn es noch kein spezielles Paket dafür gibt. Selbst mit Paket ist die Unterstützung bei pdfLaTeX oftmals eingeschränkt.

Eine Besonderheit stellt auch das Paket babel dar. Traditionell schaltet babel für die Unterstützung einiger Sprachen die Eingabecodierung bzw. die Fontcodierung um. Da mit LuaLaTeX und XeLaTeX aber weder inputenc noch fontenc verwendet werden, ist diese Umschaltung nicht ratsam. Daher wurde für XeLaTeX das Paket polyglossia geschaffen, das sich auf die Umschaltung von sprachabhängigen Begriffen und Trennmustern beschränkt. Allerdings arbeitete das Paket ursprünglich nicht mit LuaLaTeX zusammen. Inzwischen wird sowohl babel an die Verwendung mit LuaLaTeX und XeLaTeX angepasst als auch polyglossia an die Verwendung mit LuaLaTeX. Es ist schwer allgemein zu sagen, welchem Paket der Vorzug zu geben ist. Bei europäischen Sprachen, deren Schrift auf dem lateinischen Alphabet basiert, dürfte es am ehesten eine Frage der persönlichen Vorlieben sein.

Da weder XeTeX noch LuaTeX alle pdfTeX-Erweiterungen bietet, kann es bei der Verwendung einiger weniger Pakete zu Inkompatibilitäten kommen, wenn man von pdfLaTeX auf XeLaTeX oder LuaLaTeX umstellt. LuaTeX ist aber näher an pdfTeX. Da LuaTeX auch nicht alle XeTeX-Erweiterungen beherrscht ist aber die Verwendung von XeLaTeX auch nicht immer durch die Verwendung von LuaLaTeX zu ersetzen. Und natürlich gibt es auch Pakete, die aktiven Gebrauch von Lua-Engine in LuaTeX machen und daher weder mit pdfLaTeX noch mit XeLaTeX funktionieren.

Zu beachten ist auch, dass weder bei XeTeX noch bei LuaTeX 100% Kompatibilität bei der Ausgabe auf der Agenda stand. Ein Dokument, das bisher mit pdfLaTeX erzeugt wurde, kann also ggf. bei Verwendung von XeLaTeX oder LuaLaTeX anders umbrochen werden. Häufig wird sich das nur gering bemerkbar machen. Viele minimale Änderungen können sich allerdings auch zu gravierenden Änderungen aufschaukeln.

Inzwischen ist LuaTeX auch bei eine Versionsnummer größer 1 angelangt. Tatsächlich werden aber noch immer kleinere und größere Bugs gefunden und behoben. Selten werden dagegen noch Spracherweiterungen geändert. Es gibt auch noch immer hin und wieder neue Erweiterungen. Die meisten, teilweise auch inkompatible Änderungen gibt es allerdings im Lua-Teil. So dass normale LaTeX-Dokumente selten davon betroffen sind. Trotzdem sollte man sich für den produktiven Einsatz dessen bewusst sein. Seit LaTeX selbst aber ebenfalls wieder aktiv weiter entwickelt wird und auch dabei Inkompatibilitäten in Kauf genommen werden, dürften die Änderungen bei LuaLaTeX von eher geringerer Bedeutung sein. Selbst für die letzte große Änderung im Benutzerinterface von LuaTeX gibt es bei LaTeX mit luatex89 ein Paket, um notfalls Kompatibilität zu einer älteren Version herzustellen.

Eine ebenfalls relevante Verbesserung ist, dass LuaTeX mit dynamischer Speicherallokation arbeitet, während pdfTeX und XeTeX mit statischen Arrays arbeitet. Das bedeutet, dass LuaLaTeX der Speicher erst dann ausgeht, wenn das Betriebssystem keinen Speicher mehr bereitstellen kann. Dagegen muss man ggf. bei Verwendung von pdfLaTeX oder XeLaTeX die Größe interner Speicherarrays ändern. Dazu muss man teilweise eine Konfigurationsdatei ändern und dann das LaTeX-Format neu erzeugen, was sehr aufwändig ist. Für einige der Arrays gibt es auch Optionen, die man beim Aufruf von pdflatex bzw. xelatex mit angeben kann. Derartige Probleme treten beispielsweise bei Verwendung von pgfplots gerne auf, wenn man sehr Funktionen mit sehr vielen Stützstellen zeichnet.

Auch wer mit sehr vielen Verzeichnissen arbeitet, kann ggf. von einer Erweiterung von LuaTeX profitieren. Während nämlich pdfTeX und XeTeX nur jeweils 17 Dateien für das Lesen und Schreiben gleichzeitig öffnen kann, ist auch diese Grenze bei LuaLaTeX gefallen. Stattdessen gelten nur noch die Grenzen des Betriebssystems. Pakete, wie scrwfile, die mit einigen Tricks versuchen, die Grenze von gleichzeitig beschreibbaren Dateien nach oben zu verschieben, sind damit bei LuaLaTeX überflüssig. Man vermeidet so auch die Inkompatibilitäten, die durch die Verwendung solcher Pakete entstehen können.

In der Geschwindigkeit sind latex und pdflatex bisher deutlich vorn. Am langsamsten ist in der Regel lualatex. Wobei langsam natürlich relativ ist.

Permanenter link

beantwortet 26 Mai '14, 05:56

Bes's gravatar image

Bes
1911817

bearbeitet 14 Mai, 09:48

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×116
×19
×15
×14

Frage gestellt: 26 Mai '14, 05:08

Frage wurde angeschaut: 31,518 Mal

Zuletzt aktualisiert: 14 Mai, 09:48