pTeX-Familie

Die pTeX-Familie ist eine Reihe von TeX-Engines, die für den japanischen Schriftsatz entwickelt wurden. Es beginnt mit pTeX der ASCII Corporation, geht weiter über das Unicode-fähige upTeX, das mit e-TeX fusionierte e-pTeX / e-upTeX und das modernisierende pTeX-ng. Diese Zeile hat die Arbeit geleistet, die der europäisch ausgerichtete pdfTeX nicht leisten kann: vertikales Schreiben, Kinsoku-Zeilenumbruch und japanische Schriftmetriken.

Das Gesamtbild in einer Zeile: Die standardmäßige moderne japanische Pipeline ist uplatex (die e-upTeX-Engine im Inneren) → dvipdfmx → PDF. Die gewöhnliche Route pTeX / upTeX / e-upTeX sendet DVI, nicht PDF – der entscheidende Unterschied zu pdfTeX und LuaTeX, die PDF direkt aussenden. Nachfolgend folgen der Reihe nach die vier Motoren.

pTeX (ASCII pTeX)

pTeX (Veröffentlichung von TeX, auch „ASCII pTeX“) ist die Engine, die die ASCII Corporation entwickelt hat, um einen japanischen TeX für die kommerzielle Veröffentlichung geeignet zu machen. Plain TeX wurde entwickelt, um europäische Glyphen Byte für Byte zu setzen, und es fehlen völlig die Regeln des japanischen Schriftsatzes. pTeX hat die Low-Level-Maschinerie, die erforderlich ist, um Japanisch direkt in die Interna von TeX einzubinden, eingebunden.

Im Mittelpunkt steht dabei der Begriff der Schreibrichtung. pTeX verarbeitet vertikales Schreiben (\tate) und horizontales Schreiben (\yoko) auf Engine-Ebene, sodass in beiden Richtungen derselbe Textkörper festgelegt werden kann. Dies war für das japanische Verlagswesen – Romane, Zeitungen, Lehrbücher –, wo die vertikale Ausrichtung die Norm ist, unabdingbar.

Der japanische Abstand und die Zeilenkomposition basieren auf JFM (japanische Schriftmetrik). Getrennt vom europäischen TFM zeichnet es die Breite, Höhe und Tiefe japanischer Glyphen und den Abstand (Kleber/Kern) zwischen den Zeichen auf. Damit unterscheidet pTeX automatisch Formen voller und halber Breite, fügt die richtigen Lücken um die Zeichensetzung ein und stellt den Abstand zwischen japanischem und westlichem Text (die Viertelem-Lücke) bereit, an dem sich die beiden Schriften treffen.

pTeX führt auch das japanische Kinsoku (Zeilenumbruchverbot) innerhalb der Engine durch: Zeichen, die eine Zeile nicht beginnen (、。」 …) oder beenden dürfen (「( …), werden durch Feineinstellungen des Abstands nach vorne oder hinten verschoben. Ruby (Lesen von Glossen) selbst ist die Aufgabe von Makros und Paketen, aber die genaue Zeichenplatzierung, auf der es basiert, wird von pTeX bereitgestellt. Keine dieser Regeln existiert im europäischen pdfTeX, weshalb genau deshalb eine dedizierte Engine benötigt wird.

Der Schwachpunkt von pTeX war die Zeichenkodierung. Sein interner Code war EUC-JP oder Shift_JIS (ausgewählt über -kanji-internal), und die Eingabe nahm Legacy-Kodierungen an – JIS, Shift_JIS, EUC. Die Kanji, die es verarbeiten konnte, waren im Wesentlichen an den JIS-Bereich gebunden, daher waren Zeichen außerhalb von JIS und mehrsprachigen CJK umständlich. Das Format, das LaTeX auf die pTeX-Engine setzt, ist platex (pLaTeX), lange Zeit der Standard für japanische Papiere.

upTeX (Unicode pTeX)

upTeX (Unicode pTeX) ist die Engine, die Takuji Tanaka seit 2007 entwickelt hat und intern pTeX um Unicode herum umgestaltet. Seine Eingabe, Ausgabe und interne Verarbeitung basieren auf UTF-8 / Unicode und befreien es von den Codierungsbeschränkungen, die pTeX am meisten Kopfzerbrechen bereiteten.

Infolgedessen verarbeitet es einen weitaus größeren Kanji-Bereich als die JIS-Box und kann mehrere CJK-Skripte gleichzeitig festlegen – nicht nur Japanisch, sondern auch Chinesisch (vereinfacht und traditionell) und Koreanisch (Hangul). upTeX klassifiziert Zeichen nach Art (Kanji, Kana, Hangul, CJK-Symbole usw.) über \kcatcode und ermöglicht so eine genaue Kontrolle darüber, welcher Bereich als japanischer Text behandelt wird.

In der Praxis war diese Freiheit vom Codierungsaufwand entscheidend. Das Format, das LaTeX auf upTeX setzt, ist uplatex (upLaTeX), und viele moderne japanische Arbeiten wurden von pLaTeX dorthin verschoben. Die Kompatibilität mit pTeX ist hoch, sodass die meisten Assets aus der pLaTeX-Ära nahezu unverändert übernommen werden.

e-pTeX / e-upTeX

e-pTeX ist pTeX, zusammengeführt mit den e-TeX-Erweiterungen; e-upTeX ist upTeX, das mit ihnen verschmolzen ist (e-upTeX kam 2008 auf den Markt). e-TeX ist eine erweiterte TeX-Implementierung, die Arithmetik wie \numexpr, \protected, die Grundlage für bidirektionalen Schriftsatz und einen größeren Registerpool hinzufügt. Viele moderne LaTeX-Pakete setzen diese e-TeX-Funktionen voraus, sodass die Erweiterung auch in japanischen Setups unverzichtbar ist.

Dies ist der wichtigste praktische Punkt. Früher lief platex auf e-pTeX und uplatex auf e-upTeX, aber seit TeX Live 2023 ist pLaTeX auf ein e-upTeX-basiertes Setup umgestiegen, wobei die Kompatibilität gewahrt blieb. Wenn man heute also pLaTeX oder upLaTeX sagt, ist die praktische Grundlage nicht reines pTeX/upTeX, sondern eine e-TeX-erweiterte, Unicode-fähige Engine.

Die Wartung wird heute von der japanischen TeX-Entwicklungsgemeinschaft (texjporg) durchgeführt, die die Engines, Formate und JFMs der pTeX-Familie kontinuierlich repariert.

Ein minimales upLaTeX-Beispiel

Hier ist ein minimales japanisches Dokument für upLaTeX. \documentclass{ujarticle} ist die Klasse für horizontales Schreiben von upLaTeX (verwenden Sie utarticle für vertikales Schreiben; die Klasse jlreq ist eine starke moderne Wahl). Speichern Sie die Quelle als UTF-8.

latex
\documentclass{ujarticle}
\begin{document}
こんにちは、\LaTeX。日本語が美しく組めます。
数式も書けます: \[ E = mc^2 \]
\end{document}

Die Kompilierung erfolgt in zwei Schritten. Zuerst verarbeitet uplatex das .tex in ein DVI; dann wandelt dvipdfmx den DVI in einen PDF um. Die pTeX-Familie gibt PDF nicht direkt aus, daher ist dieser dvipdfmx-Schritt immer erforderlich (und uplatex wird normalerweise zweimal ausgeführt, damit Querverweise und das Inhaltsverzeichnis aufgelöst werden).

terminal
$ uplatex document.tex
$ dvipdfmx document.dvi
# => document.pdf

pTeX-ng (neue Generation / asiatisch pTeX)

pTeX-ng („ng“ = neue Generation) ist ein relativ neuer Neuimplementierungsversuch von Clerk Ma, auch bekannt unter dem Befehlsnamen ApTeX (asiatisch pTeX). Ziel ist es, die pTeX-Linie zu modernisieren und alle e-TeX-, pTeX- und upTeX-Primitive zu unterstützen, um hochkompatibel mit e-upTeX zu bleiben und gleichzeitig seine Interna auf Unicode (bis zu 0x10FFFF) zu erweitern.

Was technisch heraussticht, ist die direkte PDF-Ausgabe. pTeX-ng bettet libdpx – eine Bibliotheksform von dvipdfmx – als Ausgabe-Backend ein und führt Seitenumbrüche und Zeichenausgaben durch direkte Aufrufe der C-Funktionen von libdpx durch, sodass PDF erzeugt werden kann, ohne dvipdfmx separat auszuführen. Allerdings ist pTeX-ng experimenteller und weniger weit verbreitet als e-upTeX. Für den alltäglichen japanischen Schriftsatz bleibt die Standardeinstellung e-upTeX (uplatex).

Die Motoren im Vergleich

Anordnen der vier Engines nach interner Codierung, ob sie die e-TeX-Erweiterungen enthalten und das Format, das auf jeder Engine ausgeführt wird:

MotorInterne Kodierunge-TeXStandardformat
pTeXEUC / Shift_JISNeinpLaTeX (Legacy)
upTeXUnicode (UTF-8)NeinupLaTeX (Legacy)
e-pTeXEUC / Shift_JISJapLaTeX (ältere Laufzeitbasis)
e-upTeXUnicode (UTF-8)JaupLaTeX (aktuell) und pLaTeX Kompatibilitätslaufzeit
pTeX-ng / ApTeXUnicode (bis 0x10FFFF)Jae-upTeX kompatibel

In aktuellen TeX Live-Protokollen kann sogar platex mit einem Banner wie This is e-upTeX ... beginnen. Das bedeutet nicht, dass pLaTeX verschwunden ist; Dies bedeutet, dass eine einzelne e-upTeX-Laufzeitumgebung verwendet wird, um entweder pLaTeX-kompatibles Verhalten oder das upLaTeX-Format auszuführen. Geben Sie beim Melden eines Problems den Befehlsnamen (platex / uplatex), die erste Bannerzeile aus dem Protokoll und die Kodierung der Quelldatei an.

Wo es zwischen den japanischen Routen liegt

Heutzutage gibt es drei große Routen für Japaner: die pTeX-Familie (uplatexdvipdfmx, diese Seite); die LuaTeX-Route (LuaTeX mit LuaTeX-ja – direkte PDF, Systemschriftarten, Lua-Erweiterbarkeit); und die Route XeTeX (XeTeX mit xeCJK – direkt PDF, Systemschriftarten).

  • Ausgabe. Die pTeX-Familie gibt DVI aus (dvipdfmx muss zu PDF werden). pdfTeX, LuaTeX und XeTeX geben PDF direkt aus.
  • Schriftarten. Die pTeX-Familie basiert traditionell auf JFM; Mit LuaTeX-ja und XeTeX können Sie die OpenType-Schriftarten des Systems direkt benennen.
  • Geschwindigkeit und Erfolgsbilanz. Die pTeX-Familie (e-upTeX) ist schnell, ausgereift und kann auf eine lange Erfolgsgeschichte japanischer Schriftqualität zurückblicken.
  • Neustart. Wenn Sie Wert auf Unicode, Systemschriftarten und Zukunftssicherheit legen, ist LuaLaTeX (LuaTeX-ja) eine starke Alternative.

Zusammenfassend: für bewährte, stabile japanische Papiere, e-upTeX (uplatex) → dvipdfmx; für Systemschriftarten und moderne Maschinen, LuaLaTeX – das ist der aktuelle Abrechnungspunkt. Welchen Motor Sie wählen sollten, erfahren Sie im Detail auf der Seite „Motor auswählen“.

Eine sichere Thesenvorgabe

Für eine neue japanische Abschlussarbeit oder einen neuen japanischen Bericht beginnen Sie, wenn keine erforderliche Vorlage vorhanden ist, mit UTF-8-Quelle, uplatex, dvipdfmx und jlreq oder dem von der Universität bereitgestellten Kurs. Wenn eine vorhandene Vorlage platex annimmt, schreiben Sie sie nicht nur aus Modegründen neu. Befolgen Sie die Erstellungsprozedur der Vorlage. Der Schlüssel besteht darin, die Klasse an der Spitze zu halten, die Build-Befehle und Bibliographie-/Indexbefehle auf derselben Route zu halten.

  • Wenn kein PDF erscheint, prüfen Sie zunächst, ob .dvi vorhanden ist. Wenn dies der Fall ist, liegt der Fehler auf der dvipdfmx-Seite.
  • Mojibake sollte debuggt werden, indem die UTF-8-Quelle überprüft wird, ob die Klasse auf pLaTeX/upLaTeX abzielt und die Speichercodierung des Editors.
  • Wenn Sie eine freie Schriftartenauswahl benötigen, erzwingen Sie nicht die Route pTeX; Betrachten Sie LuaLaTeX mit LuaTeX-ja.