CJK (pdfLaTeX / XeLaTeX)

排版日文并不只有 pTeX 系(pLaTeX/upLaTeX)和 LuaLaTeX-ja 两条路。当你必须使用 pdfLaTeXXeLaTeX 时——例如指定类要求它们,或要制作多语言 CJK 文档——可以使用专门的宏包:老牌的 CJK 宏包(面向 pdfLaTeX)和 xeCJK(面向 XeLaTeX)。本页说明它们的用法,以及什么时候值得选择。

pdfLaTeX 中的 CJK — CJK 宏包

CJK 宏包(Werner Lemberg,约 1989 年起)让 pdfLaTeX 能够排版中文、日文和韩文。把文本放在 CJK/CJK* 环境中,并指定编码和字体族:\begin{CJK}{UTF8}{min} … \end{CJK}(UTF-8 时加载 CJKutf8 最简单),再用 \CJKfamily{...} 切换字体族。不过这个宏包已经 处于维护模式,基本过了黄金时期,因为现代 LuaTeX/XeTeX/upTeX 能原生且更好地处理 Unicode 和 CJK。若在 pdfLaTeX 中想要更自然的日文,基于 CJK 的 BXcjkjatype(ZR 开发)会改进整篇文档处理和间距调整。

latex
% pdfLaTeX + CJK パッケージ
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{min}
日本語のテキスト。
\end{CJK}
\end{document}

XeLaTeX 中的 CJK — xeCJK / ZXjatype

XeLaTeX 可以直接使用系统的 OpenType/TrueType 字体,而 xeCJK 会加入 CJK 排版功能。用 \setCJKmainfont{...}\setCJKsansfont{...}\setCJKmonofont{...} 指定日文字体(IPAex Mincho、Noto CJK 等)。在此基础上,ZXjatype(ZR 开发)会把 xeCJK 配置为适合日文,并提供带有日文专用缩放的 \setjamainfont / \setjasansfont 等命令。当你想在 XeLaTeX 中使用系统字体时,这是实用路线。

latex
% XeLaTeX + ZXjatype(xeCJK の上に)
\usepackage{zxjatype}
\setjamainfont{IPAexMincho}
\begin{document}
日本語のテキスト。
\end{document}

是否真的应该使用它们

对于认真的日文排版,考虑到禁则处理和 JFM 的成熟度,upLaTeX 或 LuaLaTeX-ja 通常更合适。只有在你 受限于 pdfLaTeX/XeLaTeX(指定类或模板)或要处理 多语言 CJK 时,才考虑 CJK/xeCJK。

  • 正式的日文排版upLaTeXLuaLaTeX-ja(见“日文排版方法”)。
  • 不得不用 pdfLaTeXCJK 宏包(或 BXcjkjatype);偏旧式。
  • XeLaTeX 加系统字体xeCJK + ZXjatype