XeTeX ist eine TeX-Engine, die UTF-8 direkt liest und die bereits auf Ihrem System installierten Schriftarten verwendet. Ohne TFM- oder Map-File-Setup benennen Sie einfach eine Schriftart über das fontspec-Paket und OpenType-Schriftarten funktionieren einfach. Es wurde von Jonathan Kew geschrieben und normalerweise wird es als xelatex aufgerufen.
Was XeTeX ist
Im klassischen TeX und pdfTeX bedeutete die Verwendung einer Schriftart, eine TFM (TeX Font Metrics)-Dimensionsdatei vorzubereiten und diese über eine .map-Datei einer echten Schriftart zuzuordnen – ein kniffliger Tanz. Mit XeTeX entfällt dieser Aufwand: Sie können jede Schriftart, die das Betriebssystem kennt (OpenType / TrueType und AAT auf macOS) benennen und direkt verwenden. Die Eingabe wird standardmäßig als UTF-8 interpretiert, sodass Sie japanische, griechische oder akzentuierte Buchstaben als Literalzeichen schreiben können.
Jonathan Kew hat es ursprünglich für SIL International geschrieben, basierend auf der damaligen Mac-Satztechnologie AAT (Apple Advanced Typography); Die erste Veröffentlichung erfolgte im April 2004 nur für Mac OS X und wurde später zu einer plattformübergreifenden Engine, die auch auf Windows und Linux läuft. Intern enthält es den Erweiterungssatz e-TeX, sodass alle Funktionen vorhanden sind, die das moderne LaTeX voraussetzt.
Das Xe im Namen spielt auf das umgedrehte letzte X (das griechische χ) von TeX an – ein Wortspiel mit „der Umkehrung von TeX“. Im Englischen wird es informell als „zee-tech“ oder „zi-tech“ gelesen, obwohl die Aussprache unterschiedlich ist.
Ein Minimalbeispiel
Hier ist das kleinste Dokument, das mit xelatex kompiliert wird. Es lädt fontspec und legt die Hauptschriftart mit \setmainfont fest, wobei die Schriftart so benannt wird, wie das System sie kennt. Gebündelte Schriftarten wie Latin Modern oder TeX Gyre funktionieren ohne zusätzliche Installation, aber eine OS-Schriftart wie Hiragino Mincho ProN wird auf die gleiche Weise benannt.
\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\begin{document}
Hello, \XeTeX! こんにちは、世界。
\[ E = mc^2 \]
\end{document}Der entscheidende Punkt ist, dass Sie weder inputenc noch fontenc laden**. Die Eingabe „UTF-8“ und die Schriftarten „Unicode“ bilden die Basis, sodass die Zeichenkodierungsbeschwörungen, die pdfLaTeX benötigte, einfach verschwinden. Sie kompilieren mit einem einzigen xelatex document.tex (zweimal, wenn Sie Querverweise haben).
Schriftarten – fontspec ist der Star
In der Praxis erreichen Sie die Schriftleistung von XeTeX über das fontspec-Paket. Sie legen die Schriftarten „Body“, „Sans Serif“ und „Monospaced“ wie folgt fest und können für einen bestimmten Zweck auch eine neue Schriftfamilie erstellen.
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Heros}
\setmonofont{TeX Gyre Cursor}
\newfontfamily\headingfont{TeX Gyre Adventor}fontspec macht auch die in eine Schriftart integrierten OpenType-Funktionen verfügbar. Über seine Optionen können Sie unter anderem historische Ligaturen, Kapitälchen oder Altziffern einschalten. Funktionen, die die Schriftart nicht enthält, haben einfach keine Wirkung.
\setmainfont{TeX Gyre Pagella}[
Ligatures = {Common, Historic},
Numbers = OldStyle,
SmallCapsFeatures = {Letters = SmallCaps},
]
% 生の OpenType / Graphite タグを直接指定:
\newfontfamily\swashfont{EB Garamond}[RawFeature = {+swsh}]Für eine genauere Steuerung gibt es Optionen wie Renderer (wählen Sie den Shaper HarfBuzz / AAT / Graphite) und RawFeature (direkte Übergabe der Rohfunktions-Tags einer Schriftart). Um die Eingabekodierung während des Dokuments zu ändern, stellt die Engine die integrierte Funktion \XeTeXinputencoding bereit. Und wenn Sie eine Unicode-Mathe-Schriftart benötigen (STIX Two Math, Latin Modern Math, …), koppeln Sie XeTeX mit dem unicode-math-Paket.
Die Pipeline – XDV bis PDF
Während pdfTeX PDF direkt schreibt, arbeitet XeTeX in zwei Stufen. Die Engine gibt zunächst eine Zwischendatei XDV (erweitertes DVI; XeTeX Geräteunabhängig) aus, die der gebündelte xdvipdfmx-Treiber dann in PDF umwandelt. Von Ihrer Seite aus erledigt ein einzelner Lauf von xelatex alles, aber intern laufen diese beiden Phasen nacheinander ab (seit Version 0.997 ist xdvipdfmx der Standardtreiber auf allen Plattformen).
Dieses Design ist wichtig für \special, treiberabhängige Optionen und Grafikeinbindung. Da xdvipdfmx tatsächlich PDF erzeugt, verweisen Sie auf xetex (d. h. xdvipdfmx), wenn ein Paket wie graphicx einen expliziten Treiber benötigt. Die meisten Pakete erkennen XeTeX automatisch, sodass Sie selten darüber nachdenken müssen.
Denken Sie beim Debuggen an diese zweistufige Pipeline. Auch wenn Sie xelatex eingegeben haben, enden Fehler bei Bildern, beim Einbetten von Schriftarten oder bei PDF-Lesezeichen oft mit einer xdvipdfmx-Meldung im Protokoll. Lesen Sie .log, indem Sie die erste TeX-Fehlerzeile von der letzten Treiberzeile trennen; Dadurch erfahren Sie schnell, ob das Problem an der TeX-Syntax liegt oder ob der Treiber eine Grafik oder Schriftart nicht verarbeiten kann.
Mehrsprachige und komplexe Skripte
Ein Grund dafür, dass XeTeX so weit verbreitet ist, ist seine Stärke bei Rechts-nach-Links-Skripten (RTL) und komplexen Skripten. Das moderne XeTeX formt Glyphen mit HarfBuzz (übernommen in Version 0.9999 im Jahr 2013 und ersetzt die ältere ICU LayoutEngine), sodass arabische Verbindungs- und Ligatur-reiche Skripte korrekt eingestellt werden.
Zum Wechseln der Sprache verwenden Sie das polyglossia-Paket der Ära XeTeX / LuaTeX (der Ersatz für das klassische babel). Der Schriftsatz RTL wird vom Paket bidi übernommen, und polyglossia lädt bidi automatisch, wenn Sie Arabisch, Hebräisch und dergleichen anfordern. Chinesisch, Koreanisch und Japanisch (CJK) werden mit xeCJK behandelt – obwohl viele speziell für Japanisch immer noch LuaTeX-ja (luatexja) oder upLaTeX für vertikales Schreiben und die feineren Regeln des japanischen Schriftsatzes bevorzugen.
XeTeX versus LuaTeX
XeTeX und LuaTeX teilen sich die gleiche moderne Grundlage – Unicode-Eingabe plus Systemschriftarten – aber sie haben unterschiedliche Temperamente. XeTeX ist einfacher und schneller: Es passt zu „Ich möchte nur die OS-Schriftarten mit Unicode verwenden“ und die jahrelange Nutzung hat es stabil und ausgereift gemacht. LuaTeX hingegen bettet die Lua-Sprache in die Satz-Engine ein, sodass Sie ihr Verhalten durch Low-Level-Hooks bis ins kleinste Detail programmieren können.
Die Kehrseite ist, dass XeTeX Lua nicht ausführen kann und weniger Low-Level-Hooks hat. Die Entwicklung neuer Schriftartentechnologien und Satzmaschinen konzentriert sich tendenziell auf der LuaTeX-Seite. Als grobe Arbeitsteilung: XeTeX für Einfachheit und Stabilität, LuaTeX für Programmierbarkeit und Langlebigkeit.
| Aspekt | XeTeX | LuaTeX |
|---|---|---|
Unicode 入力 | Ja (UTF-8 Standard) | Ja (UTF-8 Standard) |
システムフォント | Direkt über fontspec | Direkt über fontspec |
シェーピング | HarfBuzz / AAT / Graphit | HarfBuzz (luaotfload) |
PDF 化 | XDV → xdvipdfmx (zwei Stufen) | Direkte Ausgabe |
スクリプト言語 | Keine | Eingebettet Lua |
性格 | Einfach, stabil, ausgereift | Programmierbar, entwicklungsfähig |
Wann sollte man nach XeTeX greifen?
- Verwenden Sie die Schriftarten, die bereits auf Ihrem System vorhanden sind. Benennen Sie eine Schriftart OpenType / TrueType und schon sind Sie fertig.
- Zxqph0xz wörtlich schreiben. Die Eingabe UTF-8 ist die Standardeinstellung; Es ist keine Kodierungseinrichtung erforderlich.
- Legen Sie mehrsprachigen / RTL-Text fest. polyglossia + bidi machen es stark für Arabisch, Hebräisch und mehr.
- Schnell und zuverlässig loslegen. Wenig Konfiguration und eine lange, stabile Erfolgsbilanz.
- Erwägen Sie LuaTeX, wenn Sie eine Anpassung auf Lua-Ebene benötigen, oder upLaTeX / luatexja für einen präzisen japanischen Schriftsatz.
Ein sichererer Arbeitsablauf bei der Schriftartenauswahl
XeLaTeX-Fehler entstehen normalerweise aus einem von zwei Gründen: Der Schriftname ist für OS nicht sichtbar, oder die Erwartungen an den japanischen Schriftsatz übersteigen das, was xeCJK verarbeiten soll. Kompilieren Sie zunächst das Minimaldokument mit gebündelten Schriftarten wie Latin Modern oder TeX Gyre und ersetzen Sie dann jeweils eine Schriftart. Wenn Sie japanisches vertikales Schreiben, gutes Kinsoku-Verhalten oder einen vom Herausgeber bereitgestellten Japanischkurs benötigen, testen Sie upLaTeX oder LuaLaTeX + LuaTeX-ja frühzeitig.
- Bei
font not found-Fehlern vermuten Sie die Auflösung des Schriftnamens OS vor TeX selbst. - Bei reiner PDF-Übermittlung prüfen Sie immer die Schriftarteinbettung.
- Für die Zusammenarbeit gehen Sie nicht davon aus, dass jeder OS die gleichen Schriftarten hat; Erwägen Sie gebündelte Schriftarten wie TeX Gyre.