Typesmith

中文排版

ctex 与 XeLaTeX:让 LaTeX 正确处理中文断行、标点与字体

进阶约 20 分钟

中文排版不是「英文排版 + 汉字」

把中文直接塞进 pdfLaTeX,通常会得到一堆乱码或报错。原因在于中文排版有自己的一套规则:汉字之间可以任意断行(不像英文靠空格断词)、标点有避头尾规则(句号逗号不能出现在行首)、中西文之间要留适当间距。这些都不是英文排版引擎默认会做的。

现代解决方案是 ctex 宏包家族配合 XeLaTeX 或 LuaLaTeX 引擎。ctex 帮你处理中文断行、标点挤压、字体选择;XeLaTeX 则负责调用系统里真正的中文字体。

用起来极其简单:把文档类从 article 换成 ctexart(或 ctexrep、ctexbook),并在编译时选择 XeLaTeX 引擎。剩下的事 ctex 全包了。

引擎选择:一个必须理解的开关

为什么强调引擎?因为 ctexart 用 pdfLaTeX 编译会直接失败。pdfLaTeX 对中文的支持依赖老旧的 CJK 方案,现代 ctex 默认走 XeLaTeX/LuaLaTeX 路线。

所以「中文文档编译不过」最常见的两个原因就是:① 忘了换引擎(还在用 pdfLaTeX);② 文档类没写 ctexart/ctexrep/ctexbook 或没加载 ctex 宏包。记住:中文 = ctex + XeLaTeX/LuaLaTeX。

本站的每个中文示例都已经把引擎标签切成了 XeLaTeX——点击右上角的引擎标签可以看到,这也是一种提醒。

第一份中文文档
XeLaTeX
编辑器加载中…
引擎:XeLaTeX

点击「编译运行」生成真实 PDF

本地编译时记得选择 XeLaTeX 引擎(如 latexmk -xelatex,或在编辑器里切换编译器)。选错引擎是初学者第一大坑。

中文标点:直接打,不用转义

在 ctex 环境下,中文标点可以直接用中文输入法敲出来,不需要转义:, 。 、 ; : ? ! “ ” 《 》 都是合法字符。这与第 2 课的英文标点习惯不同,因为它们不在 LaTeX 的保留字符表里。

ctex 会自动应用避头尾规则:句号、逗号、右括号不会出现在行首;左括号、左引号不会出现在行尾。你不需要手动加不换行空格去调整,这正是中文排版引擎的价值。

唯一需要小心的是全角空格和中文间的英文标点:中文句子里引用英文时,句号仍应按上下文选择。语言混排里,标点归属要跟着它「修饰」的语言走。

中文标点与避头尾
XeLaTeX
编辑器加载中…
引擎:XeLaTeX

点击「编译运行」生成真实 PDF

把窗口拖窄再编译,观察句号和逗号是否被推到了下一行——ctex 的避头尾规则正在自动生效。

中英混排:空格与字体的细节

中英混排时,一个常见问题是「汉字和英文/数字之间太挤」。ctex 会自动在中西文之间插入适当的弹性间距,让段落呼吸更自然,你不必手动加空格。

如果要主动分隔,可以用 \ (反斜杠加空格)或 ~(不换行空格)。例如写「第 3 章」时,希望数字与「章」之间有点空隙且不断行,可以写 第~3~章。

字体方面,ctex 会自动为中文搭配一套默认字体(如 Windows 下的中易宋体、macOS 下的宋体)。需要自定义字体时,可用 \setCJKmainfont{字体名} 显式指定,这在做正式排版、要求特定中文字体时很有用。

中英混排与章节结构
XeLaTeX
编辑器加载中…
引擎:XeLaTeX

点击「编译运行」生成真实 PDF

注意「第~3~章」:两个 ~ 让数字与汉字之间既有间距又不会断行。这种细节是正式中文排版里常见的要求。

练习:中文自我介绍
XeLaTeX

用 ctexart 文档类写一份中文自我介绍:一个中文 \section 标题、一段中文介绍,以及一个 itemize 列出三个爱好。

编辑器加载中…

检查点(实时)

  • 使用 ctexart 文档类
  • 使用中文 \section 标题
  • itemize 中至少两个 \item
  • 正文包含中文内容

🎯 目标效果

1关于我

我是小明,正在学习 LaTeX。

  • 阅读
  • 编程
  • 排版
引擎:XeLaTeX

点击「编译运行」生成真实 PDF

练习:进阶:中英混排的技术笔记
XeLaTeX

写一段中英混排笔记:一个中文 \section,正文里同时出现中文、英文单词和行内公式 $a^2+b^2=c^2$,并用 \textbf 强调一处中文。

编辑器加载中…

检查点(实时)

  • 使用 ctexart 文档类
  • 使用中文 \section 标题
  • 行内公式里包含平方项
  • 用 \textbf 强调一处中文

🎯 目标效果

1勾股定理

勾股定理指出:直角三角形两直角边的平方和 等于斜边的平方,即 。 这是 几何学中最著名的结论之一。

在英文里它叫 the Pythagorean theorem。

引擎:XeLaTeX

点击「编译运行」生成真实 PDF

完成所有练习的检查点会自动记录