# Kurzanleitung
Bei Umstieg müssen diverse Voraussetzungen beachtet werden. Das allgemeinste Vorgehen, welches in der Regel auch funktioniert ist
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
zu ersetzen durch
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
Dies ist natürlich viel zu kurz gegriffen, ist aber ein guter Start um von dort aus sein Dokument weiter umzustellen.
# Text
*Verwandte Fragen:*
- [Wie mache ich eine True Type Schrift in LaTeX verfügbar?](http://texwelt.de/wissen/fragen/5846/wie-mache-ich-eine-true-type-schrift-in-latex-verfugbar)
Wichtig ist, dass auf jeden Fall die Pakete [`inputenc`](http://texdoc.net/texmf-dist/doc/latex/base/inputenc.pdf) und [`fontenc`](http://texdoc.net/texmf-dist/doc/latex/base/encguide.pdf) aus dem Dokument getilgt werden, da sie gänzlich inkompatibel mit den Maschinen XeLaTeX und LuaLaTeX sind.
Schriften, die für LaTeX und pdfLaTeX gemacht wurden, wie z.B. [`lmodern`](http://texdoc.net/texmf-dist/doc/fonts/lm/lm-info.pdf) sind zwar weiterhin „benutzbar“, dafür funktionieren viele Sachen aber nicht mehr, wie zum Beispiel die Eingabe von Umlauten, daher sind auch diese Pakete zu meiden und durch das Paket [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) zu erstzen.
[`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) selbst lädt standardmäßig die Schrift `Latin Modern` in den Ausführungen `Latin Modern Roman`, `Latin Modern Sans` und `Latin Modern Mono`. Die Auswahl der Schriften findet über die Kommandos `\setmainfont`, `\setsansfont` und `setmonofont` statt. Ein andere mögliche Kombination wäre
\setmainfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont{Droid Sans Mono}
Nun kommen wir zu den Besonderheiten:
# Mathematik
*Verwandte Fragen:*
- Keine
Die Mathematikschrift bleibt bei dem obigen Vorgehen unangetastet bis auf ein paar kleine Optimierungen durch [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf). Die Optimierungen sollte man im Hinterkopf behalten, für den Fall, dass in der Mathematik mal etwas komisch ist. Möchte man zum Beispiel eine zu Linux Libertine O passende Mathematikschrift verwenden, so hat man dies unter (pdf)LaTeX einfach mit [`\usepackage[libertine]{newtxmath}`](http://texdoc.net/texmf-dist/doc/fonts/newtx/newtxdoc.pdf) gemacht. Das geht nun nicht mehr, da [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) dazwischen funkt. Dies lässt sich durch die Option `no-math` verhindern.
\usepackage[libertine]{newtxmath}
\usepackage[no-math]{fontspec}
\setmainfont{Linux Libertine O}
In wenigen Fällen kommt man sogar in den Luxus, dass eine OpenType-Mathematikschrift für die aktuelle Brotschrift existiert. Ein solcher Fall wäre TeX Gyre Pagella, für die die passende TeX Gyre Pagella Math existiert. Solche OpenType-Mathematikschriften lädt man mit dem Paket [`unicode-math`](http://texdoc.net/texmf-dist/doc/latex/unicode-math/unicode-math.pdf). Das Laden von [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) kann man sich dann sparen, da [`unicode-math`](http://texdoc.net/texmf-dist/doc/latex/unicode-math/unicode-math.pdf) dieses bereit mit lädt.
\usepackage{unicode-math}% lädt fontspec
\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
# Silbentrennung
*Verwandte Fragen:*
- ["! Undefined control sequence" nach Umstellung von babel zu polyglossia](http://texwelt.de/wissen/fragen/8508/undefined-control-sequence-nach-umstellung-von-babel-zu-polyglossia)
Unter (pdf)LaTeX verwenden die meisten Leute das [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf)-Paket um die Trennmuster für ihre Sprache zu laden und multilinguale Dokumente zu setzen. Mittlerweile wurde [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf) auch auf Xe/LuaLaTeX portiert, als dies jedoch noch nicht der Fall war wurde das Paket [`polyglossia`](http://texdoc.net/texmf-dist/doc/latex/polyglossia/polyglossia.pdf) entwickelt.
*Es macht prinzipiell keinen Unterschied ob man [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf) oder [`polyglossia`](http://texdoc.net/texmf-dist/doc/latex/polyglossia/polyglossia.pdf) verwendet, da Silbentrennung im TeX-Kern stattfindet und der für beide Pakete der gleiche ist.*
Ich finde jedoch, dass sich [`polyglossia`](http://texdoc.net/texmf-dist/doc/latex/polyglossia/polyglossia.pdf) durch seine Syntax besser zu [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) und [`unicode-math`](http://texdoc.net/texmf-dist/doc/latex/unicode-math/unicode-math.pdf) passt. Während man unter [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf)
\usepackage[main=ngerman,british]{babel}
verwendet um ein Dokument in Deutsch mit englischen Einschüben zu verfassen würde man mit [`polyglossia`](http://texdoc.net/texmf-dist/doc/latex/polyglossia/polyglossia.pdf)
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{german}
\setotherlanguage[variant=british]{english}
benutzen.
Sollte man noch eines der archaischen Pakete [`german` oder `ngerman`](http://texdoc.net/texmf-dist/doc/generic/german/gerdoc.pdf) verwenden, dann ist jetzt die Zeit umzusteigen.
# XeLaTeX
*Verwandte Fragen:*
- [Was ist der Unterschied zwischen `latex`, `pdflatex`, `lualatex` und `xelatex`?](http://texwelt.de/wissen/fragen/5868/was-ist-der-unterschied-zwischen-latex-pdflatex-lualatex-und-xelatex)
Liegt für eine Schrift weder eine (pdf)LaTeX- noch eine OpenType-Mathematikschrift vor, so kann man sich unter XeLaTeX mit dem Paket [`mathspec`](http://texdoc.net/texmf-dist/doc/xelatex/mathspec/mathspec.pdf) behelfen (Dieses lädt ebenfalls [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf)). Dies ist zum Beispiel für EB Garamond der Fall.
\usepackage{mathspec}% lädt fontspec
\setmainfont{EB Garamond}
\setmathfont(Latin,Digits,Greek){EB Garamond}
\setmathrm{EB Garamond}
*Beachte:* Die Schriften, die mittels [`mathspec`](http://texdoc.net/texmf-dist/doc/xelatex/mathspec/mathspec.pdf) geladen werden sind keine Mathematikschriften und daher auch nicht für die Verwendung im Mathematikmodus angepasst. Falsche Abstände und fehlende Symbole, bzw. Symbole aus fremden Schriftarten sind die Folge. Das Zeichen `"` kann verwendet werden um der falschen Abstände Herr zu werden. Man verwendet es wie folgt
$"f(x)$
Es sagt: Das folgende Zeichen braucht links und rechts mehr Abstand, weil es aus seiner Bounding Box herausragt.
Weitere Vorsicht muss man unter XeLaTeX dem Paket [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) widmen. Die Option `expansion` kann hier nicht verwendet werden, weil die entsprechenden Primitven in der Maschine fehlen. Optischer Randausgleich mit `protrusion` funktioniert aber. Alle anderen Funktionen, wie Tracking, Kerning und Spacing können über [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) eingestellt werden.
XeLaTeX erzeugt intern eine xdv-Datei (e**x**tended **d**v**i**), ähnlich wie es von LaTeX erzeugt wird, welches dann mit `dvipdfmx` in ein PDF umgewandelt wird. All dies geschieht unter der Haube, das heißt der Anwender bekommt davon nichts mit. Der Vorteil hierbei ist, dass `dvipdfmx` einen Postscript-Interpreter besitzt und man somit [`pstricks`](http://texdoc.net/texmf-dist/doc/generic/pstricks/pstricks-doc.pdf)-Code, wie z.B. das zweite Beispiel direkt übersetzen kann. Allerdings hat dieser Umweg über den dvi-Modus auch Nachteile. Shadings in [TikZ](http://texdoc.net/texmf-dist/doc/generic/pgf/pgfmanual.pdf) funktionieren zum Beispiel nicht zuverlässig.
# LuaLaTeX
*Verwandte Fragen:*
- [Was ist LuaTeX?](http://texwelt.de/wissen/fragen/70/was-ist-luatex)
- [Was ist der Unterschied zwischen `latex`, `pdflatex`, `lualatex` und `xelatex`?](http://texwelt.de/wissen/fragen/5868/was-ist-der-unterschied-zwischen-latex-pdflatex-lualatex-und-xelatex)
LuaLaTeX ist pdfLaTeX erweitert um UTF-8-Eingabe und einen Interpreter für die Lua-Skriptsprache. Es gibt viele sehr nützliche Pakete, die auf Lua aufbauen, wie z.B. [`selnolig`](http://texdoc.net/texmf-dist/doc/lualatex/selnolig/selnolig.pdf), [`impnattypo`](http://texdoc.net/texmf-dist/doc/latex/impnattypo/impnattypo.pdf), oder die [TikZ `graphdrawing`-Bibliothek](http://texdoc.net/texmf-dist/doc/generic/pgf/pgfmanual.pdf).
Da LuaLaTeX eine Erweiterung von pdfLaTeX ist funktioniert hier die Benutzung von [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) (fast) ohne Probleme. `protrusion` und `expansion` funktionieren, aber Tracking, Spacing und Kerning werden von [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) verwaltet.
Ein Dokument mit [`pstricks`](http://texdoc.net/texmf-dist/doc/generic/pstricks/pstricks-doc.pdf)-Code lässt sich im Standard-Modus *nicht* mit LuaLaTeX übersetzen. Man kann den Umweg über den dvi-Modus machen, dann funktioniert aber [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) nicht mehr, deshalb wird dies hier nicht weiter erklärt.
# Bemerkungen
Meiner Erfahrung nach ist LuaLaTeX stabiler als XeLaTeX. Allerdings ist LuaLaTeX langsamer als XeLaTeX (teils viel langsamer, z.B. mit [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) und aktivierter `expansion`). XeLaTeX punktet zwar bei bidirektionaler Typografie (Arabisch, Persisch), dafür funktioniert [TikZ](http://texdoc.net/texmf-dist/doc/generic/pgf/pgfmanual.pdf) nicht immer richtig.
Derzeit muss man abwägen, welche Verluste man in Kauf nimmt. Der Umstieg, oder zumindest die Beschäftigung damit, lohnt sich aber auf jeden Fall, da LaTeX3 speziell für die neuen Maschinen entwickelt wird. Für die Benutzung der Programmierschnittstelle [`expl3`](http://texdoc.net/texmf-dist/doc/latex/l3kernel/interface3.pdf) von LaTeX3 ist eine UTF-8-Unterstützung derzeit noch nicht Pflicht.
# Gratwanderung: Kompatibilität
Es gibt die Pakete [`ifluatex`](http://texdoc.net/texmf-dist/doc/latex/oberdiek/ifluatex.pdf) und [`ifxetex`](http://texdoc.net/texmf-dist/doc/generic/ifxetex/ifxetex.pdf), die es erlauben während des LaTeX-Laufs abzufragen unter welcher Maschine man gerade läuft (Für TeX-Hacker: Die Pakete gehen auch unter plain TeX). Damit könnte man Konstrukte bauen, die die Schriftauswahl je nach Maschine abändern, sodass das Dokument sowohl mit pdfLaTeX, (pdf)LaTeX, als auch Xe/LuaLaTeX setzbar ist (nicht mit LaTeX im dvi-Modus!).
ist.
Im folgenden Dokument wird verschachtelt abgefragt, welche Maschine zuständig ist.
\documentclass{article}
\usepackage{ifxetex,ifluatex}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{microtype}
\ifxetex
\usepackage{unicode-math}% lädt fontspec
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern \setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
\usepackage[protrusion]{microtype}
\usepackage{polyglossia}
\setmainlanguage{german}
\else
\ifluatex
\usepackage{unicode-math}% lädt fontspec
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern \setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
\usepackage[expansion,protrusion]{microtype}
\usepackage{polyglossia}
\setmainlanguage{german}
\usepackage{selnolig}
\else
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[expansion,protrusion]{microtype}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}
\usepackage{tgpagella}
\fi
\fi
\begin{document}
\end{document}
Unabhängig von der Maschine werden die Pakete [`fontenc`](http://texdoc.net/texmf-dist/doc/latex/base/encguide.pdf), [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf) und [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) geladen. Dies ist möglich, da [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf) das von [`fontenc`](http://texdoc.net/texmf-dist/doc/latex/base/encguide.pdf) eingestellte Encoding überschreibt. Das [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf)-Paket ist so schlau die Maschine selbst zu überprüfen (bei manueller Featureauswahl muss man es eventuell in die Maschinenabfrage mit einbringen). Da [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf) mittlerweile auch mit Xe/LuaLaTeX kompatibel ist, kann es auch für Sprachauswahl verwendet werden.
Im Falle von XeLaTeX wird [`unicode-math`](http://texdoc.net/texmf-dist/doc/latex/unicode-math/unicode-math.pdf) geladen (welches wiederum [`fontspec`](http://texdoc.net/texmf-dist/doc/latex/fontspec/fontspec.pdf)) und die Latin Modern [TeX Gyre Pagella](http://texdoc.net/texmf-dist/doc/fonts/tex-gyre/qpl-info.pdf) Brotschrift und Mathematikschrift werden ausgewählt. [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) wird mit der XeLaTeX-kompatiblen `protrusion`-Option geladen. Für die Silbentrennung wird [`polyglossia`](http://texdoc.net/texmf-dist/doc/latex/polyglossia/polyglossia.pdf) geladen und `german` als Standardsprache gewählt.
ausgewählt.
Für LuaLaTeX geschieht die gleiche Schrift- und Silbentrennungsauswahl Schriftauswahl wie für XeLaTeX, allerdings wird das [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf)-Paket mit der zusätzlichen `expansion`-Option geladen. XeLaTeX. Außerdem kommt das LuaLaTeX-exklusive [`selnolig`](http://texdoc.net/texmf-dist/doc/lualatex/selnolig/selnolig.pdf) zur kontextsensitiven Unterdrückung von Ligaturen zum Einsatz.
Wenn weder Xe- noch LuaLaTeX erkannt wurde müssen wir uns wohl unter pdfLaTeX befinden (andere Exoten werden nicht behandelt), denn werden dann wird ganz klassisch [`inputenc`](http://texdoc.net/texmf-dist/doc/latex/base/inputenc.pdf) und [`fontenc`](http://texdoc.net/texmf-dist/doc/latex/base/encguide.pdf) geladen. Die Schrift Mathematikschrift kommt aus [`lmodern`](http://texdoc.net/texmf-dist/doc/fonts/lm/lm-info.pdf), [`microtype`](http://texdoc.net/texmf-dist/doc/latex/microtype/microtype.pdf) macht `expansion` und `protrusion` und [`babel`](http://texdoc.net/texmf-dist/doc/latex/babel/babel.pdf) kümmert sich um Silbentrennung.
[`mathpazo`](http://texdoc.net/texmf-dist/doc/latex/psnfss/psnfss2e.pdf), die Brotschrift aus [`tgpagella`](http://texdoc.net/texmf-dist/doc/fonts/tex-gyre/qpl-info.pdf).
*Achtung:* Dieser Ansatz sieht verlockend aus, birgt jedoch auch wieder Probleme. So wird zum Beispiel das Dokument je nach Maschine anders aussehen: Andere Zeilen- und Seitenumbrüche, über- oder untervolle Boxen an verschiedenen Stellen, Darstellungsprobleme mit TikZ, etc. Daher ist diese Methode nur dann zu empfehlen, wenn Kompatibilität an oberster Stelle vor Satzqualität steht. Da dies jedoch äußerst selten der Fall ist bietet es sich an, das Dokument wirklich nur für die Verwendung mit einer Maschine (evtl. zwei im Fall von Xe- und LuaLaTeX) zu optimieren.