※ 引述《laicc0225 (laicc)》之銘言:
: 各位tex玩家好....我想問一下怎樣可以排版日文呢??
: 我想以tex的功能應該可以吧...最好是同時能排版日文及中文和英文這三種...
: 需不需要額外抓其他套件呢??
: 我目前在chitex測試是無法顯示出來...但是不會發生error...
: 另外winedt(不確定正確名稱)我這一兩天在適應中...不確定有沒有...
: 所以請版上的人幫忙回答一下我的問題...謝謝....
哎﹐我挖一下墳啊﹐這個問題原 po 和底下的推文都沒有解決﹐我就稍微詳細地說一下
好了。
TeX 本身隻有 8 位(最早是 7 位﹐後來擴展到 8 位)﹐所以原生的 TeX (通常稱為
Knuth TeX)是不能直接支持除掉英文之外的字符的。所以﹐如果想要在 TeX 文檔中輸
出非英文字符﹐就必須做兩件事情﹕
1. 選擇合適的編碼(比如中國大陸地區的 GBK, 中國台灣地區的 Big5)讓 TeX 能讀懂
2. 選擇包含有所需字符的字體
對於非東亞文字﹐這其實也算不上復雜。畢竟拼音文字也就那麼一些字母﹐多少不會超過
2**8=256 個字符。所以對於非東亞文字來說﹐這個工作基本上由 inputenc 等幾個套件
就能解決了。
但是東亞文字太多﹐比如漢語常用字就有三千多﹐遠遠超出了 2**8 的范疇﹐更別說還有
不少不常用的字了。
因此我們陷入了困境﹐而走出困境唯有兩個辦法﹕
1. 讓 TeX 能讀懂更多的字符
2. 把字體文件分為若幹區塊﹐每個區塊隻有 256 個字符﹐再讓 TeX 懂的如何尋找區塊
和區塊中間的字符
Knuth 老爹當時的建議是采用第二個方法(畢竟它不希望自己的 TeX 做改動)﹐當時中
文 TeX 社區使用的也就是這個方法。比如 CCT (中科院張林波)﹐又比如天元(華東
師范大學陳志傑)﹐以及各位可能很熟悉的 CJK (德國人)。
這種解決方案我們用了很多年﹐各位想必對他們也有無數的怨念。弊端是很明顯的﹕
* 可能需要在編譯之前進行預處理
* 一旦編譯出錯﹐出錯信息變得完全不可讀
* 字體分區安裝極為復雜
以上是中文的情況﹐實際上日語韓語泰國語的情況也大致相仿。
CCT 和天元我不熟悉﹐但是 CJK 還有一個並不顯而易見的弊端﹕
CJK 並沒有將編碼和語言區分開來(比如使用 GBK 就是中文簡體﹐使用 Big5 就是中文
正體)﹐這樣一來﹐一旦指定編碼﹐語言也就指定了。於是﹐如果有人像原 Po 那樣希望
同時排版中文和日文﹐CJK 就隻能幹瞪眼了。
Knuth 老爹也不是萬能的﹐這些弊端他並沒有完全預見到──畢竟他不適用這些文字。索
性﹐終於有 TeX 引擎嘗試走第一條路﹐他們是 XeTeX 和 LuaTeX. 這兩個引擎都直接支
持 Unicode 編碼﹐並能夠直接使用系統中的字體文件。於是之前說的那些弊端都消失。