XeTeX:解決 LaTeX 惱人的中文字型問題

相信大家或多或少都有聽過有名的排版軟體 LaTeX ,除了學習曲線比較陡以外,其實我一直以來都還算用得愉快,畢竟沒使用到中文。直到最近研究一下畢業論文的格式,在某些頁面必須用中文來寫,沒想到開始研究之後,才發現比想像中還困難…

簡單 LaTeX 環境設定

以前光是要安裝 LaTeX 的環境就是非常艱難的步驟,所以如果你對 LaTeX 完全不瞭解而隨意 Google 的話,到最後可能就是亂裝一通(光是 teTeX, xeTeX, chiTeX, gwTeX, *TeX, vim-latex, etc. 就夠你頭痛了)。其實隨著時間發展至今,LaTeX 的安裝已經非常簡單了,我們現在只需要:

  1. 執行環境:Tex Live 2010 (幾乎支援各種主流作業系統)
  2. 編輯器:Textshop, Textmate, VIM, etc. (只要可以編輯文字的都可)

如果是 Mac 使用者,請直接安裝 MacTex 即可,同時包含了執行環境、編輯器。
Tex Live 幾乎是包山包海了,就連這篇文章會提到的 XeTeX 也在其中。會有缺少的就只有套件而已(Package),不過這個 Tex Live 也幫你準備好了,可以透過 Tex Live Utility 直接新增移除套件。

詳細的安裝說明可以參考這裡,其他也有許多網站有提供教學。

繼續往下看之前,請先確保你的執行環境已經架設完成,並且安裝好基本所需的套件(看編譯的錯誤訊息就可以知道少什麼了)。

LaTeX 的中文解決方案

LaTeX 上有個套件,叫做 CJK(Chinese/Japanese/Korean),是個德國人寫的(汗),還是個音樂家(汗)。這個套件的主要目的就是解決中日韓的字型問題。

直接拿個範例來看:

1 2 3 4 5 6 7 8 9
\[documentclass](http://www.golatex.de/wiki/index.php?title=%5Cdocumentclass)[12pt]{article} \[usepackage](http://www.golatex.de/wiki/index.php?title=%5Cusepackage)[encapsulated]{CJK}% 1. Dec. 2009更新:使用[encapsulate]才是正確的用法 \begin{document}

\begin{CJK}{UTF8}{bsmi

}% 開始 CJK 環境,設定編碼,設定字體
正體中文測試。This is a test.
\end{CJK}% 結束 CJK 環境

\end{document}

接著進行編譯動作(最古老而典型的編譯方式):

latex cjk.tex   # 輸出 *.dvi (DeVice Independent) dvips cjk.dvi   # 輸出 *.ps (PostScript) ps2pdf cjk.ps # 輸出最終的 *.pdf
感覺上的確很輕鬆就可以輸出我們想要的中文字,但是當你想要使用 CJK 內建並不支援的字型,事情就不再這麼簡單…(至少在 MacTeX 環境下不簡單)假設我們要新增「新楷體」這個字型,我們可以到這裡[下載](ftp://ftp.twaren.net/local-distfiles/tex/cjk/fonts/)字型套件,然後依照這個網站的步驟,安裝「新楷體」。

如何透過 CJK 輸出中文不是這篇的主題,也就是因為不管我怎麼設定,就是抓不到安裝好的新楷體,於是我決定尋求第二個解決方案:XeTex。

XeTeX:無痛切換任何作業系統已有的字型

雖然 CJK 是原生的套件,但是系統明明已經有個字型卻還要額外安裝,實在是會讓用習慣 Word 的人百思不得其解,XeTeX 就是因為這個原因而誕生的。它可以自動幫你處理系統原有的 *.ttf 字型轉換,事實上,你也感覺不到它在幫你轉換,讓我們來看個例子就懂:(此範例參考自,以及快速上手教學)

1 2 3 4 5 6 7 8 9 10 11 12 13
\[documentclass](http://www.golatex.de/wiki/index.php?title=%5Cdocumentclass){article} \[usepackage](http://www.golatex.de/wiki/index.php?title=%5Cusepackage){fontspec} \setromanfont{LiHei Pro}% 儷黑Pro \newfontfamily{\K}{BiauKai} \setmonofont[Scale=0.8]{Courier New}% 等寬字型 \XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip = 0pt plus 1pt

\begin{document}

在Mac下的XeTeX裡寫中文~{\K 標楷體}~儷黑體

\end{document}

既然換了 XeTeX ,編譯器當然也要隨之更改:

xelatex cjk.tex   # 直接輸出最終的 *.pdf
## 如何從現有使用 CJK 的範本修改至 XeTeX 所支援的範本?

還是有許多範本就是透過 CJK 來編寫,但是既然設定如此麻煩,又不容易編過,有沒有辦法輕鬆的轉換成 XeTeX 呢?在下一篇文章,我將會用台大論文範本來示範如何修改。