实现中英文混排
关于 LaTeX 的中文支持,首先要说的是:在现在,一切教你使用
CJK
宏包的模板、人、网页、书,都是糟糕的、有害的、恼人的、邪恶的和应该摒弃的。
成功编译输出第一个文档之后,中国 TeX 用户面临的第二个普遍问题大概就是「实现中英文混排」了。众所周知,TeX 系统是高教授开发的。在 TeX 开发当初并没有考虑到亚洲文字的问题。因此早期的 TeX 系统并不能直接支持中文,必须要用其他工具先处理一下(或者是一些宏包之类的)。但是现在,XeTeX 原生支持 Unicode,并且可以方便地调用系统字体。可以说解决了困扰中国 TeX 使用者多年的大问题。至此,我们只需要使用几个简单的宏包,就能完成中文支持了。
所谓宏包,就是一系列控制序列的合集。这些控制序列太常用,以至于人们会觉得每次将他们写在导言区太过繁琐,于是将他们打包放在同一个文件中,成为所谓的宏包(台湾方面称之为「巨集套件」)。\usepackage{}
可以用来调用宏包。
除去中文支持,中文的版式处理和标点禁则也是不小的挑战。好在由吴凌云和江疆牵头,现在主要由刘海洋、李清和我维护的 CTeX
宏集一次性解决了这些问题。CTeX
宏集的优势在于,它能适配于多种编译方式;在内部处理好了中文和中文版式的支持,隐藏了这些细节;并且,提供了不少中文用户需要的功能接口。我们来看如何使用 CTeX
宏集来处理中英文混排的文档。
请注意,
CTeX
宏集和CTeX
套装是两个不同的东西。CTeX
宏集本质是 LaTeX 宏的集合,包含若干文档类(.cls
文件)和宏包(.sty
文件)。CTeX
套装是一个过时的 TeX 系统。新版
CTeX
宏集的默认能够自动检测用户的操作系统,并为之配置合适的字库。对于 Windows 用户、Mac OS X 用户和 Linux 用户,都无需做任何配置,就能使用CTeX
宏集来排版中文。[2015-05-20 更新]
在 TeXworks 编辑框中输入以下内容,以 UTF-8 编码保存,使用 XeLaTeX 编译:
EC-mix.tex
1 2 3 4 |
\documentclass[UTF8]{ctexart} \begin{document} 你好,world! \end{document} |
相较于之前的例子,这份代码只有细微的差异:
- 文档类从
article
变为ctexart
; - 增加了文档类选项
UTF8
。
你也可以直接使用
xeCJK
宏包来支持中英文混排。不过大多数情况是不推荐这样做的。因此,如果你能抑制住你小小的好奇心,可以暂时略过这一段,回头再看不迟。:)
在 TeXworks 编辑框中输入以下内容,保存,使用 XeLaTeX 编译:
xeCJK-demo.tex
1 2 3 4 5 6 |
\documentclass{article} \usepackage{xeCJK}%调用 xeCJK 宏包 \setCJKmainfont{SimSun}%设置 CJK 主字体为 SimSun (宋体) \begin{document} 你好,world! \end{document} |