劉二鋼
摘要:文章以Windows操作系統(tǒng)為例,通過對(duì)LaTeX比較常用的幾種中文編輯方法進(jìn)行比對(duì)分析,系統(tǒng)地提出LaTeX編輯中文的解決辦法及各自優(yōu)缺點(diǎn),解決了國內(nèi)使用LaTeX進(jìn)行中文編輯排版時(shí)所遇到的困難和麻煩,使得LaTeX編輯中文變得更加容易輕松,具有較好的實(shí)用性。
關(guān)鍵詞:LaTeX;CJK;CteX;XeLatex;中文編輯
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 大學(xué)教授 Donald E.Knuth 研制的計(jì)算機(jī)排版軟件[1],能夠?qū)崿F(xiàn)文字格式和內(nèi)容的有效分離, 并具有非常強(qiáng)大的宏定義功能[2-3]。許多人利用TeX的宏功能進(jìn)行二次開發(fā),實(shí)現(xiàn)了大量的功能擴(kuò)展,比較著名的是美國數(shù)學(xué)學(xué)會(huì)推薦的非常適合于數(shù)學(xué)家使用的AMS-TEX[4]以及世界上最流行和使用最為廣泛的適合于一般文章、報(bào)告、書籍的LaTeX 系統(tǒng)。
LaTeX作為TeX 中的一種形式,其特色功能之一就是它的自動(dòng)編號(hào)功能, 文章、書籍的章、節(jié)、段落以及公式、圖表、參考文獻(xiàn)、頁碼等均可自動(dòng)編號(hào);另外,它的交叉引用功能, 使得論文內(nèi)的引用標(biāo)號(hào)可以隨著公式、圖表、參考文獻(xiàn)的增刪而自動(dòng)地作相應(yīng)的修改[5]。 尤其在數(shù)學(xué)論文格式方面,傳統(tǒng)的WORD以及WPS對(duì)于數(shù)學(xué)符號(hào)和公式的兼容性都不夠好,雖然易于編輯,但效果不盡如人意。相比較而言,由LaTeX編譯生成的PDF文檔,在字符質(zhì)量、排版功能和排印方面均勝一籌,尤其是被新版本LaTeX2e完善之后,現(xiàn)在已經(jīng)成為國際上數(shù)學(xué)、物理、計(jì)算機(jī)等科技領(lǐng)域?qū)I(yè)排版的事實(shí)標(biāo)準(zhǔn),其他領(lǐng)域(化學(xué)、生物、工程等)也有大量用戶[6]。
1 LaTeX編譯環(huán)境的搭建
LaTeX的書寫環(huán)境比較隨意,如同html文件一樣,甚至可以用記事本進(jìn)行書寫,只要保存為Tex擴(kuò)展名文件即可,比較常見的有WinEdt、UltraEdit、EditPlus等。但是對(duì)于不同的操作系統(tǒng),編譯系統(tǒng)則不盡相同,常見的編譯系統(tǒng)在Linux下是TeXLive,在Windows下則有MikTex,fpTeX等等。文章以Windows操作系統(tǒng)為例,介紹如何編譯LaTeX中文的使用辦法。
在Windows操作系統(tǒng)下,最好的LaTeX編寫環(huán)境是WinEdt,比較適合Windows使用習(xí)慣。另外由于需要安裝MikTex、XeLatex等TeX編譯器,PDF閱讀器,EPS圖片查看器以及加載所要的宏包,安裝軟件種類繁多,配置過程容易出錯(cuò),因此一般推薦安裝CTeX套裝。CTeX套裝是由中國科學(xué)院的吳凌云制作并維護(hù)的一個(gè)面向中文用戶的Windows系統(tǒng)下的發(fā)行版,也是中文LaTeX用戶最常用的發(fā)行版本,目前最新版本號(hào)為2.9.2。
CTeX有基本版、完全版兩個(gè)版本。對(duì)于一般用戶,建議使用完全版的CTeX套裝,這不僅避免了編譯時(shí)因缺少宏包還要臨時(shí)下載的問題,而且完全版中包含的諸多文檔資料對(duì)于用戶也很有用[6]。從http://www.ctex.org/CTeXDownload下載對(duì)應(yīng)的安裝文件之后,默認(rèn)安裝就可以正常使用LaTeX了。
2 使用LaTeX編譯中文文檔
LaTeX產(chǎn)生之初是由Leslie.Lamport設(shè)計(jì)的一個(gè)西文排版系統(tǒng),因此無論何種操作系統(tǒng)及編譯環(huán)境,對(duì)于中文文檔排版往往顯得力不從心。許多學(xué)者就LaTeX使用中文字符提出了各種方法及擴(kuò)展宏包。下面就比較常用的三種實(shí)現(xiàn)辦法進(jìn)行比對(duì)分析,方便廣大中文學(xué)者對(duì)于LaTeX的中文文檔排版使用。
2.1 使用CJK宏包
CJK宏包是由Werner.Lemberg開發(fā)的一個(gè)標(biāo)準(zhǔn)LaTeX 宏包,有些版本的TeX系統(tǒng)已經(jīng)包含了CJK宏包[7]。CJK含義本身就是中日韓三國英文國名的首字母縮寫。加載CJK宏包的方法很簡單,只需要在文章開始之前引言部分加入\usepackage{CJK},在需要使用漢字部分的時(shí)候加入:
就可以正常地生成中文排版系統(tǒng)。但是由于CJK宏包功能有限,并且后來有了功能更為強(qiáng)大的Ctex宏包,現(xiàn)已逐步被Ctex宏包所取代。
2.2 使用Ctex宏包
Ctex宏包提供了一個(gè)統(tǒng)一的中文LaTeX文件框架,底層支持CCT、CJK和XeCjk三種中文LaTeX系統(tǒng)[8]。對(duì)于CJK宏包來說,Ctex宏包功能能為強(qiáng)大,可以更為方便地設(shè)置中文環(huán)境。
在使用Ctex宏包過程中,可以像左側(cè)采用傳統(tǒng)方式加載Ctex宏包,也可以像右側(cè)采用更為流行的方法加載使用。無論采用哪種方法,都無需再加載CJK宏包,Ctex宏包會(huì)在\begin{document}和\end{document}之間自動(dòng)加入CJK環(huán)境,因而使用起來更加方便。二者的區(qū)別在于右側(cè)加載Ctex宏包的方式為文檔類Ctex宏包。文檔類Ctex宏包在使用時(shí)會(huì)自動(dòng)在頁眉右側(cè)處加載頁碼,默認(rèn)首行縮進(jìn)兩個(gè)字符,并將全體文字大小默認(rèn)設(shè)置為五號(hào)字號(hào)大小,等等。加載成功之后就可以方便的使用Ctex宏包來設(shè)置中文字符排版環(huán)境了。這里主要強(qiáng)調(diào)字體及字號(hào)兩個(gè)方面:
1)中文字體類型
對(duì)于一般的文獻(xiàn)而言,常用的中文字體就是宋體、楷書等比較常用的幾種,因此,Ctex兼容CJK宏包字體,只設(shè)置了六種常見的中文字體,具體設(shè)置方法可以參照下表:
2)中文字體字號(hào)
Ctex中,中文字體大小的設(shè)置方法是\zihao{<字號(hào)>},例如設(shè)置四號(hào)字為\zihao{4},小四號(hào)字為\zihao{-4},初號(hào)字體設(shè)置為\zihao{0},小初號(hào)字體設(shè)置為\zihao{-0}??晒┦褂玫淖煮w參數(shù)共16個(gè),從大到小依次是0、-0、1、-1、…、6、-6、7、8。英文字體大小會(huì)始終保持和中文字體一致。
對(duì)于前兩種編譯中文文檔方法,已經(jīng)可以設(shè)置出比較常用的中文字符環(huán)境,但無論是CJK還是Ctex宏包,對(duì)于中文字體和英文字體所加載的字體種類都比較有限,無法滿足更高要求下排版系統(tǒng)字體的需要。例如欲加載英文等寬courier字體或者在Windows7下比較有名的微軟雅黑字體,在LaTeX環(huán)境下編譯就無法成功,所以必須采用其它的方法。
2.3 使用XeLatex編譯
XeLatex是Tex的另外一種擴(kuò)展,其最大的特點(diǎn)就是支持Unicode。Unicode是一個(gè)統(tǒng)一的字符編碼,可以支持世界上絕大多數(shù)的字符環(huán)境。對(duì)于XeLatex的安裝,Windows下MikTex2.8或者Linux下的TeXLive2008之后的軟件版本都已經(jīng)默認(rèn)包含了XeLatex編譯環(huán)境,文章推薦安裝的CTeX套裝同樣也包含XeLatex編譯系統(tǒng)。
用XeLatex設(shè)置中文字符環(huán)境,首先應(yīng)了解本地操作系統(tǒng)安裝了哪些字體,并且還要知道中文字體所對(duì)應(yīng)的英文名稱。對(duì)于本地機(jī)器安裝的中文字體以及所對(duì)應(yīng)的英文名稱,可以采用下面的辦法:
在Windows下點(diǎn)擊開始菜單,在運(yùn)行處輸入cmd命令,進(jìn)入模擬DOS環(huán)境,在提示符下輸入fc-list命令,即可查看本地機(jī)器安裝的字體。如果只想查看本地機(jī)器安裝的中文字體,可以輸入fc-list :lang=zh-cn(注意list后面應(yīng)該加一個(gè)空格,否則會(huì)提示“文件名、目錄名或卷標(biāo)不合法”)。由于編碼的不同,顯示的結(jié)果中文部分將會(huì)是亂碼,可以采取將結(jié)果導(dǎo)入到文本文件或WORD文檔中,例如在命令行輸入如下命令:
得到本地操作系統(tǒng)安裝的中文字體及對(duì)應(yīng)的英文名稱后,就可以使用XeLatex編譯文件了。在安裝好CTeX套裝軟件之后,運(yùn)行WinEdt,點(diǎn)擊菜單TeX->PDF->XeLaTex,就可以編譯TeX文件。下面舉一個(gè)簡單的例子說明XeLatex的整個(gè)編譯過程。在WinEdt下新建一個(gè)文檔,輸入如下的代碼:
輸入之后用XeLatex編譯雖然可以通過,但生成的PDF文件中文字體呈現(xiàn)亂碼。主要原因是編碼類型不統(tǒng)一,沒有設(shè)置為Unicode編碼。此時(shí)應(yīng)將編寫的文件類型另存為UTF-8文件格式,這樣通過XeLatex編譯生成的PDF文件才能夠正常顯示字體。
對(duì)于上面的例子做下面幾點(diǎn)說明:
1)第3行處將微軟雅黑字體定義為yahei(也可以定義其它的標(biāo)識(shí)符),以后就可以直接輸入\yahei后接中文文字來顯示微軟雅黑文字。同樣的方法也可以處理其它中文文字,只需得到中文字體所對(duì)應(yīng)的英文名稱即可。
2)第2行處加入fontspec等幾個(gè)宏包,就可以中英文字符同時(shí)混排了。例如欲顯示courier字體,則可以在正文之前插入\newfontinstance{\courier}{Courier},然后采用類似于中文字體的顯示方法\courier,就可以正常的顯示courier字體。
3)第4、5行定義了小一號(hào)字體大小,并在第八行規(guī)定了測試文字的字號(hào)大小為小一號(hào)。Latex中字體大小與WORD等字處理軟件的規(guī)定方法不同(具體設(shè)置可以參考文獻(xiàn)[10]),如果想規(guī)定字體字號(hào)大小與WORD一致,則需了解WORD中各字體大小的確切數(shù)值。表3列出了WORD中的字體編號(hào)大致數(shù)值,其單位為磅(pt)。
3 編譯處理中文文檔排版時(shí)應(yīng)當(dāng)注意
1)英文單詞之間用空格隔開,因此LaTeX在處理英文的時(shí)候可以直接插入空格,但是在使用CJK或者Ctex時(shí),由于使用的是中日韓文字習(xí)慣,字符之間不需要插入空格,因此直接插入空格是無效的,如果想插入空格,則可以插入‘~來代替,生成的PDF文件才會(huì)正常顯示空格。
2)中文的書寫習(xí)慣是首行縮進(jìn)兩個(gè)字符,可以使用\indent命令,如果想取消首行縮進(jìn),則可以使用\noindent命令。而在CJK和Ctex使用過程中,由于其是專門為中日韓字體設(shè)計(jì),故已默認(rèn)采用了首行縮進(jìn)2個(gè)字符的設(shè)置。
3)對(duì)于使用XeLatex編譯而言,有時(shí)第一次編譯生成的PDF文檔會(huì)顯示不正常,因此需要編譯2~3次,從而得到正常的結(jié)果。
4)XeLatex中全文欲使用某種字體,在\begin{document}之前插入\setmainfont{中文字體英文名稱},例如\setmainfont{KaiTi},就可以通篇使用楷體文字。此方法只限于XeLatex系統(tǒng)中,CJK和Ctex宏包環(huán)境并不適用。
4 結(jié)束語
文章介紹了三種使用LaTeX編輯中文文本的實(shí)現(xiàn)方法。三種方法各有千秋,如果是發(fā)表一般的學(xué)術(shù)論文,對(duì)字體環(huán)境要求不高,建議讀者使用CJK或者Ctex宏包,方便簡單、實(shí)用快捷;如果是學(xué)位論文或者幻燈片等排版文檔,文件各處字體設(shè)置不同并且要求比較嚴(yán)格,則推薦使用XeLatex的方法,往往能夠得到比較滿意的結(jié)果。對(duì)于LaTeX使用的其它編譯技巧,可供參考文獻(xiàn)和資料比較豐富,有興趣的讀者可以繼續(xù)深入研究。
參考文獻(xiàn):
[1] 徐潤章. latex系統(tǒng)的兼容性問題[J]. 應(yīng)用科技, 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 與方正書版排版數(shù)學(xué)論文探討[J]. 中國科技期刊研究, 2012, 23(6): 1036-1039.
[5] 羅振, 田豐, 孫小平,等. 基于LATEX的學(xué)位論文模板的設(shè)計(jì)與實(shí)現(xiàn)[J]. 沈陽航空工業(yè)學(xué)院學(xué)報(bào), 2007 (6): 45-48.
[6] 劉海洋. LaTex入門[M]. 北京: 電子工業(yè)出版社, 2013.
[7] 李平. LATEX2e及常用宏包使用指南[M]. 北京: 清華大學(xué)出版社, 2004.
[8] ctex.org . ctex宏包說明[EB/OL]. (2011-3-11)[2015-06-03]. http://wenku.baidu.com /view/df9add02eff9aef8941e06b4.html.
[9] 雪寶貝_kang. 中英文字體對(duì)照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.