Tuesday, June 09, 2009

[Latex]支持中文方案2:Xetex

比较了一下CJK和xetex,这两种最主要的Latex中文解决方案,还是xetex更完美.它可以使用系统中fontconfig支持的中文字体,你可以用
fc-list :lang=zh
来查看你当前系统中的中文字体.相比之下,texlive中自带的CJK只能支持区区几种.

CJK就好比是在Tex基础上为了支持unicode中文而打的补丁,而Xetex则是从根本上就支持unicode.所以应该是更有前途.我觉得可以视xetex为unicode版的tex,而xelatex就是对应着unicode版的latex.使用起来latex的基本语法几乎不用作改动, 你只需要加上若干针对xetex的命令在.tex源文件的前面

\documentclass{article}
%需要fontspec这个宏包设置字体
\usepackage{fontspec}
%指定文档的字体, 上面fc-list命令列出的中文字体都可以用在底下
\setmainfont[BoldFont=WenQuanYi Zen Hei]{SimSun}
%默认字体为SimSun,默认的bold(比如用在section title之类的地方)为文泉译增黑.
%还可以用\setsansfont, \setmonofont来设置文档的sans 和mono字体.

%针对中文设置下换行
\XeTeXlinebreaklocale "zh" %使用中文换行
\XeTeXlinebreakskip = 0pt plus 1pt %
% OK了,后面就和latex没有两样了

\title{Notes}
\author{apc999}
\date{\today}
\begin{document}
\maketitle
\section{中文}
你好,世界
\section{数学}
$$\sum_i x_i$$
\end{document}

把上面文件存为helloworld.tex.编译的时候就使用
xelatex helloworld.tex

结果如下:

Xetex在Mac上运行良好.不过在ubuntu 9.04上,我发现Xetex有一个bug.数学环境中的数学符号,比如\sum \alpha无法显示在编译出的pdf文档中.这里是我从网上找到的bug fix:http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg631117.html按照这里说的更改以后就好啦!

No comments: