现代LaTeX系统中文排版方案渣指南

来源:http://page.renren.com/601024697/note/806581340

本来昨天写了一些关于TeX中文处理原理方面的东西,不过目前居然还有人用latex+cjk的方式……更何况主页君对于详细的原理也说不明白,怕误导人,就不发出来了。不如直接讲现代一些的方式,也就是偏向CTeX与XeTeX方面的……

既然不说原理,那就说说方法。

现在在文档中使用\begin{CJK}和\end{CJK}或者CCT应该是比较落后的方法。此外,用latex+dvips+ps2pdf也是很古老的方法。在此我们珍爱生命,与时俱进,不去管他们。

原因就是,CJK太麻烦,dvips在字体方面的表现实在是……*()&……#¥*&%……。

因此现在可用的方式有:latex+dvipdfmx,pdflatex,xelatex。(推荐程度向后递增)

它们的优点在于,因为有了zhmetrics的存在,不需要转换Type1字体,只需要ttf字体即可。而XeTeX则可调用任意字体,只要搜索到就可以用。

为了能够使用CTeX提供的中文排版用包,建议安装TeXLive 2011或MiKTeX 2.9(Windows Only)作为TeX后端,安装时选择中文相关组件。另见TeXLive简明安装指南

我们以后将会使用CJK(被CTeX调用)、CTeX、zhmetrics(中文字体的大小信息)、还有XeTeX引擎,因此如果你不使用上述TeX发行版,请确保这些东西的存在。

***************安装TeXLive的*nix用户看过来***************
%Windows用户可以跳过此段

首先,我们需要向TeX系统声明Windows字体,也就是宋体、黑体等字体。因为这些字体有版权问题,所以TeXLive是不提供这类字体的,*nix用户想要在TeX中使用这些字体就要到Windows系统中去拷贝。

*nix用户应拷贝$WINDIR/Fonts/sim*.ttf (宋体是simsun.ttc,其他是ttf)至TeXLive安装路径中texmf-dist/fonts/truetype/ 的子目录下。

cd /media/<Windows分区卷标名>/Windows/Fonts
sudo cp sim* /usr/local/texlive/2011/texmf-dist/fonts/truetype/
sudo texhash

此外,记得把这些字体文件的权限更改一下,使得其他人可以读取这些文件。(因为使用了sudo,所以它们的所有者是root。)

cd /usr/local/texlive/2011/texmf-dist/fonts/truetype/
sudo chmod 644 sim*


**********************************************************

下面可以测试中文源文件了。

\documentclass[UTF8]{ctexart} 
% 根据你想使用的编码而定,Windows文本编辑器大多使用GBK编码,那么就将选项去掉。 
% *nix编辑器大多使用UTF8编码,因此就要加上这一选项。 
\begin{document} 
测试 
\end{document} 

正常情况下,latex+dvipdfmx和pdflatex即可编译此文件,生成正确的pdf。

如果pdf文件中文字乱码,那说明你的文字编码搞错了,尝试加上或去掉UTF8选项。

当然,如果你已经确定了其他的文档类,而仍然想使用CTeX的话,只需要使用同样的选项去\usepackage{ctex}就可以啦!

以上步骤经主页君亲自测试,Arch Linux系统,原装TeX Live 2011。执行上述步骤,可以生成正确的pdf。

(主页君手头无Mac系统,希望其他的主页君或群众测试MacTeX的中文配置。)

在这里,我们使用了ctexart文档类,它其实就是LaTeX中的article文档类的中文本地化版本。对应book类、report类则有ctexbook和ctexrep文档类。

在etex引擎(latex/pdflatex)下,CTeX在底层调用CJK,此外还增加了许多本地化的成分,比如文档中的``Figure 1"会变成``图1",等等,如果单纯地使用CJK宏包,这些东西都必须手动实现。有了ctex文档类无疑会极大地减轻排版负担。

在CTeX文档类中,默认字形(\rmfamily)是宋体,粗体(\bfseries)是黑体,意大利体(\itshape)是楷体。也可以用\songti、\heiti、\kaishu来呼叫这些字体。

此外,CTeX提供了其他的字体命令,有\fangsong、\lishu、\youyuan。其中隶书和幼圆的字体名不是sim开头的,请*nix用户按上面所述方法安装字体。

在CTeX中还有字号命令,\zihao{<数字>},比如五号字\zihao{5},小五号字\zihao{-5}。

不过呢,latex和pdflatex的好戏也就到此为止了,因为他们就支持这六种字体。这受限于zhmetrics,只包含了这六种字体的大小信息。在zhmetrics出现之前,要调用字体,都是要取得ttf字体文件,使用ttf2tfm将其转化成盒子信息。但是这样做就出现了版权问题,生成的tfm文件依赖版权字体文件,这种东西是进不了开源的TeX发行版的。为了不依赖字体产生中文tfm文件,于是就有了zhmetrics。原理就是,汉字都是方的。(没这么简单啦……可以扩展阅读一下yulewang的神文:http://bbs.ctex.org/viewthread.php?tid=50078

那么,如果我们想要更多丰富多彩的字体呢?这个时候XeTeX就横空出世了。XeTeX(维基百科有读音)引擎的亮点之一就是,可以任意调用系统字体。只要将字体安装到系统中,就可以在XeTeX中使用。在现在的TeX发行版中已经包含了XeTeX,因此可以直接使用。

XeTeX基于Unicode,因此它的源文件编码必须是UTF8。使用Windows的用户要注意了。新建文件保存的时候,在编码类型中一定要选择UTF8

那么,让我们来测试一下XeTeX的中文排版吧。

\documentclass{article} 
\usepackage{xltxtra} % 这个包是为了打印\XeLaTeX 的Logo。 
\usepackage{xeCJK} % 这个包可以指定中文字体。 
\setCJKmainfont{微软雅黑} % Linux用户可以试试“文泉驿正黑”。 
\begin{document} 
你好,\XeLaTeX ! 
\end{document} 

使用XeLaTeX编译文档很简单,命令是xelatex。比如编译刚才的文档,在终端中输入xelatex test(这货是文件名)即可直接(可以理解为直接……)生成pdf。

使用IDE的童鞋们,主流的IDE也提供了XeLaTeX编译的方案。

Kile


TeXnicCenter


WinEdt(没截图……有真相,懒得装了)

vim-latex/AUCTeX……?(不会hack……)

直接就调用系统字体的感觉怎样?

当然xeCJK只是提供了低等级的功能,要想达到完美的中文排版,还得靠CTeX。

我们再来一段测试代码。

\documentclass{ctexart} 
\usepackage{xltxtra} % 这个包是为了打印\XeLaTeX 的Logo。 
\setCJKmainfont{微软雅黑} % Linux用户可以试试“文泉驿正黑”。 
\begin{document} 
你好,\XeLaTeX ! 
\end{document} 

编译一下……嗯,效果跟刚才的文档一样。我们使用了ctex文档类以后,如果不指定CJKmainfont,那么效果就跟latex一样,宋体/黑体/楷体的字形。这对于跨平台是非常给力的。

诶……?怎么又是ctexart……?这货底层不是CJK么?

No~在XeTeX引擎下,ctex文档类和ctex宏包调用的是xeCJK。因此我们才敢用\setCJKmainfont这个宏啊。而且,在XeTeX引擎下,ctex类文档还多了一个adobefonts的选项,它可以使文档默认字体变成Adobe宋体Std、Adobe黑体Std、Adobe楷体Std,前提是系统安装了这些字体。
要想知道XeTeX到底能调用到哪些字体,请执行fc-list,这里所有的非点阵字体都可以为XeTeX所用。
有关于XeLaTeX字体调用的详细讲解,可以参考CTeX论坛字体大神KMC的《XeTeX About: Fonts》。

嗯,对于现在的TeX系统来说,中文排版是很无压力的一件事。不过,还是建议大家多多使用ctex文档类和XeLaTeX,因为这货实在是太给力了。

我们的目标是:向\begin{CJK}说再见~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值