使用 CJK 的朋友,在編輯大型的文件時,常常會抱怨無法分開來寫,使得維護上會變得很困難,其實是可以的,以下的例子包括和 LaTeX2HTML的配合。實際的文稿內容就不寫出來了,只寫出架構。
cjk.tex (主檔) cjk1.tex (第一章) cjk2.tex (第二章) cjk3.tex (第三章)cjk.tex 內容:
--- begin cjk.tex --- \documentclass[12pt,a4paper]{report} \usepackage{CJK} \usepackage{html} % 和 latex2html 配合 % 這個環境只會在執行 latex2html 時有作用 \usepackage{taiwan} % 執行 latex(bg5latex) 時會忽略 \begin{document} \begin{CJK}{Bg5}{aming} % 開始進入 CJK 環境 % % latex2html 會直接找 cjk1.tex... \input{cjk1} \input{cjk2} \input{cjk3} \end{CJK} \end{document} --- end cjk.tex ---其中 *.cjk 的部份,可以事先由 bg5conv 轉出來,或由 Makefile/script 中控制。
bg5conv < cjk1.tex > cjk1.cjk bg5conv < cjk2.tex > cjk2.cjk bg5conv < cjk3.tex > cjk3.cjk這樣就可以了,然後開始編譯:
bg5latex cjk.tex dvips -Pcmz -o cjk.ps cjk.tex latex2html [options] cjk.tex這樣就會產生 cjk.ps 及在 cjk 子目錄下產生 HTML 格式的檔案。這樣,各個章節就可以分開維護了,不必編輯一整個大檔案。
其中的原理就是執行 bg5latex cjk.tex 時,\input
進尚未處理的 cjk1.tex 則會來不及前置處理,最後變成是亂碼。\input{cjk1}
不加延伸檔名,預設的延伸檔名就是 *.tex,因此要寫成 \input{cjk1.cjk}
。
至於 \include
指令,則由於他一定會認 tex 延伸檔名,因此沒有辦法這樣處理。
當然,這裡為了方便說明,使用數目字去代表他的順序,實際運用可以命名一個代表性檔名會比較好維護,以免有時要加減幾個章節時,所有的檔名都要改變。
在 CJK package 裡頭亦有提供 \CJKinput
及 \CJKinclude
可以運用。