La famille pTeX est une lignée de moteurs TeX conçus pour la composition japonaise. Cela commence avec le pTeX de ASCII Corporation, se poursuit avec le upTeX compatible avec Unicode, le e-pTeX / e-upTeX fusionné avec e-TeX et la modernisation pTeX-ng. Cette ligne a réalisé le travail que pdfTeX, orienté vers l'Europe, ne peut pas faire : écriture verticale, sauts de ligne kinsoku et métriques de polices japonaises.
Une vue d'ensemble en une seule ligne : le pipeline japonais moderne standard est uplatex (le moteur e-upTeX à l'intérieur) → dvipdfmx → PDF. La route ordinaire pTeX / upTeX / e-upTeX émet DVI, et non PDF — la différence décisive par rapport à pdfTeX et LuaTeX, qui émettent directement PDF. Les quatre moteurs se succèdent tour à tour.
pTeX (ASCII pTeX)
pTeX (éditant TeX, également « ASCII pTeX ») est le moteur que ASCII Corporation a construit pour rendre un TeX japonais adapté à l'édition commerciale. Plain TeX a été conçu pour définir les glyphes européens un octet à la fois et ne respecte pas entièrement les règles de composition japonaise. pTeX a tissé la machinerie de bas niveau nécessaire pour intégrer le japonais directement dans les composants internes de TeX.
Au cœur de celui-ci se trouve la notion de direction d'écriture. pTeX gère l'écriture verticale (\tate) et l'écriture horizontale (\yoko) au niveau du moteur, de sorte que le même corps de texte peut être défini dans les deux sens. Cela était indispensable pour l’édition japonaise – romans, journaux, manuels – où la verticalité est la norme.
L'espacement japonais et la composition des lignes sous-jacents sont JFM (Japanese Font Metric). Séparé du TFM européen, il enregistre la largeur, la hauteur et la profondeur des glyphes japonais ainsi que l'espace (colle/crénage) qui appartient entre les caractères. Avec lui, pTeX distingue automatiquement les formes pleine largeur et demi-largeur, insère les bons espaces autour de la ponctuation et fournit l'espace entre le texte japonais et occidental (l'espace entre les quarts de cadratin) où les deux scripts se rencontrent.
pTeX exécute également le kinsoku japonais (interdiction de saut de ligne) à l'intérieur du moteur : les caractères qui ne peuvent pas commencer une ligne (、。」 …) ou en terminer une (「( …) sont poussés vers l'avant ou vers l'arrière grâce à des ajustements fins de l'espacement. Ruby (lecture des gloses) lui-même est le travail des macros et des packages, mais le placement précis des caractères sur lequel il repose est fourni par pTeX. Aucune de ces règles n'existe dans le pdfTeX européen, c'est exactement pourquoi un moteur dédié est nécessaire.
Le point faible de pTeX était le codage des caractères. Son code interne était EUC-JP ou Shift_JIS (choisi via -kanji-internal), et l'entrée supposait des encodages hérités : JIS, Shift_JIS, EUC. Les kanji qu'il pouvait gérer étaient essentiellement liés à la plage JIS, donc les caractères en dehors de JIS et de CJK multilingues étaient gênants. Le format qui place LaTeX au-dessus du moteur pTeX est platex (pLaTeX), qui est depuis longtemps la norme pour les journaux japonais.
upTeX (Unicode pTeX)
upTeX (Unicode pTeX) est le moteur que Takuji Tanaka a développé depuis 2007, refondant pTeX autour de Unicode en interne. Ses entrées, sorties et traitements internes sont basés sur UTF-8 / Unicode, le libérant ainsi des limites d'encodage qui constituaient le plus gros casse-tête de pTeX.
En conséquence, il gère une gamme de kanji beaucoup plus large que la boîte JIS et peut définir plusieurs scripts CJK à la fois – non seulement en japonais mais aussi en chinois (simplifié et traditionnel) et coréen (Hangul). upTeX classe les caractères par type (kanji, kana, Hangul, symboles CJK, …) jusqu'à \kcatcode, donnant un contrôle précis sur la plage qui est traitée comme texte japonais.
En pratique, cette absence de problèmes d'encodage a été décisive. Le format qui place LaTeX sur upTeX est uplatex (upLaTeX), et de nombreux travaux japonais modernes y ont été transférés à partir de pLaTeX. La compatibilité avec pTeX est élevée, de sorte que la plupart des actifs de l'ère pLaTeX sont conservés presque inchangés.
e-pTeX / e-upTeX
e-pTeX est pTeX fusionné avec les extensions e-TeX ; e-upTeX est upTeX fusionné avec eux (e-upTeX est arrivé en 2008). e-TeX est une implémentation étendue de TeX qui ajoute des arithmétiques telles que \numexpr, \protected, les bases de la composition bidirectionnelle et un plus grand pool de registres. De nombreux packages LaTeX modernes assument ces fonctionnalités e-TeX, l'extension est donc également indispensable dans les configurations japonaises.
C'est le point pratique le plus important. Historiquement, platex fonctionnait sur e-pTeX et uplatex sur e-upTeX, mais depuis TeX Live 2023, pLaTeX est passé à une configuration basée sur e-upTeX tout en préservant la compatibilité. Ainsi, lorsque vous dites pLaTeX ou upLaTeX aujourd'hui, la base pratique n'est pas un pur pTeX/upTeX mais un moteur étendu e-TeX et compatible Unicode.
Aujourd'hui, la maintenance est assurée par la communauté de développement japonaise TeX (texjporg), qui maintient les moteurs, formats et JFM de la famille pTeX en réparation continue.
Un exemple minimal de upLaTeX
Voici un document japonais minimal pour upLaTeX. \documentclass{ujarticle} est la classe d'écriture horizontale de upLaTeX (utilisez utarticle pour la verticale ; la classe jlreq est un choix moderne et solide). Enregistrez la source sous UTF-8.
\documentclass{ujarticle}
\begin{document}
こんにちは、\LaTeX。日本語が美しく組めます。
数式も書けます: \[ E = mc^2 \]
\end{document}La compilation se déroule en deux étapes. Tout d'abord, uplatex traite le .tex en un DVI ; puis dvipdfmx convertit le DVI en PDF. La famille pTeX n'émet pas directement PDF, cette étape dvipdfmx est donc toujours requise (et uplatex est généralement exécuté deux fois afin que les références croisées et la table des matières soient résolues).
$ uplatex document.tex
$ dvipdfmx document.dvi
# => document.pdfpTeX-ng (nouvelle génération / pTeX asiatique)
pTeX-ng (« ng » = nouvelle génération) est un effort de réimplémentation relativement récent de Clerk Ma, également connu sous son nom de commande ApTeX (asiatique pTeX). Il vise à moderniser la lignée pTeX, en prenant en charge toutes les primitives e-TeX, pTeX et upTeX pour rester hautement compatible avec e-upTeX tout en étendant ses composants internes à Unicode (jusqu'à 0x10FFFF).
Ce qui ressort techniquement, c'est la sortie directe PDF. pTeX-ng intègre libdpx — une forme de bibliothèque de dvipdfmx — comme moteur de sortie, effectuant des sauts de page et une sortie de caractères via des appels directs aux fonctions C de libdpx, afin qu'il puisse produire PDF sans exécuter dvipdfmx séparément. Cela dit, pTeX-ng est plus expérimental et moins largement déployé que e-upTeX. Pour la composition japonaise quotidienne, la valeur par défaut reste e-upTeX (uplatex).
Les moteurs comparés
Aligner les quatre moteurs par encodage interne, s'ils incluent les extensions e-TeX et le format qui s'exécute sur chacun :
| Moteur | Encodage interne | e-TeX | Format par défaut |
|---|---|---|---|
pTeX | EUC / Shift_JIS | Non | pLaTeX (hérité) |
upTeX | Unicode (UTF-8) | Non | upLaTeX (hérité) |
e-pTeX | EUC / Shift_JIS | Oui | pLaTeX (ancienne base d'exécution) |
e-upTeX | Unicode (UTF-8) | Oui | Runtime de compatibilité upLaTeX (actuel) et pLaTeX |
pTeX-ng / ApTeX | Unicode (à 0x10FFFF) | Oui | compatible e-upTeX |
Dans les journaux TeX Live actuels, même platex peut commencer par une bannière telle que This is e-upTeX .... Cela ne veut pas dire que pLaTeX a disparu ; cela signifie que un seul runtime e-upTeX est utilisé pour exécuter soit un comportement compatible avec pLaTeX, soit le format upLaTeX. Lorsque vous signalez un problème, incluez le nom de la commande (platex / uplatex), la première ligne de bannière du journal et l'encodage du fichier source.
Où se situe-t-il parmi les routes japonaises
Il existe aujourd'hui trois grandes voies pour le japonais : la famille pTeX (uplatex → dvipdfmx, cette page) ; la route LuaTeX (LuaTeX avec LuaTeX-ja — PDF direct, polices système, extensibilité Lua) ; et la route XeTeX (XeTeX avec xeCJK — PDF direct, polices système).
- Sortie. La famille pTeX émet DVI (il faut que
dvipdfmxdevienne PDF). pdfTeX, LuaTeX et XeTeX émettent PDF directement. - Polices. La famille pTeX est traditionnellement basée sur JFM ; LuaTeX-ja et XeTeX vous permettent de nommer directement les polices OpenType du système.
- Vitesse et palmarès. La famille pTeX (e-upTeX) est rapide, mature et possède une longue expérience en matière de qualité de composition japonaise.
- Un nouveau départ. Si vous appréciez Unicode, les polices système et la pérennité, LuaLaTeX (LuaTeX-ja) est une alternative intéressante.
En résumé : pour les papiers japonais stables et éprouvés, e-upTeX (uplatex) → dvipdfmx ; pour les polices système et les machines modernes, LuaLaTeX — c'est le point de stabilisation actuel. Le moteur à choisir est expliqué en détail sur la page « Choisir un moteur ».
Un défaut de thèse sûr
Pour une nouvelle thèse ou un nouveau rapport en japonais, en l'absence d'un modèle requis, commencez à partir de source UTF-8, uplatex, dvipdfmx et jlreq ou de la classe fournie par l'université. Si un modèle existant suppose platex, ne le réécrivez pas uniquement pour la mode ; suivez la procédure de construction du modèle. La clé est de garder la classe en haut, les commandes de construction et les commandes de bibliographie/index sur le même itinéraire.
- Si aucun PDF n'apparaît, vérifiez d'abord si le
.dviexiste. Si c'est le cas, l'échec est du côté dedvipdfmx. - Mojibake doit être débogué en vérifiant la source de UTF-8, si la classe cible pLaTeX/upLaTeX et l'encodage de sauvegarde de l'éditeur.
- Si vous avez besoin d'un choix de police gratuit, ne forcez pas la route pTeX ; considérons LuaLaTeX avec LuaTeX-ja.