LaTeX 中文排版指南:CTeX 与 XeCJK
附赠一份中英文混排配置
前言
原生不支持中文(毕竟是外国人发明的), 但优秀的国人们, 使用了很多方法使 支持中文, 本文详细介绍使用 CTeX 宏集和 xeCJK 宏包实现中文排版的方法.
CTeX 宏集
CTeX 宏基是面向中文排版的通用 排版框架, 为中文 文档提供了汉字输出支持, 标点压缩, 字体字号命令, 标题文字汉化, 中文版式调整, 数字日期转换等支持功能, 可适应论文, 报告, 书籍, 幻灯片等不同类型的中文文档.
CTeX 中文套装是基于 Windows 下的 MiKTeX 系统,集成了编辑器 WinEdt 和 PostScript 处理软件 Ghostscript 和 GSview 等主要工具。 CTeX 中文套装在 MiKTeX 的基础上增加了对中文的完整支持。 CTeX 中文套装支持 CJK, xeCJK, CCT, TY 等多种中文 TeX 处理方式。
由于 CTeX 中文套装1已停止更新(上一次更新是 2012 年), 所以强烈建议Linux 和 Windows 用户安装 TeXLive, Mac OSX 用户安装 MacTeX.
如果你的文章主要由中文构成,你可以考虑使用 CTeX 宏集排版中文. 在 XeTeX 或 LuaTeX 引擎下使用时, CTeX 宏集底层将依赖 fontspec 宏包2.
ctexart 文档类
| |
建议使用 \usepackage[T1]{fontenc}
If you don’t use \usepackage[T1]{fontenc},
- Words containing accented characters cannot be automatically hyphenated,
- You cannot properly copy-and-paste such words from the output (DVI/PS/PDF),
- Characters like the pipe sign, less than and greater sign give unexpected results in text.
ctex 宏包
| |
推荐使用 xelatex 命令编译源文件.
以上两种方法效果类似

CTeX vs xeCJK:如何选择?
| 特性 | CTeX 宏集 | xeCJK 宏包 |
|---|---|---|
| 定位 | 一站式解决方案 (Framework) | 底层字体支持宏包 (Package) |
| 易用性 | 开箱即用,默认配置好中文习惯 | 需手动配置字体和选项 |
| 灵活性 | 较低,预设较多 | 极高,完全自定义 |
| 主要用途 | 纯中文文档 (如毕业论文、报告) | 中英混排,或不仅限于中文的多语言文档 |
| 依赖 | 底层可能调用 xeCJK (在 XeTeX 下) | 独立宏包 |
结论:如果你只是想快速写一篇中文文章,首选 CTeX。如果你需要精细控制字体,或者是在英文文档中偶尔插入中文,推荐 xeCJK。
xeCJK 实现中英混排3
xeCJK 是一个 XeLaTeX 宏包4, 用于排版 CJK 文字, 包括字体选择和标点控制等.
下面示例利用 xeCJK 宏包实现中英混排:
| |

xeCJK 宏包有 4 个选项
| |
Options
- BlodFont: 启用 CJK 粗体字
- SlantFont: 启用 斜体字
- CJKnumber: 调用 CJKnumb 宏包
- CJKchecksingle: 避免单个汉字独占一行
对于中文字体配置:
\setCJKmainfont{fontname}命令用来设置正文使用的中文字体, 同时也是\textrm{}命令使用的字体.\setCJKmonofont{fontname}用来设置\texttt{}命令中的中文使用的字体.\setCJKsansfont{fontname}用来设置\textsf{}命令中的中文使用的字体.
而以上 fontname 应填写本机已安装的字体名称, 在 Terminal 中输入
| |
本文部分内容借鉴: 全面总结如何在 LaTeX 中使用中文 (2020 最新版)5, 现表示感谢🍻
https://stone-zeng.github.io/2018-08-08-use-opentype-fonts/#%E5%9F%BA%E7%A1%80%E7%AF%87ii%E4%B8%AD%E8%A5%BF%E6%96%87%E6%B7%B7%E6%8E%92 ↩︎
当文档以英文为主体, 出现少数中文时, 建议使用 xeCJK 宏包. CTeX 宏集设置中文字体与下文类似. ↩︎
https://www.sys.kth.se/docs/texlive/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf ↩︎