LGJ Notes

蒙古大夫 2.0。 這裡紀錄的都不是我的專業,我的專業就是不專業。別傻了,什麼是專業?

« 抗議 Ubuntu team 的不當做法 | Main | TeXmaker 1.6.1 的中文界面 »

LyX 和 LaTeX CJK 的配合
2007/08/11,00:38 :: 點閱次數 (11289)
在〈LyX 和 XeLaTeX 配合〉一文中,我們說明了使用字型比較方便的 XeTeX 系統和 LyX 圖形界面的配合。但是,如果你的文件需要其他方面的配合,例如:轉換成 HTML 網頁或轉換成 OO.o*.odt 的格式,則由於 LaTeX CJK 存在時間較久,相關的支援會比較多,這時使用 LaTeX CJK 可能比較方便。


LyX 1.5 已經內建支援 LaTeX CJK

在 LyX 1.5.x 版開始,就直接的內建支援 LaTeX CJK 了。也就是說文件編碼如果是選在 UTF8(請注意,是大寫,而不是小寫),那麼這個文件將會自動插入 LaTeX CJK 的 package 宣告及整個文件將會包在 CJK UTF8 環境內。不過,這個動作是寫死在程式碼內,完全無法去更動,而且他並沒有指定所使用的字型,所以,沒有其他的補充動作的話,那將會無法使用。

LaTeX CJK 字型的安裝

因此,要讓 LyX 能和 LaTeX CJK 配合,首先就是要讓 LaTeX CJK 能正常運作。如果是使用 TeX Live 2007 的話,那麼他預設已經安裝好一套中文字型,繁體的字型名是:bsmi,簡體的字型名是:gbsn。如果還需要其他的字型,可以參考〈替 LaTeX CJK 新增字型〉一文的說明。現成已經轉換成 Type 1 字型,可以參考:

ftp://cle.linux.org.tw/tex/cjk/fonts

在 CLE ftp 上的字型 tarball,解開後有個 install.sh 可以用來安裝,uninstall.sh 可以用來解除安裝。在進行下文的動作前,請先確定你的 LaTeX CJK 及所安裝的字型是可以正確執行的。

LyX 指定編碼及字型

接下來,我們來看看 LyX 要如何配合 LaTeX CJK 已經安裝好的字型。首先我們先指定文件編碼:[Document] => [Settings...] => [Language],Encoding 指定大寫的 UTF8:

LyX CJK 編碼設定

然後,由於 LyX 並沒有指定字型,所以,我們得在 preamble 區給他指定字型(這裡以 TeX Live 2007 的 bsmi 為例):

LyX CJK 字型設定

接著我們來試試看一篇簡單的文稿:

LyX CJK 實例

預覽可以由功能表 [View] 來指定,也可以按 toolbar(ViewUpdate) 上的 View PDF(pdflatex) 來預覽,LyX 預設使用的 PDF Viewer 是 kpdf(這是可以更改設定的):

LyX PDF 預覽(一)

LyX PDF 預覽(二)

要真正輸出 pdf 檔,要由 [file] => [Export] 來輸出。

LyX PDF 輸出

和 TeX4ht 的配合

由於 TeX4ht 支援 LaTeX CJK,但問題出在字型,這個部份請參考〈給 TeX4ht 使用的字型〉一文的說明,來安裝好所要使用的中文字型。

這裡只介紹輸出 HTML 及 OO.o *.odt。HTML 應該是沒有問題,由 [File] => [Export] => [HTML] 就可以輸出了,但他的輸出是放在 xxxx.html.LyXconv 子目錄下(xxxx 是所處理的檔案名。輸出 OO.o 的格式,則選 [OpenDocument]。

這裡要注意的是,所產生的 odt,他裡頭並沒有指定正確的中文字型,你需要由 OO.o 開啟後去指定字型,才能正確顯示。另外,LyX 在轉換的過程預設是使用 oolatex 這個指令,但是 TeX Live 2007 並沒有附上這個指令,解決的方式是下載 tex4ht-all.zip 解開後,只取他的 oolatex 可執行檔,置於和 latex 指令相同的目錄下即可。

另一種方式是更改 ~/.lyx/preferences,加入以下的內容:

\converter "latex" "odt" "mk4ht oolatex $$i" "latex"
以下是所輸出的 HTML 及 odt 的結果:

LyX HTML 快照

LyX OO.o 快照

迴響

Comment Icon LyX 1.5.x 與 UTF-16 surrogate pair

謝謝詳細的解說。

唯一美中不足的是,如你所述,LyX 目前把 \usepackage{CJK} 指令寫死在程式裡 (hard-coded),使得更好用的模式 \usepackage(CJKutf8} 無法使用。這在 pdflatex 編排流程中,編出來的 pdf 中文會是私碼,無法拷貝、檢索內容。不過,可以用 dvipdfm 編排流程。在 TeXLive2007 裝設環境下,這會使用 dvipdfmx,可以解決上述的問題。

另外,目前 LyX 1.5.2 還無法正確處理用到 UTF-16 surrogate pair 的字 (位於 BMP 以外的中文字),雖然 LaTeX CJK 可以處理。例如客家話裏意思是「我」的「亻厓」字。

http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=2028E&useutf8=false

謝謝介紹了 Han Nom 字型,可以解決許多客家話裏的用字。我打算將之與 nsung 合用,將 nsung 沒有的字,以 han nom 替代。

Posted by: npchen at 2007/10/22, 10:52
Comment Icon

> 例如客家話裏意思是「我」的「亻厓」字。
這應該不是問題,xelatex/CJK 都能夠處理。會有問題是字型有沒有這個字的問題,LyX 本身是可以處理的。

Posted by: LGJ at 2007/10/23, 00:51
 
Accessible and Valid XHTML 1.0 Strict and CSS Powered by BS2 Blog