2007/08/31

中英夾雜

為了在 XeLaTeX 下輕鬆地排版中英夾雜的文稿,而且英文字型限定用傳統的 Computer Modern,我很久以前的方法是用 FontForge 把 Computer Modern Unicode 字體嵌到中文字體內,然後用 fontspec 選擇那個混合字體。這做法的好處是 .tex 內不需要額外的控制碼,缺點是非常麻煩,而且不甚美觀。(不幸地,高微筆記索引就是用這方法排版,而且因為已經累積大量內容,懶得改成比較新的做法了。)

之後查 fontspec 的說明,似乎沒辦法用 fontspec 指定舊式字型,所以我改而修飾(qualify)中文部份,但非常不直覺。例如:

\def\zh#1/{{\setromanfont... #1}}  % 設定為中文字體

\zh 如果我們上溯拉丁文根源,我們發現/ ars\zh 、/artis\zh 代表「技能」(/skill\zh )。%
或許對應的希臘單字 $\tau\acute\epsilon\chi\nu\eta$ 也很重要,這個字是/ ``technology''%
\zh (科技)和/ ``technique''\zh(技巧)的共同字根。/

如果我用 LaTeX 的形式定義 \zh 會更恐怖(i.e., "\zh{中文}" instead of "\zh 中文/"),因為那些 grouping characters 看起來非常不對勁。

最後,幸好 Xe(La)TeX 之下還是可以使用 \font primitive 載入舊式字型,所以我決定採用的解法是:

\font\tenrm=cmr10
\renewcommand{\rm}[1]{{\tenrm #1}}

如果我們上溯拉丁文根源,我們發現 \rm{ars}、\rm{artis} 代表「技能」(\rm{skill})。%
或許對應的希臘單字 $\tau\acute\epsilon\chi\nu\eta$ 也很重要,這個字是 \rm{``technology''}%
(科技)和 \rm{``technique''}(技巧)的共同字根。

看起來好多了。這樣的缺點是,用 \font 載入的字型大小是固定的,所以在作者或標題那邊必須另外載入較大尺碼的 cmr 字型來用。不過我猜以後應該可以慢慢修潤成比較自動的版本。

不知道有沒有那種自動偵測語系變換預設字型的功能(像中文版 Microsoft Word)?

--
下一個目標是 MetaPost!

Labels:

Blogger yen38/31/2007 2:29 am 說:

中文處理永遠都很麻煩,你幹麻不用英文寫啊XD

 
Blogger Josh Ko8/31/2007 2:32 am 說:

總是有時候該用中文(例如翻譯 XD)。

 

<< 回到主頁