2012年10月22日 星期一

在 LyX 中使用本機的中文字型

之前介紹使用 LyX 製作中文文件時,如果沒有特別安裝字型,只使用 LaTeX-CJK 的字型的話,就只有兩種中文字體 (bsmi, bkai) 可以選擇。
如果想要直接使用自己電腦上已有的中文字體的話,那該怎麼辦呢?

這時候就可以用 XeTeX 了。

我本來以為在 LyX 中使用 XeTeX 很麻煩,但這幾天試了一下,發現其實很簡單。
以下我以在 Linux (Ubuntu 12.04) 環境為例,從安裝字體開始,逐一解釋我的步驟。

安裝中文字體

在 Linux 中要安裝中文字體,可以安裝 cwTTF 系列字體。我是從這個專案網站下載 5 個 .ttf 的檔案,點開後 (如圖1), 按右下角的「Install」,即可將字體安裝到 ~/.fonts 目錄下。
我總共安裝了「明體、楷體、黑體、圓體、仿宋體」五種中文字體。
圖 1.  Ubuntu 內的字體瀏覽器
注意: 當 LyX 內要指定中文字體名稱時,要使用如圖1 右上角 Name: 後面接的名稱,而不是 ~/.fonts 內的檔案名稱!

LyX 文件中的設定


接著,開啟 LyX,製作一個新文件。開啟 Document > Settings ... 選項(如圖2), 把第一格 「Use non-TeX fonts...」這個選項勾選後,底下字型地方就只剩下 3 個選項可以選擇了。這裡就可以設定你想要使用的中文字體。例如圖2中:

  • Roman (內文字體), 設定用 明體 (字體名稱是 cwTeX Q Ming)
  • Sans Serif (無襯線字體, 通常是標題用的字體),  設定使用黑體 (字體名稱是 cwTeX Q Hei)
  • Typewriter (打字機體, 通常用在程式碼或是電腦命令的字體), 設定使用圓體 (字體名稱是 cwTeX Q Yuan).

圖 2. Document Settings 內的字型設定
設定完之後,再到 LaTeX Preamble 選項(如圖3)。這裡要加兩個命令才能夠正確斷字。
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt

另外, 還可以加一個自己喜歡字體的設定,這樣在更換字體的時候比較快速。
\newfontfamily{\myfont}{cwTeX Q Fangsong}


圖 3. LaTeX Preamble 的設定


LyX 本文文件

接著,就可以開始按照正常方法輸入中文文件了。這時候可以完全不用管字體要設定什麼,中文字體會按照英文文件字體通則:
    標題使用 Sans Serif; 內文使用 Roman; 程式碼 Code 使用 Typewritter 
的方式自動幫你代換前面設定的字體。
因此,文件按照一般方式撰寫即可,不用管字體設定。

我貼了一份文件(如圖4),中間的一段「如果明天舉行 ... 」我設定改用我自己的字體,這裡就需要使用插入原始碼的功能插入自己設定的字體名稱。
最後一行「全文網址:退出歐盟 ... 」這行我指定為 LyX-Code,用來驗證字體會不會變成我設定的圓體。

圖 4. 文章本文

LyX 本文文件

進行編譯之前,需要更換一下方式,不能夠直接按 Ctrl-R 的方式觀看編譯結果。需要改用 XeTeX 的編譯器,如圖5. 

圖 5. 更換編譯器
編譯後,就可以看到成果啦!(如下圖)
從這裡就可以看出來,標題(包括 Section 的標題)都是黑體;中間一段我改用 \myfont 的部份的確換成了仿宋體。而最底下 LyX-Code 的部份,也使用了圓體。


結論

改用 XeTeX 來編譯有許多中文字體的中文文件,的確簡單多了!
只不過目前不能透過按下 Ctrl-R 或是 Ctrl-Shift-R 的快速鍵直接編譯後預覽,實在有點麻煩。
不過這無傷大雅。

我個人覺得,如果一開始寫中文文件使用 LaTeX-CJK, 全部都用明體字,等到文件完成之後,改一下字體換成 XeTeX 方式編譯,也是一下子就可以轉換好的。

難怪 XeTeX 近年來受到許多使用者的喜愛了。

補充

我發現了在 LyX 中可以直接按 Ctrl-R 預覽 XeTeX 文件的方法了。很簡單,開啟 Document > Settings... 選項,選擇 Output, 將 Default Output Format 改成 PDF (XeTeX) 就可以了,如下圖。
這個設定會跟隨 .lyx 文件一起儲存。因此我也順便修正了範例檔,這樣使用起來就更方便了!




下載範例檔案 XeTeX_Example.lyx

參考網站

2013/9/28 註

此篇沒有考慮中英文混合時的編排問題,如果需要中、英文混合的文件,建議使用 xeCJK 套件較佳。請參考新的文章: 在 LyX 中設定 xeCJK 使用正體中文字型

沒有留言:

張貼留言