Un fichier .tex est au final une suite d’octets, et le moteur doit les lire avec le bon encodage de caractères pour les interpréter correctement. Les codes de fin de ligne comptent aussi pour l’édition et les diffs. Le japonais a historiquement jonglé avec plusieurs encodages, ce qui provoque souvent des problèmes. La réponse courte : aujourd’hui, standardisez sur UTF-8 + LF. Cette page couvre les encodages, les fins de ligne et l’outil de conversion nkf.
Encodages — UTF-8 aujourd’hui
Un encodage de caractères est la règle qui associe octets et caractères. Le japonais a historiquement utilisé Shift_JIS (anciens Windows), EUC-JP (anciens Unix) et ISO-2022-JP (le « JIS code » du courrier électronique) ; aujourd’hui, UTF-8 d’Unicode est le standard universel. Les TeX Live et LaTeX récents sont en UTF-8 par défaut, donc enregistrer votre .tex en UTF-8 évite la plupart des corruptions. Une discordance d’encodage produit le texte illisible classique (*mojibake*).
| Encodage | Usage principal |
|---|---|
UTF-8 | Standard actuel (Unicode) ; seul choix pour les nouveaux travaux |
Shift_JIS | Anciens environnements Windows |
EUC-JP | Anciens environnements Unix |
ISO-2022-JP | Courriel, « JIS code » |
Avec (u)pLaTeX, vous pouvez indiquer explicitement l’encodage d’entrée avec -kanji=utf8 (voir « Commandes de compilation »).
Fins de ligne — LF / CRLF / CR
Les lignes se terminent par des octets de contrôle invisibles : LF (\n, Unix/macOS), CRLF (\r\n, Windows) et CR (\r, ancien Mac). LaTeX les tolère généralement tous, mais les fins de ligne mélangées dans un fichier ou une équipe rendent les diffs confus et perturbent certains outils. Standardisez sur LF et normalisez avec .gitattributes dans Git.
# .gitattributes — 改行を正規化 / normalize newlines
*.tex text eol=lfConvertir avec nkf
nkf (Network Kanji Filter) est l’outil standard pour détecter et convertir les encodages japonais et fins de ligne. Inspectez d’abord avec nkf -g file, puis convertissez en UTF-8 avec -w, Shift_JIS avec -s, EUC-JP avec -e ou ISO-2022-JP avec -j. Les fins de ligne utilisent -Lu/-Lw/-Lm, et --overwrite réécrit le fichier en place.
| Option | Effet |
|---|---|
-g | Détecter l’encodage et la fin de ligne actuels (sans conversion) |
-w | Convertir en UTF-8 (sans BOM) |
-s / -e / -j | Convertir en Shift_JIS / EUC-JP / ISO-2022-JP |
-Lu / -Lw / -Lm | Convertir les fins de ligne en LF / CRLF / CR |
--overwrite | Écraser le fichier d’entrée en place |
nkf -g old.tex # 文字コードを判定 / detect the encoding
nkf -w -Lu --overwrite old.tex # UTF-8 + LF に変換して上書き / to UTF-8 + LF, in placeRecommandations pratiques
- Standardiser tout, ancien comme nouveau, en UTF-8 + LF.
- Convertir en lot les anciennes sources Shift_JIS/EUC avec
nkf -w -Lu --overwrite *.tex. - Forcer l’entrée UTF-8 pour (u)pLaTeX avec
-kanji=utf8si nécessaire. - Normaliser les fins de ligne avec
.gitattributessous Git ; vérifier avecnkf -gen cas de doute.