恭喜你終于看到了這里。如果你認(rèn)真完成了上面所有的練習(xí),并琢磨了其中的意義,相信你已經(jīng)可以用 LaTeX 排版出漂亮的文檔了?,F(xiàn)在我們說一點(diǎn)歷史,幫助你更好地理解 TeX 這個(gè)系統(tǒng)。
帶有 TeX 的詞,僅僅是本文就已經(jīng)提到了 TeX, LaTeX, XeLaTeX. 通常中國學(xué)生面對不了解意思的一群形近單詞,都會(huì)有一種“本能的恐懼”(笑~)。
因此,“大神們”在為新手介紹 TeX 的時(shí)候,如果互相爭論 “XXTeX 比 YYTeX 好”或者是“XXTeX 的 YYTeX 如何如何”,往往會(huì)蹦出下面這些帶有 TeX 的詞匯:
TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …
事實(shí)上,這部分的內(nèi)容太過復(fù)雜,我自己的了解也實(shí)在有限。所以下面這部分的內(nèi)容也只能是對我了解到的知識(shí)的一個(gè)概括,甚至可能有些許謬誤。所以大家只需要將這部分的內(nèi)容當(dāng)做是一個(gè)參考就可以了。
TeX 是高德納(Donald Ervin Knuth,1938 年 1 月 10 日 —)教授憤世嫉俗(大霧;追求完美)做出來的排版引擎,同時(shí)也是該引擎使用的標(biāo)記語言(Markup Lang)的名稱。這里所謂的引擎,是指能夠?qū)崿F(xiàn)斷行、分頁等操作的程序(請注意這并不是定義);這里的標(biāo)記語言,是指一種將控制命令和文本結(jié)合起來的格式,它的主體是其中的文本而控制命令則實(shí)現(xiàn)一些特殊效果(同樣請注意這并不是定義)。
你可以在這里找到關(guān)于 TeX 引擎的具體描述;
你可以在這里找到關(guān)于標(biāo)記語言的具體描述。
而 LaTeX 則是 L. Lamport (1941 年 2 月 7 日 — ) 教授開發(fā)的基于 TeX 的排版系統(tǒng)。實(shí)際上 LaTeX 利用 TeX 的控制命令,定義了許多新的控制命令并封裝成一個(gè)可執(zhí)行文件。這個(gè)可執(zhí)行文件會(huì)去解釋 LaTeX 新定義的命令成為 TeX 的控制命令,并最終交由 TeX 引擎進(jìn)行排版。
實(shí)際上,LaTeX 是基于一個(gè)叫做 plain TeX 的格式的。plain TeX 是高德納教授為了方便用戶,自己基于原始的 TeX 定義的格式,但實(shí)際上 plain TeX 的命令仍然十分晦澀。至于原始的 TeX 直接使用的人就更少了,因此 plain TeX 格式逐漸就成為了 TeX 格式的同義詞,盡管他們事實(shí)上是不同的。
因此在 TeX - LaTeX 組合中,
TeX 系統(tǒng)生成的文件是?dvi?格式,雖然可以用其他程序?qū)⑵滢D(zhuǎn)換為例如 pdf 等更為常見的格式,但是畢竟不方便。
dvi 格式是為了排版而產(chǎn)生的,它本身并不支持所謂的“交叉引用”,pdfTeX 直接輸出 pdf 格式的文檔,這也是 pdfTeX 相對 TeX 進(jìn)步(易用性方面)的地方。
為了解決這個(gè)問題,Hàn Th? Thành 博士在他的博士論文中提出了 pdfTeX 這個(gè)對 TeX 引擎的擴(kuò)展。二者最主要的差別就是 pdfTeX 直接輸出 pdf 格式文檔,而 TeX 引擎則輸出 dvi 格式的文檔。
pdfTeX 的信息可以查看wiki.
pdfLaTeX 這個(gè)程序的主要工作依舊是將 LaTeX 格式的文檔進(jìn)行解釋,不過此次是將解釋之后的結(jié)果交付給 pdfTeX 引擎處理。
高德納教授在實(shí)現(xiàn) TeX 的當(dāng)初并沒有考慮到中日韓等字符的處理,而只支持 ASCII 字符。這并不是說中日韓字符就無法使用 TeX 引擎排版了,事實(shí)上 TeX 將每個(gè)字符用一個(gè)框包括起來(這被稱為盒子)然后將一個(gè)個(gè)的盒子按照一定規(guī)則排列起來,因而 TeX 的算法理論上適用于任何字符。ASCII 字符簡單理解,就是在半角模式下你的鍵盤能直接輸出的字符。
在 XeTeX 出現(xiàn)之前,為了能讓 TeX 系統(tǒng)排版中文,國人曾使用了 天元、CCT、CJK?等手段處理中文。其中 天元和 CCT 現(xiàn)在已經(jīng)基本不用,CJK 因?yàn)槭褂脮r(shí)間長且效果相對較好,現(xiàn)在還有人使用。
不同于 CJK 等方式使用 TeX 和 pdfTeX 這兩個(gè)不直接支持 Unicode 字符的引擎,XeTeX 引擎直接支持 Unicode 字符。也就是說現(xiàn)在不使用 CJK 也能排版中日韓文的文檔了,并且這種方式要比之前的方式更加優(yōu)秀。
XeLaTeX 和 XeTeX 的關(guān)系與 pdfLaTeX 和 pdfTeX 的關(guān)系類似,這里不再贅述。
使用 XeTeX 引擎需要使用 UTF-8 編碼。
所謂編碼就是字符在計(jì)算機(jī)儲(chǔ)存時(shí)候的對應(yīng)關(guān)系。例如,假設(shè)有一種編碼,將漢字“你”對應(yīng)為數(shù)字“1”;“好”對應(yīng)為數(shù)字“2”,則含有“你好”的純文本文件,在計(jì)算機(jī)中儲(chǔ)存為“12”(讀取文件的時(shí)候,將“12”再轉(zhuǎn)換為“你好”顯示在屏幕上或打印出來)。
UTF-8 編碼是 Unicode 編碼的一種,可以參考它的?wiki.
LuaTeX 是正在開發(fā)完善的一個(gè) TeX 引擎,相對它的前輩們還相當(dāng)?shù)牟煌晟疲@里不贅述。
之前介紹了 TeX, LaTeX, pdfTeX, pdfLaTeX, XeTeX, XeLaTeX, LuaTeX 等,他們都是 TeX 家族的一部分。但是作為一個(gè)能夠使用的 TeX 系統(tǒng),僅僅有他們還是不夠的。CTeX, MiKTeX, TeX Live 都是被稱為“發(fā)行”的軟件合集。他們包括了上述各種引擎的可執(zhí)行程序,以及一些文檔類、模板、字體文件、輔助程序等等。其中 CTeX 是建立在 MiKTeX 的基礎(chǔ)之上的。
TeX - pdfTeX - XeTeX - LuaTeX 都是排版引擎,按照先進(jìn)程度遞增(LuaTeX 尚未完善)。
LaTeX 是一種格式,基于 TeX 格式定義了很多更方便使用的控制命令。上述四個(gè)引擎都有對應(yīng)的程序?qū)?LaTeX 格式解釋成引擎能處理的內(nèi)容。
CTeX, MiKTeX, TeX Live 都是 TeX 的發(fā)行,他們是許許多多東西的集合。
更多建議: