曾守政老師介紹很完備的排版系統。
TEX 是 Donald E. Knuth1 教授的精心傑作,它是個功能非常強大的幕後排版系統,含有
彈性很大,而且很低階的排版語言。當初,是因為 Knuth 教授在寫他的大著 TAOCP(The
Art of Computer Programming) 時,發覺書商把他書中的數學式子排得太難看了,於是決
定自行開發一個非常適合排數學式子的排版語言,這就是 TEX 系統的來由。
不僅僅是談到 TEX 一定會提到 Knuth 教授,只要提到排版,沒有人可以忽略他的 TEX 所
帶來的變革、影響,甚至 TEX 已經 20 幾歲了,仍然深深影響著排版界及排版軟體,可見
這個排版軟體真的是非同小可。
TEX 是個很低階的排版語言,如果排版時都要從這種低階語言來控制版面的話,那將會非
常的煩複,所以,一些經常要用到的功能,都會先去定義好(稱為巨集,macro),這樣排版時才會方便、快速,直接引用已定義好的巨集裡頭的指令就可以了。
原始的 TEX 已經有了一組 macro,是 Knuth 教授所寫的,那就是著名的 Plain TEX,但
仍然不夠方便、直觀,於是 Leslie Lamport7 又寫了另一組的 macro,稱為 LATEX,主要
是把版面配置和文章內容,適度的分開處理,只要使用者選定了一種類別,整本書或整篇
文章的結構就是按照這個類別來安排版面,這樣寫文件的人只要專注於文章內容就可以
了,版面配置就完全交給 TEX/LATEX 去處理。
既然 LATEX 只不過是 TEX 的一大組巨集,那,當然原來的 TEX 的指令,大部份也是可
以用在 LATEX 文稿當中的。而且,LATEX 並不是目前唯一的 TEX macro,其他如 eplain
TEX, ConTEXt, TEXinfo 等都是 TEX macro,也都有他們自成一套的語法。目前的 LATEX
由 LATEX 3 Project8 所維護及發展。
如果談到這裡,你還是霧煞煞的話,類比成 HTML markup 標記語言就能大概知道一些概
念了,當然,這和 HTML 標記語言是可相提而無法並論的。如果連 HTML 也不熟悉,那
也沒關係啦!這章本來就是在說故事嘛!:-) 只要繼續看後面的內容就行了
一般人對 LATEX 的迷思
這裡引用 Peter Flynn 在他的 A beginner’s introduction to typesetting with LATEX 9 一文中
所提出來的六大迷思,並添加個人的一些看法:
• LATEX 只能使用一種字型?
當然不是,雖然 TEX 系統預設是使用當初 Knuth 教授所設計的 METAFONT,但目
前 OpenType, TrueType, Adobe Type1 字型都可以用在 LATEX 當中,只不過,安裝
字型的部份不是那麼的直觀就是了,但比起其他的排版系統,TEX/LATEX 所能利用
的字型種類,可以說是最多的。
• LATEX 只能用於 Unix-like 的作業系統?
Knuth 教授慷慨的把 TEX 的原始程式碼開放出來10,所以,只要是有人在使用的作業系統都可以移植過去,不必擔心版權的問題。像 MS DOS, OS/2, MS
Windows, Mac OS, Unix-like 系統都有 TEX 的移植版本,甚至是 PDA(e.g. the
Sharp Zaurus)都有 TEX/LATEX 的縱跡。可以說是走到哪兒,就可以用到哪兒,而
且,文稿都是互通的,列印結果也相同。
• LATEX 已經過時了?
剛好相反,LATEX Project11 及其他相關 packages 正穩定的研發當中,尤其和目前新
一代的 SGML/XML/HTML 及資料庫系統,都積極的想辦法銜接起來。對於數學式
子的排版,至今無人能出其右。有興趣的話,可以參考 news://comp.text.tex 的
流量,及其中 CTAN12 對於巨集更新、上傳的消息發布。
• LATEX 沒有所見即所得(WYSIWYG)?
某種層面上而言,是的。因為他本質上是幕後排版系統。但是,所產生的
dvi/ps/pdf 檔,可以很精準的顯示你所想要表達的內容,不曉得這算不算是「所
見即所得」?另外,一些相關 GUI 配合的軟體,也會打破幕後排版的定義,例如
LyX13, TEXmacs14 等等。LATEX 很難學?
這個嘛!我只能說,有什麼東西是很好學的?如果只是一般使用,而不是當個排版
專家,甚至 TEX/LATEX programmer,那麼,幾十分鐘的說明,就可以「上工」了!
剩下的只是一些細部調整的問題(不去調整,也絕對不會離譜)。相對於一般圖形
化 Office 類軟體,要真正把他的內容熟悉,恐怕也是不簡單的。另外的問題,大概
是幕前、幕後系統操作習慣的問題,甚至是一種第一印象了,就好像說到電腦,有
不少人的腦子裡就會浮現 MS Windows 的圖象一樣。:-)
• LATEX 是專為科學家或數學家而寫的?
的確,當初 Knuth 教授是為了表達精確、品質優美的數學式子而開發 TEX 的,
但由於 TEX 的彈性,使得在其他的領域的使用者也爭相使用,已經不是局限在學
術界在使用了。尤其 XML 的興起,需要一個適合的格式化工具(formatter)的配
合,TEX/LATEX 就剛好稱職的做他排版專業的工作。