2013年3月20日星期三

LaTeX中文支持-fontspec

由于LaTeX设计之初,仅仅是考虑到了拉丁字母符号的输出。当它成为流行全球的编辑工具以后,避免不了针对其他语言符号的支持,中文就是其中之一。

网上有许多LaTeX在中文环境下的编译方法,最常用的即是使用CJK宏包。近期突然发现在XeLaTeX编译下,如果使用“fontspec”包也能顺利支持中文环境。“fontspec”的使用非常方便,很重要一个原因是它能够直接调用已经转载在电脑系统里面的各种字体,而不需要另外导入。一般电脑中标配的中文字体包括黑体(Hei),楷书(Kai),仿宋(STFangsong)等,具体的名称每个系统都不相同,需要自己单个查找。如果想查看自己电脑中的所有字体,可以使用以下命令:

fc-list

此外,如果希望使用系统中不存在的字库,“fontspec”也提供了导入方法:

\fontspec[ExternalLocation=dir]{字体.ttf}
  • 基本配置
那么,如何在tex文档中使用“fontspec”呢?具体方法如下:

\usepackage{fontspec}
\setromanfont{Kai}
\setmonofont[Scale=0.8]{AppleGothic Regular}

上面的第二行设置使用的是楷书,只需要在其中把“Kai”替换为自己喜欢的自己即可。第三行的设置目的是为了获得等宽字形。

如果需要在文中使用不同于默认设置的字体,也可以使用“fontspec”命令,只需要把更改的内容放在一个大括号范围内即可:

{
\fontspec{Hei}
黑体字的内容。。。
}
  • 自动换行问题
由此可知,使用“fontspec”来编辑中文环境非常方便,但是这种方法的一个常见问题就是不能正确断行,文字内容经常突兀地跑出页面边界。因此,人们通常同时使用下面两条命令:


\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt


这样,你就可以放心地使用LaTex来编辑自己的中文文档了。但是不要忘记编译的时候选用XeLaTeX,如果还是照常实用LaTex系统会报错。以上方法已经在Mac OS的TeXShop环境下测试成功。




Reference:
http://bbs.ctex.org/forum.php?mod=viewthread&tid=41552
http://forum.ubuntu.org.cn/viewtopic.php?t=61206