Re: [問題] 請問一下有沒有tex哪一版支援日文編排呢??

看板LaTeX (論文排版)作者 (Ch'enMeng)時間11年前 (2014/01/01 11:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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 編碼﹐並能夠直接使用系統中的字體文件。於是之前說的那些弊端都消失。 ----------------------- 我們回到中日文混排上來 ----------------------- 前面說了﹐要讓 TeX 排除東亞文字﹐一是要讓 TeX 能認識相應編碼﹐二是要選擇合適的 字體。編碼問題引擎已經幫我們解決﹐一個 Unicode 編碼能覆蓋所有東亞文字。剩下的 就是解決字體問題。 前文說過﹐XeTeX 和 LuaTeX 都能直接調用系統字體。於是就有人開發了相關套件 * xeCJK for XeTeX * LuaTeX-ja for LuaTeX 我們能使用這些套件方便地切換字體。於是剩下的工作就是為他們挑選合適的字體了。 簡體中文 Windows 系統下安裝的中易宋體(SimSun.ttf)內就包含有日文字符﹐因此我 們選用這個字體即可(正體中文系統我沒有使用過﹐所以很抱歉我不能給出一個直接的 例子)。 這是 XeTeX + LaTeX + xeCJK 的一個例子﹕ \documentclass{minimal} \usepackage{xeCJK} \setCJKmainfont{SimSun} \begin{document} 這裡是中文。 □□□日本□ \end{document} 【抱歉﹐日語假名貌似顯示不出來】 然而﹐xeCJK 是中國大陸的孫文昌教授開發的(現在的維護者是劉海洋和李清)﹐他們對 日語並不太了解。所以有關日語的禁則、標點壓縮等工作﹐xeCJK 做得並不太好。所以﹐ 如果要排版日語﹐我更推薦日本 TeX 社區的 LuaTeX-ja. 不過因為這個套件是基於 LuaTeX 的﹐而 LuaTeX 在 Windows 系統下運行非常緩慢(字體太多的緣故)﹐所以請慎 重使用。 \documentclass{minimal} \usepackage{luatexja-fontspec} \setmainjfont{SimSun} \begin{document} 這裡是中文。 □□□日本□ \end{document} 以上兩份代碼保存為 UTF-8 編碼之後﹐分別使用 XeLaTeX 和 LuaLaTeX 編譯即可得到 結果。 ---------------------- 再來一個題外話 ---------------------- 中國和日本﹐很多古籍都是使用豎排進行書寫的。TeX 對此的支持並不好。解決這個問題 的方法同樣有兩個 1. 選擇一個直接支持豎排的引擎(比如日本的 e-upTeX) 2. 構造一個合適的套件 我在 XeTeX + LaTeX + xeCJK 的支持下﹐有過豎排的一些經驗﹐並且實現了所謂割注。 然而﹐這一技術還不成熟﹐所以如果有感興趣的同好﹐我們另開帖子交流吧。 : ) -- 來自萌氣四溢的 M 君~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 183.217.24.14
文章代碼(AID): #1Imub2wj (LaTeX)
文章代碼(AID): #1Imub2wj (LaTeX)