APP下载

浅析LaTeX编辑中文的实现办法

2015-08-08刘二钢

电脑知识与技术 2015年15期

刘二钢

摘要:文章以Windows操作系统为例,通过对LaTeX比较常用的几种中文编辑方法进行比对分析,系统地提出LaTeX编辑中文的解决办法及各自优缺点,解决了国内使用LaTeX进行中文编辑排版时所遇到的困难和麻烦,使得LaTeX编辑中文变得更加容易轻松,具有较好的实用性。

关键词:LaTeX;CJK;CteX;XeLatex;中文编辑

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)15-0192-03

Abstract: The article puts forward Chinese editor solution in LaTeX and their advantages and disadvantages by compare analysis several common methods as an example of The Windows operating system. The article solves the domestic difficulties and troubles of Chinese editor, and makes it easier in LaTeX. The article has a good practicability.

Key words: LaTeX; CJK; CTeX; XeLatex; Chinese editor

TeX 软件是由美国 Stanford 大学教授 Donald E.Knuth 研制的计算机排版软件[1],能够实现文字格式和内容的有效分离, 并具有非常强大的宏定义功能[2-3]。许多人利用TeX的宏功能进行二次开发,实现了大量的功能扩展,比较著名的是美国数学学会推荐的非常适合于数学家使用的AMS-TEX[4]以及世界上最流行和使用最为广泛的适合于一般文章、报告、书籍的LaTeX 系统。

LaTeX作为TeX 中的一种形式,其特色功能之一就是它的自动编号功能, 文章、书籍的章、节、段落以及公式、图表、参考文献、页码等均可自动编号;另外,它的交叉引用功能, 使得论文内的引用标号可以随着公式、图表、参考文献的增删而自动地作相应的修改[5]。 尤其在数学论文格式方面,传统的WORD以及WPS对于数学符号和公式的兼容性都不够好,虽然易于编辑,但效果不尽如人意。相比较而言,由LaTeX编译生成的PDF文档,在字符质量、排版功能和排印方面均胜一筹,尤其是被新版本LaTeX2e完善之后,现在已经成为国际上数学、物理、计算机等科技领域专业排版的事实标准,其他领域(化学、生物、工程等)也有大量用户[6]。

1 LaTeX编译环境的搭建

LaTeX的书写环境比较随意,如同html文件一样,甚至可以用记事本进行书写,只要保存为Tex扩展名文件即可,比较常见的有WinEdt、UltraEdit、EditPlus等。但是对于不同的操作系统,编译系统则不尽相同,常见的编译系统在Linux下是TeXLive,在Windows下则有MikTex,fpTeX等等。文章以Windows操作系统为例,介绍如何编译LaTeX中文的使用办法。

在Windows操作系统下,最好的LaTeX编写环境是WinEdt,比较适合Windows使用习惯。另外由于需要安装MikTex、XeLatex等TeX编译器,PDF阅读器,EPS图片查看器以及加载所要的宏包,安装软件种类繁多,配置过程容易出错,因此一般推荐安装CTeX套装。CTeX套装是由中国科学院的吴凌云制作并维护的一个面向中文用户的Windows系统下的发行版,也是中文LaTeX用户最常用的发行版本,目前最新版本号为2.9.2。

CTeX有基本版、完全版两个版本。对于一般用户,建议使用完全版的CTeX套装,这不仅避免了编译时因缺少宏包还要临时下载的问题,而且完全版中包含的诸多文档资料对于用户也很有用[6]。从http://www.ctex.org/CTeXDownload下载对应的安装文件之后,默认安装就可以正常使用LaTeX了。

2 使用LaTeX编译中文文档

LaTeX产生之初是由Leslie.Lamport设计的一个西文排版系统,因此无论何种操作系统及编译环境,对于中文文档排版往往显得力不从心。许多学者就LaTeX使用中文字符提出了各种方法及扩展宏包。下面就比较常用的三种实现办法进行比对分析,方便广大中文学者对于LaTeX的中文文档排版使用。

2.1 使用CJK宏包

CJK宏包是由Werner.Lemberg开发的一个标准LaTeX 宏包,有些版本的TeX系统已经包含了CJK宏包[7]。CJK含义本身就是中日韩三国英文国名的首字母缩写。加载CJK宏包的方法很简单,只需要在文章开始之前引言部分加入\usepackage{CJK},在需要使用汉字部分的时候加入:

就可以正常地生成中文排版系统。但是由于CJK宏包功能有限,并且后来有了功能更为强大的Ctex宏包,现已逐步被Ctex宏包所取代。

2.2 使用Ctex宏包

Ctex宏包提供了一个统一的中文LaTeX文件框架,底层支持CCT、CJK和XeCjk三种中文LaTeX系统[8]。对于CJK宏包来说,Ctex宏包功能能为强大,可以更为方便地设置中文环境。

在使用Ctex宏包过程中,可以像左侧采用传统方式加载Ctex宏包,也可以像右侧采用更为流行的方法加载使用。无论采用哪种方法,都无需再加载CJK宏包,Ctex宏包会在\begin{document}和\end{document}之间自动加入CJK环境,因而使用起来更加方便。二者的区别在于右侧加载Ctex宏包的方式为文档类Ctex宏包。文档类Ctex宏包在使用时会自动在页眉右侧处加载页码,默认首行缩进两个字符,并将全体文字大小默认设置为五号字号大小,等等。加载成功之后就可以方便的使用Ctex宏包来设置中文字符排版环境了。这里主要强调字体及字号两个方面:

1)中文字体类型

对于一般的文献而言,常用的中文字体就是宋体、楷书等比较常用的几种,因此,Ctex兼容CJK宏包字体,只设置了六种常见的中文字体,具体设置方法可以参照下表:

2)中文字体字号

Ctex中,中文字体大小的设置方法是\zihao{<字号>},例如设置四号字为\zihao{4},小四号字为\zihao{-4},初号字体设置为\zihao{0},小初号字体设置为\zihao{-0}。可供使用的字体参数共16个,从大到小依次是0、-0、1、-1、…、6、-6、7、8。英文字体大小会始终保持和中文字体一致。

对于前两种编译中文文档方法,已经可以设置出比较常用的中文字符环境,但无论是CJK还是Ctex宏包,对于中文字体和英文字体所加载的字体种类都比较有限,无法满足更高要求下排版系统字体的需要。例如欲加载英文等宽courier字体或者在Windows7下比较有名的微软雅黑字体,在LaTeX环境下编译就无法成功,所以必须采用其它的方法。

2.3 使用XeLatex编译

XeLatex是Tex的另外一种扩展,其最大的特点就是支持Unicode。Unicode是一个统一的字符编码,可以支持世界上绝大多数的字符环境。对于XeLatex的安装,Windows下MikTex2.8或者Linux下的TeXLive2008之后的软件版本都已经默认包含了XeLatex编译环境,文章推荐安装的CTeX套装同样也包含XeLatex编译系统。

用XeLatex设置中文字符环境,首先应了解本地操作系统安装了哪些字体,并且还要知道中文字体所对应的英文名称。对于本地机器安装的中文字体以及所对应的英文名称,可以采用下面的办法:

在Windows下点击开始菜单,在运行处输入cmd命令,进入模拟DOS环境,在提示符下输入fc-list命令,即可查看本地机器安装的字体。如果只想查看本地机器安装的中文字体,可以输入fc-list :lang=zh-cn(注意list后面应该加一个空格,否则会提示“文件名、目录名或卷标不合法”)。由于编码的不同,显示的结果中文部分将会是乱码,可以采取将结果导入到文本文件或WORD文档中,例如在命令行输入如下命令:

得到本地操作系统安装的中文字体及对应的英文名称后,就可以使用XeLatex编译文件了。在安装好CTeX套装软件之后,运行WinEdt,点击菜单TeX->PDF->XeLaTex,就可以编译TeX文件。下面举一个简单的例子说明XeLatex的整个编译过程。在WinEdt下新建一个文档,输入如下的代码:

输入之后用XeLatex编译虽然可以通过,但生成的PDF文件中文字体呈现乱码。主要原因是编码类型不统一,没有设置为Unicode编码。此时应将编写的文件类型另存为UTF-8文件格式,这样通过XeLatex编译生成的PDF文件才能够正常显示字体。

对于上面的例子做下面几点说明:

1)第3行处将微软雅黑字体定义为yahei(也可以定义其它的标识符),以后就可以直接输入\yahei后接中文文字来显示微软雅黑文字。同样的方法也可以处理其它中文文字,只需得到中文字体所对应的英文名称即可。

2)第2行处加入fontspec等几个宏包,就可以中英文字符同时混排了。例如欲显示courier字体,则可以在正文之前插入\newfontinstance{\courier}{Courier},然后采用类似于中文字体的显示方法\courier,就可以正常的显示courier字体。

3)第4、5行定义了小一号字体大小,并在第八行规定了测试文字的字号大小为小一号。Latex中字体大小与WORD等字处理软件的规定方法不同(具体设置可以参考文献[10]),如果想规定字体字号大小与WORD一致,则需了解WORD中各字体大小的确切数值。表3列出了WORD中的字体编号大致数值,其单位为磅(pt)。

3 编译处理中文文档排版时应当注意

1)英文单词之间用空格隔开,因此LaTeX在处理英文的时候可以直接插入空格,但是在使用CJK或者Ctex时,由于使用的是中日韩文字习惯,字符之间不需要插入空格,因此直接插入空格是无效的,如果想插入空格,则可以插入‘~来代替,生成的PDF文件才会正常显示空格。

2)中文的书写习惯是首行缩进两个字符,可以使用\indent命令,如果想取消首行缩进,则可以使用\noindent命令。而在CJK和Ctex使用过程中,由于其是专门为中日韩字体设计,故已默认采用了首行缩进2个字符的设置。

3)对于使用XeLatex编译而言,有时第一次编译生成的PDF文档会显示不正常,因此需要编译2~3次,从而得到正常的结果。

4)XeLatex中全文欲使用某种字体,在\begin{document}之前插入\setmainfont{中文字体英文名称},例如\setmainfont{KaiTi},就可以通篇使用楷体文字。此方法只限于XeLatex系统中,CJK和Ctex宏包环境并不适用。

4 结束语

文章介绍了三种使用LaTeX编辑中文文本的实现方法。三种方法各有千秋,如果是发表一般的学术论文,对字体环境要求不高,建议读者使用CJK或者Ctex宏包,方便简单、实用快捷;如果是学位论文或者幻灯片等排版文档,文件各处字体设置不同并且要求比较严格,则推荐使用XeLatex的方法,往往能够得到比较满意的结果。对于LaTeX使用的其它编译技巧,可供参考文献和资料比较丰富,有兴趣的读者可以继续深入研究。

参考文献:

[1] 徐润章. latex系统的兼容性问题[J]. 应用科技, 2005(3): 53-54.

[2] Donald E.Knuth. The TEXBook[M]. Massachusetts:Addison-Wesley, 1986.

[3] Abrahams P W, Berry K, Hargreaves K A. TEX for the Impatient[M ]. Massachusetts:Addison-Wesley, 1990.

[4] 王勇, 姚萍, 王岚,等. LaTeX 与方正书版排版数学论文探讨[J]. 中国科技期刊研究, 2012, 23(6): 1036-1039.

[5] 罗振, 田丰, 孙小平,等. 基于LATEX的学位论文模板的设计与实现[J]. 沈阳航空工业学院学报, 2007 (6): 45-48.

[6] 刘海洋. LaTex入门[M]. 北京: 电子工业出版社, 2013.

[7] 李平. LATEX2e及常用宏包使用指南[M]. 北京: 清华大学出版社, 2004.

[8] ctex.org . ctex宏包说明[EB/OL]. (2011-3-11)[2015-06-03]. http://wenku.baidu.com /view/df9add02eff9aef8941e06b4.html.

[9] 雪宝贝_kang. 中英文字体对照ueditor添加字体[EB/OL].(2014-11-06)[2015-06-03]. http://www.cnblogs.com/snowbaby-kang/p/4079549.html.

[10] Mark Gates. LATEX quick reference[EB/OL]. (2010-11-11)[2015-06-03]. http://www.docin.com/p-650256177.html.