MikTex 下 CJK 對於一些中文字會有問題 |
2006/09/25 ~ 阿亮 ~ |
最近在學 Latex,發現在 MikTex (Windows 版)下,有一些 Big5 中文字會造成下述的訊息:
error| Improper alphabetic constant. error| Missing = inserted for \ifnum.
這是由於一些字,比如”年”、”破”等,在第二個 byte 是 ‘~’,而這個字元在於 latex 用來當作 \nobreakspace,就會類似的問題產生,下述的 perl script 可以幫助將有包含特殊 ‘\’, ‘~’, ‘}’ 的中文,取代成 \CjKchar{xxx}{yyy} 字元。
while (<>) { s/([\xA1-\xFE])([\x40-\x7E]|[\xA1-\xFE])/ if ($2 eq "\\" || $2 eq "{" || $2 eq "}" || $2 eq "~") { sprintf("\\CJKchar{%d}{%d}", ord($1), ord($2)); } else { sprintf("$1$2"); } /eg; print; }
比如
破折號
將會被取成
\CJKchar{175}{125}折號
參考自這裡 。
[註]
結果,只要到 latex.exe 的目錄下,將 bg5+latex.exe 改名成 latex.exe 來用,就能達到同樣的目的 :p 應該是 bg5+latex.exe 做掉這段了,我也省麻煩 :)
[註]
若是第兩個 Byte 是 ‘{‘ 或 ‘}’ 可能會出現
Paragraph ended before \CJK@XX was complete
的訊息。