Codificación y saltos de línea

Un archivo .tex es, en última instancia, una secuencia de bytes, y el motor debe leerlos con la codificación de caracteres correcta para interpretarlos bien. Los códigos de salto de línea también importan para editar y hacer diffs. El japonés ha usado históricamente varias codificaciones, y ahí es donde mucha gente tropieza. Resumen: hoy conviene estandarizar en UTF-8 + LF. Esta página cubre codificaciones, saltos de línea y la herramienta de conversión nkf.

Codificaciones — UTF-8 hoy

Una codificación de caracteres es la regla que asigna bytes a caracteres. El japonés ha usado históricamente Shift_JIS (Windows antiguo), EUC-JP (Unix antiguo) e ISO-2022-JP (el “JIS code” del correo); hoy UTF-8 de Unicode es el estándar universal. TeX Live y LaTeX recientes usan UTF-8 por defecto, así que guardar tu .tex como UTF-8 evita la mayoría de textos corruptos. Una discrepancia de codificación produce el clásico texto ilegible (*mojibake*).

CodificaciónDónde se usaba
UTF-8Estándar actual (Unicode); única opción para trabajos nuevos
Shift_JISEntornos Windows antiguos
EUC-JPEntornos Unix antiguos
ISO-2022-JPCorreo, “JIS code”

Con (u)pLaTeX puedes indicar explícitamente la codificación de entrada con -kanji=utf8 (ver “Comandos de compilación”).

Saltos de línea — LF / CRLF / CR

Las líneas terminan con bytes de control invisibles: LF (\n, Unix/macOS), CRLF (\r\n, Windows) y CR (\r, Mac clásico). LaTeX tolera todos en general, pero los saltos mezclados dentro de un archivo o equipo ensucian los diffs y pueden romper algunas herramientas. Estandariza en LF y normaliza con .gitattributes en Git.

terminal
# .gitattributes — 改行を正規化 / normalize newlines
*.tex text eol=lf

Convertir con nkf

nkf (Network Kanji Filter) es la herramienta estándar para detectar y convertir codificaciones japonesas y saltos de línea. Primero inspecciona con nkf -g file; luego convierte a UTF-8 con -w, a Shift_JIS con -s, a EUC-JP con -e o a ISO-2022-JP con -j. Los saltos usan -Lu/-Lw/-Lm, y --overwrite reescribe el archivo en sitio.

OpciónQué hace
-gDetecta codificación y salto de línea actuales (sin convertir)
-wConvertir a UTF-8 (sin BOM)
-s / -e / -jConvertir a Shift_JIS / EUC-JP / ISO-2022-JP
-Lu / -Lw / -LmConvertir saltos de línea a LF / CRLF / CR
--overwriteSobrescribir el archivo de entrada
terminal
nkf -g old.tex                      # 文字コードを判定 / detect the encoding
nkf -w -Lu --overwrite old.tex      # UTF-8 + LF に変換して上書き / to UTF-8 + LF, in place
  • Estandariza todo en UTF-8 + LF, nuevo o antiguo.
  • Convierte en lote fuentes antiguas Shift_JIS/EUC con nkf -w -Lu --overwrite *.tex.
  • Fuerza entrada UTF-8 para (u)pLaTeX con -kanji=utf8 cuando haga falta.
  • Normaliza saltos de línea con .gitattributes en Git; comprueba con nkf -g si dudas.