雜談: TeX排版系統歷史及各引擎版本梳理


寫作動機

筆者利用LaTeX進行排版的頻率並不高,每次撿起來都要重新在網上辛苦查閱相關資料;
另外,若是能利用本次機會將TeX排版系統的歷史以及原理快速捋一遍則是極好的。


本文適合的讀者特點

> 有些許LaTeX寫作經歷
> 想弄清楚各種xxxTeX之間關系


什么是TeX?

\(\TeX\)是高納德(Donald Knuth)於1978年開發的排版系統,核心由Pascal語言編寫,包含大量排版命令。由於其過於穩定,至今其核心基本沒受到什么大改動,均是修修補補。

既然TeX是一個系統,就不能單純說它是“一種編程語言“或”一個程序“,實際上它由排版語言、編譯器(引擎)以及一些相關可執行程序構成。用戶編寫.tex源文件,TeX編譯器將其編譯為二進制機器碼,並存儲在.dvi文件中,可以將其對照為C語言和C語言編譯器之間的關系。

DVI,Device Independent, 譯為設備無關。TeX真正生成的其實是.dvi文件(而不是PDF),這種文件格式是由一個叫David R. Fuchs的人定義的,被高納德順手開發出來了。這種文件精確描述了所有頁面元素的樣式以及各自坐標,並且絕對固定並無法被更改,所以任何讀取它的輸出設備(顯示器、打印機等)顯示出來的效果一定是一模一樣的!


TeX格式文件

TeX支持宏,所以開發者可將若干底層命令組合為一個新的宏,實現高一級抽象的功能,方便用戶使用。

對於TeX系統,其在編譯.tex源文件前,會預載一個格式文件,其中包含各種提前定義好的宏,以被用戶在源文件中調用。緊接着對源文件進行編譯。所以你可以將格式文件理解為宏的集合。

常見的格式文件

Plain TeX

由高納德本人設計,僅包含了一些很基礎的宏來處理簡單的排版,現在很少人用。

LaTeX

\(\LaTeX\)是由美國人Leslie Lamport於80年代設計的格式,屬於Plain TeX的套娃,實現了很多強大的宏。

LaTeX2e

於1994年發布,是LaTeX最新的一個大版本,也是如今使用最廣泛的格式,一直更新至今,實際上我們如今說的“latex”便是指2e版本。

AMSTeX / AMSLaTeX

由美國數學協會設計,同樣屬於Plain TeX套娃,實現了很多高級數學排版渲染功能。

易於理解的角度

我將TeX基礎命令類比於匯編語言,Plain TeX可類比於C語言,則LaTeX類比為C++。所以實際上TeX編譯器最終會將.tex源文件中的各種高級宏一個不漏地解釋拆解為一大堆TeX基礎指令。


由TeX衍生的排版引擎

> 注:從這里開始,建議將“引擎”理解為實際的可執行程序

高納德將TeX的排版引擎設計得如此開放且易擴展,以至於出現了一些由全球社區在此基礎上編寫的新排版引擎,它們雖然拓展了若干高級特性,但仍嚴格兼容TeX引擎本身的嚴謹性。

需要區分的是,如LaTeX這樣的格式文件僅是對原始TeX命令的組合,本質上其拓展范疇仍在TeX系統內;而下文提到的對象則是針對TeX引擎本身進行了改動、拓展甚至重寫。

pdfTeX

由TUG組織維護,在國外比較流行,主要特性是默認最終產物為pdf文件。

> 注:如果你於終端鍵入"latex"命令,實際上調用的是pdfTeX引擎,只不過是預載了LaTeX格式而已

image

XeTeX

由Jonathan Kew開發,在TeX基礎上增加了對unicode的支持,同時增加若干高級字體渲染技術、高級數學排版功能,其預載的為Plain TeX格式。

XeTeX生成的目標文件為.xdv(extend DVI),其可由相關程序轉換為PDF文件。

> 注:所謂的"XeLaTeX"並不是一個獨立的排版引擎,終端命令"xelatex"的效果為調用XeTeX,預載LaTeX格式

image

LuaTeX

由另外幾個科學家於pdfTeX的基礎上開發而來,主要特性是內置Lua腳本引擎,理論上能利用Lua獲得更靈活的擴展性,但其流行性及性能均不如XeTeX。所謂的"LuaLaTeX"同上。


TeX系統的發行版

我將原始的TeX系統類比於Linus早期開發的Linux內核,各非盈利 / 盈利組織由此開發出不同的Linux發行版本以增添一些特色功能,如Ubuntu、CentOS、SUSE、REDHAT等等。但Linux是操作系統,接下來介紹的各主流TeX系統發行版本准確來說是由一系列可執行文件、格式文件、宏包、開源字體包裝起來的工具鏈ToolChain

TeXLive

由國際TeX用戶組織TUG發行,是最流行的版本,開源且跨平台。其內置上述提到的所有排版引擎,以及最新的LaTeX2e格式。

MiKTeX

是Microsoft Windows平台上最出色的發行版本,其附帶安裝一個TeX編輯器。

MacTeX

是基於TeXLive修改而重發行的版本,由TUG的子團隊開發,其相比於TeXLive增加了一些針對Mac特性的工具,以及附帶了TeXShop編輯器。


結語

了解了TeX系統的簡單歷史后,你可以着手為你的電腦安裝合適的TeX發行版本,選擇一個你喜歡的文本編輯器(我推薦sublime text或者vs code)以及適合你的排版引擎(一般用戶推薦XeTeX搭配LaTeX格式)開始寫作。

有關於LaTeX入門教程,我推薦CTeX.org維護的一份LaTeX中文入門教程,條理清晰易懂:於此github頁面的release板塊中可找到其pdf。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM