[转载]xelatex+xeCJK中文支持示例-孙文昌
最近,有网友问起关于TeX系统中文支持。这里一并介绍下:
中文支持的常见的几个方案:
第一:CJK中文解决方案 。CJK包是德国人设计的,他不懂中国人的习惯,但是他设计的编码方式完全可以为我们提供任何可能处理中文的“理论基础”,我们只需要制定自己的“有中国特色的样式”。中国人的样式必需由中国人自己来制定。这就使我想起了另外两个德国人,还有一位中国老人…… 🙂
详细参看:http://www.magiclinux.org/node/249
第二、就是CCT方式,现在看来基本是过时了。这里不再阐述。
第三、基于 XeTeX 的方案(JJgod)这是我们推荐的中文方案,但是windows下 运行速度缓慢,具体原因不详,还望更多网友提供解析。
下面是我们推荐的方案,又可分为高层与低层两种,分别适用于不同需求的用户。
首先,安装所需的宏包(linux):
1 |
sudo tlmgr install xecjk ctex |
高层的方案是使用 ctex 宏包自带的文档类,例如原来用 article 文档类的就改用 ctexart 文档类,原来用 book文档类的就改用 ctexbook 文档类,这样绝大部分你会遇到的中文问题,比如字体设置、hyperref的调用、章节标题的设置等等,都自动为你解决了。详情可以看 ctex 宏包的文档 [4]。下面是一个小例子:
1 2 3 4 |
\documentclass{ctexart} \begin{document} 你好,TeX Live 2009! \end{document} |
默认情况 (winfonts) 下,你需要宋体 (SimSun)、仿宋 (simfang)、黑体 (simhei)、楷体 (simkai)、隶书(LiSu)、幼圆 (YouYuan) 这六套 Windows 字体,如果你的字体不全,可以编辑ctex-xecjk-winfonts.def 文件 (用 kpsewhich 来找) 来修改设置,也可以选择 Adobe Reader等软件所带的 Adobe Song Std, Adobe Heiti Std, Adobe Kaiti Std, Adobe FangsongStd 四款字体,这时需要给 ctexart 加上 [adobefonts] 选项。又或者,你可以不用这些预置的字体,使用 [nofonts]选项,然后参考 ctex-xecjk-winfonts.def 文件,自己定义对应各个 CJK 字体族的字体。
低层的方案则是用原来你自己的宏包,结合 xeCJK 宏包来配置字体,下面是一个小例子:
1 2 3 4 5 6 |
\documentclass{article} \usepackage{xeCJK} \setCJKmainfont{SimSun} \begin{document} 你好,TeX Live 2009! \end{document} |
当然,你得有 SimSun 这个字体。
不管选用高层的还是低层的,都可以直接用 xelatex 命令直接编译你的文档。
如何安装字体(linux):
在个人主目录先创建.fonts文件夹,把自己需要的字体复制进去就可以了。(我安装了,Adobe的4种字体,微软的6种,还有文泉驿的.)
1 |
$fc-list :lang=zh-cn | sort |
查看已经安装的中文字体
到现在为止,中文的显示应该没有问题了。高层的方案比较好写,只是在很多场合中英文要求不同字体显示,我采用低层xeCJK宏包来解决的。
下面是一个采用xeCJK处理的例子,简明易懂:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
% !Mode:: "TeX:UTF-8" \documentclass[12pt,a4paper]{article} \usepackage{xltxtra,fontspec,xunicode} \usepackage[slantfont,boldfont]{xeCJK} % 允许斜体和粗体 \setCJKmainfont{FZJingLeiS-R-GB} % 设置缺省中文字体 徐静蕾字体 \setCJKmonofont{SimSun} % 设置等宽字体 \setmainfont{TeX Gyre Pagella} % 英文衬线字体 \setmonofont{Monaco} % 英文等宽字体 \setsansfont{Trebuchet MS} % 英文无衬线字体 \begin{document} \begin{verse} Stray birds of summer come to my window to sing and fly away. \\ And yellow leaves of autumn, which have no songs, \\ flutter and fall there with a sign.\\ \hfill \emph{Rabindranath Tagore} \end{verse} \begin{verse} 夏天的飞鸟,飞到我的窗前唱歌,又飞去了。\\ 秋天的黄叶,它们没有什么可唱,只叹息一声,飞落在那里。\\ \hfill \emph{罗宾德拉纳特·泰戈尔} \end{verse} \end{document} |
运行xelatex编译吧.
发表回复