西班牙人对赫塔菲录像:LaTeX簡介

什么是TeX

電子排版系統的出現給印刷出版業帶來了一場革命,利用電子計算機及各種輔助設備,可以完成從文稿、圖表的錄入、編輯、修改、組版,直至得到各種不同 用途、不同質量的輸出結果。利用電子排版系統,可以減輕勞動強度,縮短出版周期。

目前世界上有許多電子排版系統。這些系統各有特點,也各有自己的適用范圍。TeX 就是一種優秀的電子排版系統。

TeX 提供了一套功能強大并且十分靈活的排版語言,它多達 900 多條指令,并且 TeX 有宏功能,用戶可以不斷地定義自己適用的新命令來擴展 TeX 系統的功能。許多人利用 TeX 提供的宏定義功能對 TeX 進行了二次開發,其中比較著名的有美國數學學會推薦的非常適合于數學家使用的 AMS-TeX 以及適合于一般文章、報告、書籍的 LaTeX 系統。

TeX 系統是公認的數學公式排得最好的系統。美國數學學會 (AMS) 鼓勵數學家們使用 TeX 系統向它的期刊投稿。世界上許多一流的出版社如 Kluwer、Addison-Wesley、牛津大學出版社等也利用 TeX 系統出版書籍和期刊。

大部分的 TeX 系統都是免費的。Knuth 教授還公開了他的全部源程序。TeX 系統目前已經在數百種計算機系統上得到實現。TeX 系統的排版結果 DVI(DeVice Independent)文件與輸出設備無關。DVI 文件可以顯示、打印、照排,幾乎可以在所有的輸出設備上輸出。TeX 排版源文件及結果在各種計算機系統上互相兼容。

TeX 的歷史

七十年代末,Donald E. Knuth(高德納) 在看到其多卷巨著“The Art of Computer Programming”第二卷的校樣時,對由計算機排版的校樣的低質量感到無法忍受。因此決定自己來開發一個高質量的計算機排版系統,這樣就有了 TeX 。

TeX 的名字是由大寫的希臘字母“tec”(tau, epsilon, chi)組成。在希臘語中這個詞的意思是“科技”和“藝術”,這也解釋了它的發音?!癟”和“E”就像在“technology”中的發音一樣,而“x” 的發音類似于蘇格蘭語單詞“loch”或德語單詞“ach”中的“ch”,也類似于西班牙語中的“j”或俄語中的“kh”。TeX 標志為 TEX ,這三個字母相靠得很近,而且中間的那個 E 有點兒下沉。但在無格式文件中,就寫為 TeX 。

TeX 的第一版于 1978 年面世。在經過了不斷的改進后,1982 年版的 TeX 是一個十分穩定的版本。從此以后,TeX 沒有較大的變動,只有很少部分的改進和錯誤修正。現在幾乎所有的操作系統平臺下,都有相應的 TeX 軟件,而且用它們排版同一個文件得到的輸出結果是相同的。TeX 目前的版本是 3.141592,很接近圓周率π。每有一新的版本,就會加上一個π的小數點后的數。所以我們已經知道下一版本的 TeX 是 3.1415926,最終將收斂到π。這也代表了 TeX 不斷追求完美的理想。

TeX 的源程序是用 Pascal 寫成的,原因是 Knuth 希望 TeX 盡可能方便地移植到其它的操作系統中去。當時 Pascal 是最適合于這一要求的編程語言。這也使得 TeX 現在已經在幾乎所有的計算機系統中得到實現。

TeX 的另一個重要的特征就是它的輸出是與設備無關的。TeX 的輸出文件稱為 DVI 文件,即是“Device Independent”。一旦 TeX 處理了你的文件,你所得到的 DVI 文件就可以被送到任何輸出設備如打印機,屏幕等并且總會得到相同的結果,而這與這些輸出設備的限制沒有任何關系。這說明 DVI 文件中所有的元素,從頁面設置到文本中字符的位置都被固定,不能更改。

TeX 現在已經被它的開發者 Knuth 所“冰封”(frozen),新版本的 TeX 只有少許改進和錯誤修正。這些變動必須保證不會使得即使是寫于 1982 年的 TeX 文檔無法編譯,TeX 自帶了測試文件來確保這一點。如果測試文件文件的輸出結果不同于預定的結果,那么這個排版系統就不能夠被稱為“TeX”。所以像一些對 TeX 有很大改進的軟件,如“Omega”等將不能被稱為“TeX”,盡管它也是基于“TeX”的。

在設計 TeX 的同時,Knuth 還設計了一個字體生成程序 MetaFont。MetaFont 是獨立于 TeX 之外的,但又與 TeX 有著非常密切的聯系。MetaFont 生成的只是位圖字體,當對字體進行縮放時的效果不佳。對于如何得到像 Type1 字體一樣的輪廓字體,現在還在研究之中。與 TeX 一樣,Knuth 也“冰封”了 MetaFont 。所以 MetaFont 的進一步的改進和發展將會由其他人來完成,而且名字也將不再是 MetaFont 。

TeX 的未來

雖然 TeX 在過去的二十多年中沒有大的變化,但這并不意味著 TeX 是一個僵化的系統。恰恰相反,TeX 開放的設計使得它能夠很容易的適應新的要求。例如,在沒有改動內核的情形下,TeX 很容易地實現了對 PostScript 字體和外部圖形的支持。TeX 還是第一個能夠自動生成 HTML 的字處理軟件。最近,TeX 又開始增加了在不借助其它工具(如 Adobe Distiller)的條件下生成 PDF 的擴展功能。下面列出的幾個項目都是正在進行中,對 TeX 的功能進行了擴展。

PDFTeX

完全兼容標準的 TeX ,但能夠給出 PDF 輸出。它也可以輸出標準的 DVI 。

e-TeX

不僅完全兼容標準的 TeX ,還支持一種“擴展模式”。在“擴展模式”中引入了許多新的特性和增強功能。這些新的特性和增強功能提供了更好的編程工具和對輸出的控制。

Omega

這是一個幾乎是完全重新寫過的,支持 Unicode 的 TeX 程序。Omega 有很多特征都超出了 Knuth 對 TeX 的原始設想。它采用了與 TeX 不同的方法來處理字符,使得可以處理非拉丁語系的文本。也支持從右到左,從上到下的排版方式。

NTS

NTS 代表“New Typesetting System”。Knuth 已經停止發展 TeX,并決定任何超越 TeX 的擴展都不能被稱為 TeX 。NTS 只是一些對于 TeX 的后續繼承者的設想和概念的集合,還不是一個實際上的系統。該項目的第一個公布的產品就是 e-TeX。后來不知什么緣故,NTS的開發就停止了。直到 2002 年左右,一些 TeX 專家,想用 Java 開發 TeX,于是把中途夭折的 NTS 項目撿了起來,搞出了一個叫做 ExTeX 的東西,但是并沒有普遍應用。

MLTeX

這個 TeX 的擴展引入了命令 \charsubdef,使得可以更為簡單方便的使用 8 bit 字符。不過,與 e-TeX 相比,這只是一個微小的改進。

XeTeX

Jonathan Kew 在 e-TeX 基礎上添加 Unicode 支持,并且連接 Mac OS X 的各種技術,比如ATT,Quartz,QuickTime,產生了一個重要的TeX分支,叫做XeTeX.XeTeX在2005/6年陸續發布了它的 Windows 和 Linux版本,最終集成在 TeXLive 2007 當中,標志著它被廣泛地認可。在 XeTeX 中,使用多國語言,變得非常輕松,并且可以方便地使用系統的 TrueType 和 OpenType 字體,因此得到許多 TeX Guru 的喜愛。

LuaTeX

盡管 Omega 項目在開始時看上去很有希望,但是它的開發進展緩慢并且功能上也非常不穩定(基本上可以認為這個項目已經死亡)。于是,Giuseppe Bilotta 等人啟動了 Aleph 項目,目的是讓 Omega 穩定并且引入了 e-TeX 的擴展功能。后來 Aleph 項目現在也停止了,不過它的大部分功能都被集成到了 LuaTeX 中。LuaTeX 是一個新的 TeX 引擎項目,由科羅拉多州立大學(Idris Samawi Hamid 的東方 TeX 項目)和 NTG 資助,該項目于 2006 年啟動,于 2007 年夏季發布首個 beta 版本。

LuaTeX 是 Aleph 與 pdfTeX 項目的繼任者,主要由 Taco Hoekwater 開發。除了兼有 Aleph 和 pdfTeX 的功能之外,LuaTeX還具有以下特點:

  • 內部集成了輕量級的動態編程語言 Lua,可以采用該語言擴展 LuaTeX 功能或宏包;

  • 提供了 OpenType 字體的本地支持,與 XeTeX 做法不同的是,LuaTeX 沒有使用操作系統自帶的字體庫來訪問字體,而是使用了 FontForge庫;

  • 內部集成了 MPLib(一個擴展的 MetaPost 庫??椋?。

TeX 的優點

在一個充斥著“所見即所得”(WYSIWSG)桌面出版軟件的情況下來使用 TeX 確是有點令人奇怪。但是,在某些情形下,你會感到 TeX 是最好的,甚至是唯一適合的系統。

首先我們來看一下 TeX 的優勢所在:

  • 高質量的輸出 TeX 遵循傳統的排版規則,以排版的質量為最重要的目標。如果你把 TeX 的輸出結果和用其它的排版軟件排版相同的文本所得到的結果加以比較,你就會發現其中的區別。

  • 超常的穩定性 自從 TeX 出現以來,只有一些微小的改動。也就是說,十幾年前的 TeX 文件用現在的 TeX 系統排版得到的結果與十幾年前得到的結果是一樣的。穩定性還體現在 TeX 系統極少會崩潰,可以處理任意大小的文件,即使你的計算機的內存很少,TeX 也可自如的工作。

  • TeX 是可編程的 TeX 是一種宏命令編程語言。你可以用很少的命令來完成非常復雜的工作。如果需要的話,你也可以重新定義 TeX 的所有命令來得到特殊的效果。

  • 高度的靈活性 TeX 自從出現以來其內核只有微小的改動。但是由于其內核的設計方式,世界上的 TeX 使用者可以讓 TeX 做幾乎任何工作。你可以用 TeX 來排版英文文本,也可以排版德文,俄文,中文等多種語言。你還可以用 TeX 來排版樂譜,象棋,圍棋棋譜等等。

  • 簡單方便 TeX 文檔是 ASCII 碼的文本文件。因此,即使你手邊沒有 TeX 系統,你也可以看懂絕大部分的內容。TeX 文件的這種特點使得它占用很少的存儲空間,也可以很方便的用 email 來傳輸。

  • 良好的通用性 目前為止,TeX 幾乎在所有的計算機操作系統平臺上得到實現。如:Atari,Apple,Macintosh,Unix,VMS,MS-DOS,MS-Windows 和 OS/2 等等。TeX 的源文件可在不同的平臺之間自由的交換,而得到的輸出是完全相同的。

  • 低廉的價格 TeX 是免費軟件,它的源程序也是免費的。你可能僅僅需要支付郵費,甚至于一分不花地得到適合你的 TeX 系統。世界上有很多非常好的 TeX 免費軟件如:teTeX,MikTeX,fpTeX 等等。同時也有一些具有各自特點(如或多或少的所見即所得特性的)和提供專家級幫助系統的商業版本。

  • 超級技術支持 由于 TeX 并不是被某個公司所壟斷開發,所以世界各地的使用者設計了統一的技術支持的方式。這通常是通過因特網以 email, WWW, Usenet 或 Ftp 的方式來提供,有時也可能通過電話或傳真的方式。絕大多數情況下這些技術支持都是免費的,這也是 TeX 的精神。

  • TeX 是一種樂趣 使用 TeX 不僅僅是一種工作手段,也是一種樂趣。它有挑戰,也有榮譽。很多人在熟悉了 TeX 之后都開始把使用 TeX 作為一種愛好,而不是一件枯燥無味的勞動。

TeX 的不足

在展示了 TeX 的優秀之處后,也得承認 TeX 也有一些不足的地方:

  1. TeX 不是在一個下午就能完全學會的,除非你是一個真正的天才。當你開始學習并使用它的時候,你將會不停的去翻看 TeX 的參考手冊來尋找一個 TeX 命令。你也會發現 TeX 常常不理會你鍵入的命令,還給出一個讓你感到迷惑的錯誤訊息。這一切都說明了掌握 TeX 需要一個比較長而且艱難的學習過程。TeX 的一些擴展如 LaTeX、ConTeXt 則要相對簡單的多,使用起來也比 TeX 方便,一個新手完全可以在一個下午或者更短的時間內學會開始使用 LaTeX 或 ConTeXt。

  2. 當發生錯誤的時候,TeX 會給出一些信息來提示你。但很多情況下并不足以是你迅速準確的找到錯誤之所在。尤其對剛剛開始學習的新手來說更是如此。

  3. 像 TeX 這種宏語言不同于其它的計算機語言,如 C,Pascal 等,大多數人并不了解。因此,當你想要寫自己的宏命令時,你需要對 TeX 有比較深入的了解才能寫出牢固可靠的宏命令。

  4. TeX 不是所見即所得的。盡管市場上有些近似于所見即所得的自由/開源軟件(如 LyX)或商業軟件,但即使與最普通的字處理軟件比,也 還是有不小的差距。

科技藝術的完美融合,專業精致的排版體驗

聯系我們聯系我們