TeX/LaTeX 与日语

TeX 是为西方文本而构建的,因此设置日语需要专门的扩展。历史留下了几个系列可供选择,但简短的答案是:对于新工作,使用 LuaLaTeX,将源保存为 UTF-8,并使用 jlreq 类。 此页面解释了为什么日语很特别以及选择哪个系列。

为什么日语需要特殊处理

最初的 TeX 每种字体只能处理 256 个字符(最早是 128 个)。将数千个日语字符装入意味着需要一些技巧,例如将字体拆分为 256 个字形子字体 - 这正是创建支持日语的引擎的原因。

排版规则也不同。日语需要避头尾——保留标点符号、右括号和中间点远离行首,左括号远离行尾——加上日语和西方文本之间的测量间隙(\xkanjiskip)、全角度量和标点符号间距,甚至垂直书写。 pTeX 系列通过对每个候选中断进行评分(如果该角色落在行首或行尾,则会获得很多罚分,等等)并选择使总罚分最小化的布局来处理所有这些问题。

日本发动机系列

认真的日本支持始于 pTeX,这是前 ASCII 公司的引擎。 Takuji Tanaka 随后将其扩展为 Unicode 日语,即 upTeX。将 LaTeX 放在上面会得到 pLaTeX / upLaTeX,它们都使用传统路线 - 生成 DVI 文件,然后使用 dvipdfmx 将其转换为 PDF(目前由日本 TeX 开发社区维护)。

风靡全球的现代发动机现在也可以处理日本发动机了。主要的是LuaLaTeX + luatexja,它将pTeX的排版移植到LuaLaTeX,直接使用Lua脚本和OpenType/TrueType字体,输出PDF而不需要DVI。 XeLaTeX 使用 xeCJK,甚至 pdfLaTeX 也可以使用 CJK (CJKutf8) 包设置基本日语。

引擎类/包笔记
upLaTeX / pLaTeXjs文章,jlreq通过DVI;竖写;传统的;期刊经常要求
LuaLaTeXltjsarticle、jlreq + luatexja直接PDF,系统字体,Unicode。新作品的最佳默认
XeLaTeXxeCJK + bxjsarticle等简单的 OpenType 字体
pdfLaTeXarticle + CJKutf8最小;将文本换行为 \begin{CJK}{UTF8}{min}

类和包

最现代的选择是由 Noriyuki Abe 设计的 jlreq 类。它是围绕 W3C 的“日语文本布局要求 (JLReq)”设计的,只需要 \documentclass{jlreq} 并在 LuaLaTeX、pLaTeX 或 upLaTeX 上运行(引擎是自动检测的,或者您可以将 platex/uplatex/lualatex 作为类选项传递)。

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

在传统家族中,jsclassesjsarticlejsbook,用于 pLaTeX/upLaTeX)是标准的,ltjsclassesltjsarticle 等)是其 LuaLaTeX 对应项。要更改 LuaLaTeX 下的日语字体,请使用 luatexja-fontspec

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

字符编码

将您的源保存为 UTF-8 — 这是当今的标准。 EUC-JP、Shift_JIS 和 ISO-2022-JP 过去很常见(使用 nkf 等工具转换),但现在坚持使用 UTF-8 是安全的选择。 upTeX 和 LuaTeX 是 Unicode 原生的,现代 pLaTeX 也假设 UTF-8 输入。注意混合行结尾(LF 与 CRLF)。

选择哪个

  • 重新开始? LuaLaTeX + jlreq(或ltjsarticle)。系统OpenType字体,直接PDF,强Unicode。
  • 想要速度或拥有现有资产? upLaTeX + jsarticle. 快速构建和日语的长期跟踪记录。
  • 如果您的场所要求 pLaTeX,请遵循它。 某些期刊类别假设为 pLaTeX。
  • 大部分是英语,有一点日语? XeLaTeX + xeCJK 或 pdfLaTeX + CJK 就足够了。

安全的启动设置

对于新的日语文档,首先获取带有 UTF-8 源、LuaLaTeX 和 jlreq 的 PDF。仅当您有具体原因时才转向 upLaTeX 或 pLaTeX:场地需要 pLaTeX,您继承了旧的 jsarticle 源,或者您需要详细的垂直书写控制。重点不是在你试图写论文的同时与“日本人不会印刷”作斗争。

  • 不要用 pdfLaTeX 书写日语正文;如果您看到错误或 mojibake,请首先检查编译器。
  • 如果您对 LuaLaTeX 使用 ltjsarticlejlreq,请确保编译器也是 LuaLaTeX。
  • 对于共同创作的作品,将引擎、编码和类记录在 README 的一行中。