lins05
mysnowls@163.com
August 6, 2011
摘要
Linux下用LaTeX很方便,但是要解決中文的問題就不怎么方便,因 為TeX的字體系統很難自己解決。
Windows下可以使用配置好的CTeX套裝1 , 現在本文中就簡介如何在Linux下配置CTeX,以方便寫中文文檔。
1 老的方法
1.1 缺乏可用的字體
1.2 默認的格式不符合中文排版要求
1.3 不能滿足中文的其他要求
2 CTeX和xeCJK
2.1 字體
2.2 中文版式
2.3 CTeX和xeCJK的關系
3 簡單的例子
4 注意事項
4.1 如何安裝
4.2 推薦字體
4.3 其他設置
LATEX的CJK宏包,經過實踐證明,確實是一個可行且實用的中文LATEX解決方 案。但是它有幾點不足:
LATEX下的中文字體很少,Linux下的字體更少。因為TEX的字體系統比較復雜,使 得用戶想自己生成字體非難困難,門檻很高,并且管理不方便。
CJK宏包僅僅解決了中文字體的問題,但是它默認的格式是英文的排版方式(CJK的 作者是德國人)。
因此,一般用戶都需要自己設置種種版式:首先縮進,行距和段距。中英文混排 時的字距,等等。
比如生成目錄時,中文文檔應該叫“目錄”,而不是”CONTENTS”。類似的還有“ 附錄”、“表格索引”等等。
CTeX宏包和xeCJK宏包的組合相當完美的解決了這些問題。
xeCJK宏包所使用的XeTeX引擎,是從MacOS移植到Linux和Windows上的。它最大 的特點是從底層就具備對unicode的支持,以及可以直接調用系統中已有的字 體。
這意味著將LaTeX用戶從和字體相關的一大推問題中解決出來了。只要系統中安裝 了中文字體,那么使用XeTeX就能使用這些字體。
xeCJK是必須使用XeTeX引擎的,這也是為什么標題叫做CTeX + xeCJK + XeTeX的原因。
CTeX的開發者們是值得所有的LaTeX用戶感激的。使用CTeX的各個documentclass, 我們就無須再手動地設置版式,因為CTeX的默認設置就是最適合中文文檔的:行首 縮進兩個漢字;行距和段距的適當調整,中英文的混排時的字距,都是適合中文版式 的。
此外,CTeX將其他應該為中文文檔考慮的地方大都包括了進去:”CONTENTS”改為 了“目錄”,”Index”改為了”索引“,等等。
二者都是宏包,但是,CTeX是一個上層的中文LaTeX宏包。它的下層是可選的,可 以支持xeCJK、CJK,甚至更老的CCT宏包。對于不同的下層宏包它進行不同的設 置。xeCJK完全可以脫離CTeX使用,但是這樣你雖然不用擔心字體,同樣也不能享 受到CTeX的中文版式。
例子總是最直觀的。我們以一個最簡單的例子來說明。
%---------------------------------------
\documentclass[a4paper]{article}
\usepackage[adobefonts]{ctex}
\setCJKmainfont{SimSun}
%---------------------------------------
\author{小明}
\title{記一次春游}
\date{\today}
%---------------------------------------
\begin{document}
\pagestyle{plain}
\maketitle
%---------------------------------------
昨天,老師帶我們三年級二班的小朋友們全體去郊外春游。我非常高興。
們在郊外看到了\textbf{老虎、獅子和熊貓}。
長大了要\textsl{保護動物}。
天,老師要教我們學習\LaTeX 了,大家都非常激動。
\end{document}
Figure 1: 小明的日記
Linux下安裝這三者的最方便的方法是安裝texlive系列。texlive是一整套TEX工具和引 擎的集合,包括了LaTeX等種種工具和一些相關的程序、宏包,不同的發行版里會把 整個texlive分為不同的軟件包,諸如texlive-xetex、texlive-xecjk、texlive-ctex。用包 管理軟件進行搜索,不難找到應該安裝的軟件包。
當然另一種方式是使用texlive的安裝DVD或者在線安裝 工具。筆者使用的slackware發行版里沒有提供texlive的軟件 包2 ,因此是從中科 大的CTAN鏡像3 下 載的texlive2011DVD進行安裝的。具體的安裝過程可以讀光盤里的README文 件。
由于texlive是一個TeX軟件的大集合。因此它有一個專門的包管理程序:tlmgr。 這個程序類似debian下的apt-get,提供了搜索、查詢、安裝、卸載、升級各個tex軟件 包的功能。在DVD安裝版中有這個軟件,一般的發行版應該不會提供這個程 序4 。
一般使用的字體有三套。
一是在Linux下常用的文泉驛字體,但它不適合寫正式的文檔。
二是在網上下載Adobe的四套字體,分別是宋體、仿宋、黑體和楷體。
三是可以拷貝Window下的字體。但是這涉及到版權問題。如果確實想用,可以在 百度上搜索“方正楷體”、“方正宋體”,等等。
使用字體的方法如下:
先拷貝字體到/usr/share/fonts/下的相應的子目錄中,然后運行"fc-cache"更 新系統的字體緩存。
在xeCJK中,設置主字體是使用\setCJKmainfont命令(因為我們的CTeX會調 用xeCJK,因此可以使用xeCJK中的命令)。
具體的字體名字可以用"fc-list :zh-cn"命令來查看。
1 如果你的系統中沒有CTeX要求的全套六種字 體5 , 那么,一定要在\usepackage{ctex}的選項中加上adobefonts這一條。
這樣一來CTeX會用相應的Adobe字體去代替它要求的六套字體。不然有時會出現 找不到字體的現象,尤其是使用特殊字體的時候,比如在verbtim環境中。
2 一般情況下,中文文檔中是不使用斜體的。因此在CTeX調用xeCJK時,默認是 不使用斜體的,所以你就算在文檔中使用\textsl{},最終也不會產生任何斜體效 果。
如果你真的要用,就要修 改/ctex/engine/ctex-xecjk-engine.def6 中 的一行:
\RequirePackage[BoldFont,normalindentfirst]{xeCJK}
改為:
\RequirePackage[BoldFont,slantfont,normalindentfirst]{xeCJK}
3 使用CTeX的兩種方法
第一種是直接使用CTeX的文檔類。
\documentclass[adobefonts]{ctexart}
第二種是使用CTeX包。
\usepackage[adobefonts]{ctex}
二者的區別是:當通過\usepackage來使用CTeX包時,產生的仍然 是”CONTENTS”、”INDEX”,而不是“目錄”、“索引”。
當然,如果要用其他類作為文檔類,就必須使用第二種方式了,最典型就是 用beamer類做幻燈片的時候了。
這時,如果要使用中文的“目錄”、“摘要”等樣式,可以使用這兩條命 令:
\renewcommand*\contentsname{目錄}
\renewcommand*\abstractname{摘要}
還有一個更折騰的方法。修改一下ctex/ctex.sty文件,在其中添加一 句
\input{ctex-caption.def}
這樣就一直保持中文的名稱了。