CJK 是一組在 LaTeX 下使用的 macro/environment,因此最先要具備的,當然就是 LaTeX 的語法了,再來才是 CJK 中的特殊語法。其實,只要 CJK 的大結構搞清楚,重要的語法還是在於原來的 TeX/LaTeX 裡頭。
以下這些文件,都是給想接觸 LaTeX 的朋友而寫的,相當具參考價值,請多多利用。如果不清楚一般要用到的 LaTeX 語法,那學 CJK 的語法是沒什麼意義的。
系統上的 lshort.dvi
ftp://ftp.dante.de/tex-archive/info/beginlatex/beginlatex.pdf
ftp://ftp.dante.de/tex-archive/info/simplified-latex/simplified-intro.pdf
ftp://ftp.dante.de/tex-archive/info/ 目錄下有許多文章可以參考
整理相當完整的網路教材
SITE=http://www-h.eng.cam.ac.uk/help/tpl/textprocessing
$SITE/latex_basic/latex_basic.html
$SITE/latex_advanced/latex_advanced.html
$SITE/latex_maths+pix/latex_maths+pix.html
請自行將 SITE 的內容取代進去連成一個完整的網址。
吳聰敏、吳聰慧兩位老師的《cwTeX 排版系統》修訂 2 版
ftp://ftp1.sinica.edu.tw/pub2/tex/cwTeX/cxbook-s.pdf
雖然說的是 cwTeX 但其實道理是相通的。
〈大家來學 LaTeX〉一文
http://edt1023.sayya.org/tex/latex123/index.html
http://edt1023.sayya.org/tex/latex123/latex123.pdf
http://MathNet.math.tku.edu.tw/~edt1023/tex/latex123/index.html
http://MathNet.math.tku.edu.tw/~edt1023/tex/latex123/latex123.pdf
FAQ(許多問題可以從這兒查到初步資料,可抓 pdf 檔,比較好查詢,網站上也有搜尋的功能)
http://www.tex.ac.uk/faq
ftp://cam.ctan.org/tex-archive/help/uk-tex-faq/newfaq.pdf
Hypertext Help with LaTeX(簡介及指令、環境、資源速查表)
ftp://ftp.giss.nasa.gov/pub/sgreen/latex/latex.tar.gz
安裝 Kile 就會有個 LaTeX 指令速查表(latexhelp.html)
http://perso.club-internet.fr/pascal.brachet/kile/
看一些 macro 時,會需要 TeX 指令速查表
http://www.tug.org/utilities/plain/cseq.html
貪多嚼不爛,請先選定一份文件下功夫,純熟後其他的文件自然就會很容易吸收。
其實,依 CJK 的作者 Werner Lemberg 的說法,CJK macro 著重的重點,主要是給非使用 CJK 語文為主的人士使用的,因此是一個 environment 的形式出現,在有需要的部份加入這個環境就可以寫入 CJK 文字,不被這個環境包圍的部份仍然是英文模式,而不是打算將整個 TeX/LaTeX 系統中日韓化。
這樣的好處是,多國語文可以同時並存於同一份文件,各用各的編碼,缺點就是常會發現和其他 package 衝突,除非將來 LaTeX team 願意納入 CJK macro 的程式碼,否則這些 macro 間的衝突是難免的,畢竟 TeX 系統本就不是專為多字元語系所寫的。
以下只針對常常要用到的指令來說明,其他的可以參考 CJK 所附的文件,也有中文的。
以下先簡單說明 CJK 的架構,當然也是一般 LaTeX 文件的架構。
\documentclass[12pt,a4paper]{article} \usepackage{CJK} ... 這裡是 preamble 區 ... \begin{document} ... 這裡可以寫非 CJK 的文字 ... \begin{CJK}{Bg5}{aming} ... 這裡才是本文區,可以寫中日韓各種不同編碼的語文 目前是定在 Bg5,就是我們的 Big-5 編碼 ... \end{CJK} ... 這裡可以寫非 CJK 的文字 ... \end{document}
所以,可以看得出來,CJK 環境包住整個文稿內文區的話,那整篇文稿都可以使用中文,也可以包住部份需要中文的地方,而且這個環境可以重複使用。一篇文稿中要使用多種不同編碼的文章也是可以,只要各 CJK 環境使用不同的編碼就可以了,但有些編碼需要前置處理,有些則不必,這裡要注意一下。
字體除了在進入 CJK 環境時指定,也可以途中變更,例如:
\CJKfamily{akai}
這會改變成 akai 的字體。當然,如果不是在環境中,或由大括號括住,那要記得回復原字體,否則以下的字體都會通通變成楷體。另外,也可以另起一個新的 CJK 環境,並指定不同的字型。
字間距是由 \CJKglue
所定義,他的預設值是:
\newcommand{\CJKglue}{\hskip 0pt plus 0.08\baselineskip} CJK 預設值 \renewcommand\CJKglue{\hskip -0.3pt plus 0.08\baselineskip} 本文的定義
可以變更他的 \hskip
為負值,就會縮小字間距。行距的話,和英文環境一樣,是由 \linespread
來控制,只要改變他的參數,就會照原來字體大小的倍數縮放。例如:
\linespread{1.2}
則會放大成字體大小的 1.2 倍,這裡所謂的行距,指的是兩 baseline 的距離,就是這一行字的底線至下一行字的底線的距離。把這些設定在 preamble 區,則對整篇文稿都會有效果。
一般的 verbatim 環境,常會造成無法正常折行的問題,這可以改用 CJKverbatim 來代替。
如果在編譯時常會有 `Overfull \hbox
' 的錯誤訊息,可以改變 \CJKtolerance
的容忍度,他的預設值是:
\newcommand{\CJKtolerance}{400}
另外,CJKindent
是專為 CJK 語文所設的,會內縮兩個中文字,不然,一般的內縮是在一至兩個中文字之間。但這要在 CJK-4.5.1 以上的版本才支援。
這個問題困擾許多人,因為 TeX 不會去辨識是不是中文字,以致於我們按 Enter 鍵斷行,TeX 會認為要加入一個空白,因為這在英文環境的確是字(word)間空白,但中文就不是了。而且,中英文間是否要有個空白?這個空白應該要多大?恐怕也沒有確定的結論。以下是幾個解決的方式。
這完全是抓 TeX 的特性去適應的,可能是比較笨的方法,但如果習慣了的話,問題可能比較少。也就是說中英文間,主動在編輯時就加入一個空白。而換行的話,可以在每行最後加一個百分號 %,或以我個人的習慣,中文的話是一行到底不按 Enter 鍵,這在一般的編輯器會有「假性」折行,也就是螢幕看起來有折行,實際上是沒有。
也有人就乾脆使用英文逗點,然後在英文逗點後按 Enter 鍵換行,這樣的話,單字元的英文逗點,後面再加個單字元的空白,看起來就不難看了,當然,這在中文句點就沒有替代的方法。
也可以使用 CJK* 環境來解決,也就是說,原來的環境宣告要變成:
\begin{CJK*}{Bg5}{aming} ... \end{CJK*}
加個星號,這有兩種作用:
\CJKtile
,然後在中英文字間加個波紋號 ~,這個空白會比一般的英文空白大一點點。這在文章不長的情況下還可以忍受,長篇文章的話可能打字起來不會很方便。
像 cwTeX 及 ChiTeX 就由程式本身去解決這類問題,這種處理方式可能會比較完善。有興趣的話,也可以自行寫程式或 macro 去前置處理,不過,要小心的是在 TeX 的世界,「地雷」很多,別誤觸「地雷」了。:-)
在東方語文中,會有許多機會要使用到直排。在 CJK 中,也可以處理直排的排版,但是 CJK 的版本要新一點的才行(最好是取得 CVS 中的版本),而且標點符號要另外使用直排的標點符號,這可以從 CTAN 中的 TeXLive 檔案中取得:
http://tug.org/ftp/texlive/Contents/live/texmf/fonts/
只要引入 CJKvert package 就可以了,但他不會自動引入 CJK package,所以兩個都要引入:
... \usepackage{CJK} \usepackage{CJKvert} ...
其他就和正常橫排一樣的編輯即可,編譯過後自然會轉成直排。這裡有個實例供參考:
http://edt1023.sayya.org/misc/big5vert.tex
http://edt1023.sayya.org/misc/big5vert.pdf
他的原理是將每個中文字旋轉後再排入,這樣可以節省另一套直排字型,使用原有的一般字型就可以了,當然,也因此在操作上容易和其他的巨集套件有衝突的機會。這個套件仍在發展中,所以會有些小地方沒有注意到,但一般使用應該是可以用了。
東方語文也常會有加其他點標示重點或畫線的情形,例如中文的書名號、私名號等等。這是由 Wenchang Sun 所貢獻的 macro,你必須使用 CJK-4.5.2(不含)以上的版本才有這個功能。當然,你可以從 CJK 的 cvs server 中取出最版的 CJK。
這個 macro 的名稱是 CJKfntef,他會自動載入 CJK package,所以,只要載入這個 macro 就可以使用 CJK 環境了。
... \usepackage{color} % 需要顏色放前面 \usepackage{CJKfntef} [\usepackage{color}] % 不需要顏色放後面 ...
這些加點、畫線是有顏色的,如果要沒有顏色(就是和字體一樣是黑色)的話,只要把引用這個 package 的宣告時放在 color package 前面就可以了,要有顏色就一定要放在 color package 後面,這樣才能順利引用到顏色的定義。以下舉一些實例:
當然,這個 macro 才剛完成,還沒有正式 release,難免會有些和原有 macro 衝突的情況發生,例如用在表格中時就會有問題,但這些變化算是滿方便的,一些臭蟲我們可以慢慢來改善。![]()
Compiled by Edward G.J. Lee (2004-05-18)