一點(diǎn)并不正式的說(shuō)明
本帖最后由 milksea 于 2011-2-11 22:35 編輯補(bǔ)充:TUG 的說(shuō)明 http://www.tug.org/levels.html
我作個(gè)簡(jiǎn)單的說(shuō)明。
語(yǔ)言層面:
TeX 是一種 宏語(yǔ)言 。就像別的語(yǔ)言有庫(kù)一樣,TeX 語(yǔ)言有 宏 的集合。這些宏,就是用這個(gè)語(yǔ)言寫(xiě)出來(lái)的東西,供大家共用的。TeX 有個(gè)最基本的宏集合,與基礎(chǔ)語(yǔ)言一起構(gòu)成一種“ 格式 ”,就是 Plain TeX?;镜?TeX 語(yǔ)言和 Plain TeX 的宏,都是 Knuth 完成的。
后來(lái)有了 LaTeX,就是 Lamport TeX。LaTeX 也是宏的集合,也構(gòu)成一種與 Plain TeX 不一樣的 格式 。這種格式提供了不少方便的功能,并強(qiáng)調(diào)結(jié)構(gòu)化的文檔,因而很快風(fēng)行起來(lái)。
世界在發(fā)展,LaTeX 這個(gè)格式提供的基本功能并不能滿足所有人的需要,就有人接著寫(xiě)宏。這些宏可能就是在 LaTeX 這個(gè)格式的框架下面編寫(xiě)的,也就是說(shuō)是依賴于 LaTeX 宏的宏。一些有能力有精力的人把他覺(jué)得有用的宏打成包,公開(kāi)發(fā)布,就成為了 LaTeX 的 宏包 。換言之,宏包就是基本的格式的擴(kuò)展。當(dāng)然它是人人可寫(xiě)的,特別有名的,比如美國(guó)數(shù)學(xué)會(huì)官方定制的 AMSTeX/AMSLaTeX,就是一套 TeX/LaTeX 格式下面的宏包。
再來(lái)說(shuō)軟件層面:
一個(gè)語(yǔ)言是抽象的,不能運(yùn)行就沒(méi)有結(jié)果。因此 Knuth 在設(shè)計(jì)這個(gè)語(yǔ)言的同時(shí)也給出了一個(gè)程序用來(lái)把 TeX 語(yǔ)言的代碼轉(zhuǎn)換為排版的結(jié)果——這個(gè)程序當(dāng)然也叫 TeX。嗯,可以把這個(gè)程序看做編譯器。直接運(yùn)行 tex 命令(我用小寫(xiě)字母表示你實(shí)際使用的命令),默認(rèn)就是用 Plain TeX 這種格式進(jìn)行排版。為示區(qū)別,我們可以把 Knuth 的這個(gè) TeX 程序叫 Knuth TeX。
用 tex 加上一個(gè)選擇格式的命令行編譯選項(xiàng),就可以改用 LaTeX 這種格式進(jìn)行排版了。但這很麻煩,于是就把 tex 命令與對(duì)應(yīng)編譯選項(xiàng)合成為一個(gè)命令,叫 latex。簡(jiǎn)言之,latex 命令就是 tex 命令加一個(gè)選項(xiàng)的簡(jiǎn)寫(xiě)方式。
Knuth TeX 這個(gè)程序有一些功能不好實(shí)現(xiàn),后面就有人進(jìn)行擴(kuò)展,得到 ε-TeX 這個(gè)程序,一般寫(xiě)成 eTeX。eTeX 程序和 Knuth TeX 都是 TeX 語(yǔ)言的一個(gè)實(shí)現(xiàn),eTeX 增加了少量的幾個(gè)命令,但一般來(lái)說(shuō)是沒(méi)有太多區(qū)別的。
Knuth TeX 輸出的格式是 DVI(DeVice Independent)文件,但后來(lái)電子出版業(yè)和電子文檔交換中常用的格式是 Adobe 公司開(kāi)發(fā)的 PostScript 格式(PS)和 Portable Document Format 格式(PDF)。因此就需要有一些工具完成這樣的轉(zhuǎn)換,一些轉(zhuǎn)換程序應(yīng)運(yùn)而生:Dvips(把 DVI 轉(zhuǎn)換為 PS);DVIPDF、DVIPDFM、DVIPDFMx(把 DVI 轉(zhuǎn)換為 PDF,可以認(rèn)為后面的是前面的改進(jìn)版)。
轉(zhuǎn)換的過(guò)程令人不爽,于是就又有了 TeX 語(yǔ)言的又一個(gè)實(shí)現(xiàn),pdfTeX。它會(huì)把 TeX 語(yǔ)言寫(xiě)的代碼直接編譯成 PDF 文件。當(dāng)然,不難理解 pdftex 命令就是用 pdfTeX 這個(gè)程序和 Plain TeX 這個(gè)格式進(jìn)行排版,而 pdflatex 這個(gè)命令就是用 pdfTeX 這個(gè)程序和 LaTeX 格式進(jìn)行排版。不過(guò) pdfTeX 程序也保留了輸出 DVI 格式的能力。
時(shí)代在發(fā)展,多字節(jié)的編碼漸漸代替 ASCII 成為主流。為了支持 Unicode 編碼和直接訪問(wèn)操作系統(tǒng)字體,又出現(xiàn)了 TeX 語(yǔ)言的新的實(shí)現(xiàn),即 XeTeX。作為一個(gè)現(xiàn)代的程序,XeTeX 也直接輸出 PDF 文件(我們暫不去管它內(nèi)部有格式轉(zhuǎn)換的實(shí)現(xiàn)方式)。于是,不難理解 xetex 命令就是使用 XeTeX 程序以 Plain TeX 格式排版,而 xelatex 命令就是用 XeTeX 程序以 LaTeX 格式排版。
哦,人們的要求總是在發(fā)展,現(xiàn)在又想在 TeX 中嵌入其他語(yǔ)言進(jìn)行更強(qiáng)有力的擴(kuò)展了。于是 Lua 腳本語(yǔ)言和 TeX 語(yǔ)言的結(jié)合體,LuaTeX 應(yīng)運(yùn)而生。LuaTeX 程序也是 TeX 語(yǔ)言的一個(gè)完整的有擴(kuò)展的實(shí)現(xiàn)。LuaTeX 支持 Unicode、系統(tǒng)字體和內(nèi)嵌語(yǔ)言擴(kuò)展,能直接輸出 PDF 格式文件,也可以仍然輸出 DVI 格式。于是 LuaTeX 程序又對(duì)應(yīng)了許多命令:luatex 使用 Plain TeX 格式,輸出 DVI;lualatex 使用 LaTeX 格式,輸出 DVI;pdfluatex 使用 Plain TeX 格式,輸出 PDF;pdflualatex 使用 LaTeX 格式,輸出 PDF。
瞧,語(yǔ)言的脈絡(luò)是簡(jiǎn)單的,但軟件程序總是層出不窮。
故事還沒(méi)有完,前面我遺漏了一個(gè)重要的 格式 ,叫做 ConTeXt。這個(gè)格式從一開(kāi)始就很強(qiáng)調(diào)與腳本語(yǔ)言,也就是具體實(shí)現(xiàn)程序的結(jié)合。過(guò)去舊版本的 ConTeXt 是使用 pdfTeX 程序作為它的排版引擎的,用來(lái)擴(kuò)展的腳本語(yǔ)言是 ruby,編譯文件使用的命令一般是 texexec;新版本的 ConTeXt 則使用 LuaTeX 作為它的排版引擎,腳本也都直接使用 Lua,編譯時(shí)使用的命令是 context。那么不難猜,所謂“XeConTeXt”是什么東西,它事實(shí)上是 ConTeXt 改用 XeTeX 程序作為它的排版引擎的一種編譯方式,實(shí)際的命令則是 texexec 或 context 加上適當(dāng)?shù)拿钚羞x項(xiàng)。
最后說(shuō)一下 BibTeX 和 MakeIndex。這兩個(gè)都是與 TeX 相關(guān)聯(lián)的工具程序,一般用在 LaTeX 格式上。BibTeX 處理 .tex 文件,根據(jù)其中的引用,從文獻(xiàn)數(shù)據(jù)庫(kù)中提取生成參考文獻(xiàn)列表;而 MakeIndex 處理 LaTeX 格式編譯時(shí)輸出的 .idx 文件(里面是索引條目),生成 .ind 文件(里面是排序整理好的索引條目)。
(是的,上面的敘述我還是略去了一些細(xì)節(jié),東西很雜,不多說(shuō)了。)
轉(zhuǎn)自:
http://bbs.ctex.org/viewthread.php?tid=49647
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
