TeX Live/CJK
使用 TeX Live 排版中文、日文和韩文文档的指南。
安装
通过从 texlive-lang 组安装相应的软件包,可以获得特定于语言的字体和宏包。
其他字体可以通过 Fonts#Installation 中概述的方法安装。您可能还对使 Tex Live 字体可用于 Fontconfig 感兴趣(但这并非绝对必要)。
使用诸如 Evince 等基于 poppler 的 PDF 阅读器的用户应安装 poppler-data 作为额外的依赖项,以正确显示包含 CJK 字符的 PDF 文档。(如果使用 noto-fonts-cjk 中的 CJK 字体,则似乎没有必要。)
无需赘言,您的 locale 应该具有可以处理特殊字符(例如 UTF-8)的字符编码,并且您还应该安装 输入法编辑器。Localization 的(简体/繁体)中文、日文和韩文子页面也包含有关 locale 和字体的信息。
排版
Overleaf 的在线文档中有文章介绍了 CJK 排版的不同方法,这些方法也适用于 Arch Linux 上的 TeX Live 安装
- https://overleaf.com/learn/latex/Chinese
- https://overleaf.com/learn/latex/Japanese
- https://overleaf.com/learn/latex/Korean
CJK
和 CJKutf8
宏包(其中 前者提供后者)处于维护模式且已过时。如果可能,请使用“最近的 TeX 引擎,如 luatex、XeTeX 或 upTeX(它们都是 TeXLive 的一部分)”来代替。字体
下表列出了 Overleaf 文章中提到的字体族/文件及其各自的软件包。
语言 | 字体族/文件 | 软件包 |
---|---|---|
中文 | BabelStone Han | ttf-babelstone-hanAUR |
日语 | IPAMincho | otf-ipafont |
IPAGothic | ||
TakaoMincho | otf-takaoAUR | |
TakaoGothic | ||
Komatuna | ttf-komatunaAUR | |
韩语 | UnGungseo.ttf |
texlive-langkorean |
gulim.ttf
|
使用 ctex 或 xeCJK 时,可以使用 \setCJKtypefont{font}
设置字体。(\settypejfont{font}
可以与 pTeX 引擎一起使用。)type
可以取 main
、sans
和 mono
的值。font
是用户/系统字体的字体族,也是 TeX Live 字体的字体文件。
pTeX 引擎
Overleaf 的 Japanese#The pTeX engine 提供了一个 latexmkrc
文件,该文件旨在与 texlive-doc 中的 latemk 实用程序一起使用。在 Arch Linux 上运行不带任何参数的 latexmk
将仅从示例文档生成 DVI 文件。使用 -pdfdvi
选项还可以从 DVI 文件生成 PDF 文件。有关更多信息,请参阅 latexmk(1) 或 latexmk -help
。
正如 Overleaf 文章中简要提到的,upLaTeX(类似于 pLaTeX)“为 upTeX 提供了 pLaTeX2ε 宏”,upTeX 是 “pTeX” 的 Unicode 版本。
故障排除
CTeX-kit
使用 CTeX-kit 集合/包(如 ctex
或 xeCJK
)时,常见问题的解决方案。
找不到 ctexhook.sty
编译日文或韩文文档时可能会遇到以下错误
! LaTeX Error: File `ctexhook.sty' not found.
安装 texlive-langchinese 软件包以获取 ctexhook.sty
。即使对于非中文排版文档,这也是必需的。
字体缺失或不一致
日文或韩文 PDF 文档可能缺少字符或字体粗细不一致。当未指定 CJK 字体时,将使用默认字体 Fandol。但是,Fandol 是“为中文排版设计的”,因此不适合日文和韩文。显式设置日文或韩文字体以避免此问题。
LuaLaTeX
使用 LuaLaTeX 编译文档时,常见问题的解决方案。
找不到 luatexja.sty
使用 ctex
文档类编译中文或韩文文档时可能会遇到以下错误
! LaTeX Error: File `luatexja.sty' not found.
安装 texlive-langjapanese 软件包以获取 luatexja.sty
。即使对于非日文排版文档,这也是必需的。
大字体资源问题
当使用像 noto-fonts-cjk 这样的大字体时,由于字体缓存的生成,文档编译可能会消耗大量资源且耗时。但是,随后的编译应该会快得多。一种可能的解决方法(除了使用较小的字体外)是通过删除字形名称来修剪字体。请记住,这样做可能会产生后果。