TeX/LaTeX et le japonais

TeX a été conçu pour le texte occidental, donc la définition du japonais nécessite des extensions dédiées. L'histoire a laissé le choix entre plusieurs familles, mais la réponse courte est : pour les nouveaux travaux, utilisez LuaLaTeX, enregistrez votre source sous UTF-8 et utilisez la classe jlreq. Cette page explique pourquoi le japonais est spécial et quelle famille choisir.

Pourquoi le japonais a besoin d'un traitement spécial

Le TeX original ne pouvait traiter que 256 caractères par police (128 à ses débuts). Ajuster les milliers de caractères japonais dans des astuces telles que diviser une police en sous-polices de 256 glyphes – c'est exactement pourquoi les moteurs compatibles japonais ont été créés.

Les règles de composition diffèrent également. Le japonais a besoin de kinsoku — en conservant la ponctuation, les parenthèses fermantes et le point du milieu au début d'une ligne, et les parenthèses ouvrantes à la fin d'une ligne — ainsi qu'un écart mesuré entre le texte japonais et occidental (\xkanjiskip), des mesures sur toute la largeur et l'espacement de ponctuation, et même de l'écriture verticale. La famille pTeX gère tout cela en marquant chaque rupture candidate (autant de points de pénalité si ce personnage atterrit au début ou à la fin d'une ligne, et ainsi de suite) et en choisissant la disposition qui minimise la pénalité totale.

Les familles de moteurs japonais

Un support japonais sérieux a commencé avec pTeX, un moteur de l'ancienne société ASCII. Takuji Tanaka l'a ensuite étendu au japonais Unicode sous le nom de upTeX. Mettre LaTeX au-dessus de ceux-ci donne pLaTeX / upLaTeX, qui utilisent tous deux la route traditionnelle : produire un fichier DVI, puis le convertir en PDF avec dvipdfmx (aujourd'hui maintenu par la communauté de développement japonaise TeX).

Les moteurs modernes qui se sont répandus à l’échelle internationale peuvent désormais également gérer le japonais. Le principal est LuaLaTeX + luatexja, qui porte la composition de pTeX sur LuaLaTeX, utilise les scripts Lua et les polices OpenType/TrueType directement, et génère PDF sans DVI. XeLaTeX utilise xeCJK, et même pdfLaTeX peut définir le japonais de base avec le package CJK (CJKutf8).

MoteurCours / forfaitRemarques
upLaTeX / pLaTeXjsarticle, jlreqVia DVI ; écriture verticale ; traditionnel; souvent exigé par les revues
LuaLaTeXltjsarticle, jlreq + luatexjaDirect PDF, polices système, Unicode. Meilleure valeur par défaut pour les nouveaux travaux
XeLaTeXxeCJK + bxjsarticle, etc.Polices OpenType faciles
pdfLaTeXarticle + CJKutf8Minime ; envelopper le texte dans \begin{CJK}{UTF8}{min}

Cours et forfaits

Le choix le plus moderne est la classe jlreq, de Noriyuki Abe. Conçu autour des « Exigences pour la mise en page du texte japonais (JLReq) » du W3C, il n'a besoin que de \documentclass{jlreq} et fonctionne sur LuaLaTeX, pLaTeX ou upLaTeX (le moteur est détecté automatiquement, ou vous pouvez transmettre platex/uplatex/lualatex comme option de classe).

latex
\documentclass{jlreq}          % LuaLaTeX / upLaTeX / pLaTeX で動く
\begin{document}
こんにちは、\LaTeX! これは日本語の組版です。
\end{document}

Dans la famille traditionnelle, jsclasses (jsarticle, jsbook, pour pLaTeX/upLaTeX) est standard, et ltjsclasses (ltjsarticle, etc.) est son homologue LuaLaTeX. Pour modifier les polices japonaises sous LuaLaTeX, utilisez luatexja-fontspec.

latex
\usepackage{luatexja-fontspec}
\setmainjfont{Noto Serif CJK JP}   % 明朝
\setsansjfont{Noto Sans CJK JP}    % ゴシック

Codage des caractères

Enregistrez votre source sous UTF-8 — c'est la norme aujourd'hui. EUC-JP, Shift_JIS et ISO-2022-JP étaient courants dans le passé (convertis avec des outils comme nkf), mais s'en tenir à UTF-8 est désormais le choix sûr. upTeX et LuaTeX sont natifs de Unicode, et pLaTeX moderne suppose également l'entrée UTF-8. Attention aux fins de lignes mixtes (LF vs CRLF).

Lequel choisir

  • Un nouveau départ ? LuaLaTeX + jlreq (ou ltjsarticle). Polices système OpenType, PDF direct, Unicode fort.
  • Vous voulez de la vitesse ou possédez des actifs existants ? upLaTeX + jsarticle. Constructions rapides et longue expérience en japonais.
  • Si votre lieu impose pLaTeX, suivez-le. Certaines classes de journaux supposent pLaTeX.
  • Principalement anglais avec un peu de japonais ? XeLaTeX + xeCJK ou pdfLaTeX + CJK peuvent suffire.

Une configuration de démarrage sûre

Pour un nouveau document japonais, procurez-vous d'abord un PDF avec UTF-8 source, LuaLaTeX et jlreq. Optez pour upLaTeX ou pLaTeX uniquement lorsque vous avez une raison concrète : un lieu nécessite pLaTeX, vous avez hérité d'une ancienne source jsarticle ou vous avez besoin d'un contrôle détaillé de l'écriture verticale. Il ne s’agit pas de lutter contre le « Japonais n’imprimera pas » en même temps que vous essayez d’écrire le journal.

  • N'écrivez pas le corps du texte en japonais avec pdfLaTeX ; si vous voyez des erreurs ou du mojibake, vérifiez d'abord le compilateur.
  • Si vous utilisez ltjsarticle ou jlreq pour LuaLaTeX, assurez-vous que le compilateur est également LuaLaTeX.
  • Pour les travaux co-écrits, enregistrez le moteur, l'encodage et la classe sur une seule ligne du README.