這是由 Dominique Unruh 所發展的 LaTeX 巨集套件。這個巨集套件是用於 UTF-8 編碼的 LaTeX 文稿的處理,目前還在發展中,但一般情況已經可以拿來實用了。這樣不管是中、日、韓文的一些惱人問題,就可以因使用 UTF-8 編碼而獲得初步的解決。
最新版本的 ucs package 可以先參考他的網頁的說明:
http://www.unruh.de/DniQ/latex/unicode/
這其實不算是什麼安裝,只是把壓縮檔下載後,找個目錄把他解壓縮罷了,這樣雖然很不正式,但對於不熟悉 LaTeX 系統結構的朋友,無疑是最方便簡單的方法。
http://www.unruh.de/DniQ/latex/unicode/unicode.tgz
下載後在 kpathsea 函式庫找得到的路徑下解開,就算是安裝完成了:
cd /usr/share/texmf/tex/latex [Windows 系統,請找相對的路徑] tar zxvf unicode.tgz [如果下載的是 zip 壓縮檔的話:unzip unicode.zip] texhash 或 mktexlsr [在 MikTeX 的話,改執行 initexmf -u]
但我們還沒有字型可以用,要在下一節的字型處理完成後才能真正拿來實際使用。
我們實際上並沒有 free 的 Unicode 全字型,這裡使用 Bitstream 公司以往供人自由下載的 Cyberbit.ttf 為例來說明,使用時請注意這個字型的使用授權說明:
ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/
ftp://cle.linux.org.tw/pub2/fonts/ttf/unicode/bitstream/
字型下載後置於以下的目錄下(請依 TeX 安裝目錄及 OS 調整):
/usr/share/texmf/fonts/truetype/CJK
並把他改成小寫字母。對於這個字型的處理,我們主要是要產生:
*.tfm TeX 系統的字型描述資料。 *.enc PDFLaTeX 取字時的字型編碼對應資料。 *.map PDFLaTeX 取字時的對照表。
為免解釋上的煩瑣,這裡使用 sh script 來產生,也可以減少打字時的錯誤:
http://edt1023.sayya.org/tex/ipeucs/cyberb.sh
請注意,他只針對 cyberbit.ttf 處理。如果是在 Windows 系統的話,可能會需要 unxtools3.1來處理(並未經過測試,有可能需要小修改)。而且不管是哪一種 OS,他需要 ttf2tfm 這個工具。這個處理已沿用 CJK package 及 DVIPDFM
3.2 的字型使用名稱,因此在這些環境、工具裡頭也可以使用。他的使用很簡單,只要把 cyberb.sh 和 cyberbit.ttf 置於同一個目錄下,執行 cyberb.sh 即可,執行完畢會產生 tfm 及 enc 兩個子目錄和一個 cyberb.map 檔,他要置放的目錄如下(如無此目錄請自行建立):
tfm /usr/share/texmf/fonts/tfm/CJK/cyberbenc /usr/share/texmf/pdftex/enccyberb.map /usr/share/texmf/pdftex/config/cyberb.map
最後在 pdftex.cfg 中加入一行:
map +cyberb.map
由於 Ipe 使用的是 PDFLaTeX,我們現在想直接就使用 TTF 字型,這樣就不必另外去製作 Type1 字型,多佔硬碟空間。因此請先下載這個 macro:
http://ipe.compgeom.org/ttfucs.sty
把他置於:
/usr/share/texmf/tex/latex/ucs
目錄下即可,然後執行 texhash 或 Windows 系統的話,執行 initexmf -u 就大功告成了!這樣 Ipe 的多國語文就可以運作了。當然,這些 macro 必需引用才能正常運作,在 Ipe 可以在 [Edit]、[Document properties],這會跳出一個視窗,可以填入 pdf 檔的一些檔頭資料及 LaTeX preamble 區要用到的 macro。這裡我們要輸入的是:
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage{ttfucs}
\DeclareTruetypeFont{cyberb}
請參考圖 3.1。這樣在 Ipe 裡頭輸入 CJK 文字,在輸出 eps/pdf 檔時就會自動呼叫 pdflatex 來編譯排版,非 ASCII 的字元就直接嵌入 cyberbit.ttf 字型。
這裡我們看一個 Ipe 編輯的實際例子,請參考圖 3.2,輸出的 pdf 檔,請參考:
http://edt1023.sayya.org/tex/ipeucs/ipe-cjk.pdf
以上各節,除了安裝及輸入 LaTeX preamble 區的一些必要資訊外,完全沒有直接接觸到 LaTeX 的運作,那麼我們一般使用 LaTeX 文稿,也可以利用到嗎?答案是肯定的。這時我們將無需其他的多國語文系統的幫助,可以依一般英文語系的 LaTeX 文稿及編譯方式來運作。
我們來看一個實際 LaTeX 文稿的例子:
他的編譯方法就和一般的英文語系的 LaTeX 文稿一樣:
latex UTF8-ucs.tex dvipdfmx UTF8-ucs.dvi 或使用 pdflatex pdflatex UTF8-ucs.tex
他編譯後的 pdf 輸出檔及原始文稿請參考:
http://edt1023.sayya.org/tex/ipeucs/UTF8-ucs.tex
http://edt1023.sayya.org/tex/ipeucs/UTF8-ucs.pdf
那麼,這些字型也可以用在 CJK package 嗎?可以的。由於製作字型描述檔時就使用了 LaTeX CJK 的預設命名方式,而 DVIPDFM
也是使用相同的命名方式,在他的 cid-x.map 檔裡頭就已經預設設定好了,所以,可以直接使用。這也是字型命名統一(標準化、規格化)的最大好處,其他同類的工具也可以直接引用。
這裡,我們舉一個 LaTeX CJK 的例子:
雖然我們使用的是 CJK 環境,但由於這是 UTF-8 編碼的文稿,我們不能使用 bg5latex 來編譯,而是和一般英文語系的文稿一樣的編譯:
latex cjk-utf8.tex dvipdfmx cjk-utf8.dvi 或者使用 pdflatex 一次完成 pdflatex cjk-utf8.tex
由於我們並沒有製作 Type1 字型,而 dvips 目前尚不支援 TTF 字型,所以這裡我們無法使用 dvips 去編譯。
如果是使用 CJK package 的話,他有注意到 moving arguments 的問題(請參考第 4 章,第 4.2 節的解釋),所以比較不容易發生這類問題。另外,使用 pdflatex 和 dvipdfmx 的不同在於是否使用 subfont 的機制,dvipdfmx 會使用 subfont 的機制,有用到的字才會嵌入,因此編譯出來的 pdf 檔會比較小,而且 dvipdfmx 製作出來的 pdf 檔有索引的機制。但目前 Ipe 則只能和 pdflatex 配合使用。編譯好的 pdf 檔及其原始文稿可以在以下網站下載:
http://edt1023.sayya.org/tex/ipeucs/cjk-utf8.tex
http://edt1023.sayya.org/tex/ipeucs/cjk-utf8.pdf
Compiled by Edward G.J. Lee (2004-05-06)