1. 程式人生 > >PDFLaTex-XeLatex-PDFTex-XeTex等區別

PDFLaTex-XeLatex-PDFTex-XeTex等區別

前言

在接觸TeX兩年之後,依然對於TeX的一些術語之間的關係表示不解。比如LaTeX、pdfLaTeX、XeLaTeX、TeX Live、CTeX等等。這些術語究竟代表什麼?它們之間是怎樣的關係?

TeX

首先是一種巨集語言,同時其也是一種排版引擎。基本的TeX系統只有300多個元命令 (primitive) ,十分精悍,但是很難讀懂。

引擎

引擎是真正幹活的程式。引擎的基本功能就是解釋TeX語法,把字排成行,把行排成頁,涉及到斷字、斷行、分頁等演算法。最原始的引擎是TeX。

  • TeX:1978年由Donald Erwin Knuth開發。是後來大部分TeX相關的基礎。其生成dvi檔案,然後經由其他程式轉換為pdf檔案。

  • pdfTeX:Tex語言的又一個實現,將TeX程式碼直接編譯成PDF檔案。

  • XeTeX:TeX 語言的新的實現,支援 Unicode 編碼和直接訪問作業系統字型。

  • LuaTeX:TeX 語言的一個完整的有擴充套件的實現。LuaTeX支援Unicode、系統字型和內嵌語言擴充套件,能直接輸出PDF格式檔案,也可以仍然輸出 DVI 格式。

格式

TeX語言本身只有300個命令,晦澀難懂,只適合非正常的人類。一個簡單的符號可能就需要多個命令來實現,可以將這些最基本的命令封裝起來做個簡寫(巨集)以實現特殊的目的。一堆簡寫的合集就構成了格式。格式可以與不同的引擎相結合。

  • Plain TeX:由Don Knuth提供的最小的巨集集合。

  • LaTeX:更易於使用的巨集集,最常見的一種格式。

  • ConTeXt:另一種常見的格式。

巨集包

一些輔助檔案,在LaTeX中叫做packages,在ConTeXt中叫做modules。在LaTeX格式中,導言區的\usepackage的作用就是引入各種巨集包。巨集包其實也是一堆基本的TeX命令的集合,只是其不夠全,所以稱之為巨集包而不是格式。

發行版

一個完整的TeX需要最基本的TeX引擎、格式支援、各種輔助巨集包、一些轉換程式、GUI、編輯器、文件檢視器等等。通過選擇不同的組合就構成了不同的發行版。

  • TeX Live:支援Linux,Windows,Mac OS

  • MiKTeX:只支援Windows

  • CTeX:CTeX基於MiKTeX,並加入了中文的支援,只支援Windows。同時CTEX是一個網站,ctex是可以很好支援中文的巨集包。

相關命令

在介紹了引擎以及格式之後,二者不同的搭配方式需要呼叫不同的命令:

表1: Tex相關命令比較

小結

目前最常用的引擎是pdfTeX和XeTeX,其中XeTeX可以很好的支援中文,因而受到國人的青睞。格式方面LaTeX當仁不讓。所以目前比較流行的編譯命令是xelatex,同時在中文支援方面,幾年前是CJK巨集包,現在是ctex巨集包。

參考文章

各種Tex解釋

TeX:一種巨集語言。

Plain Tex: Tex中的一個最基本的巨集集合與TeX的基礎語言構成的一種格式。

LaTex: Tex中的一個巨集集合,構成一種與 Plain TeX 不一樣的格式。

Tex程式:把Tex語言轉換為排版的程式,也叫Tex。為區別,稱這個 TeX 程式叫Knuth TeX。

tex命令:Tex程式中的編譯命令。tex命令預設用Plain TeX格式進行排版。也就是說tex命令後面預設跟的tex檔案應該是用Plain Tex格式寫的。

latex命令:tex命令加上某一個選項使用,就會用LaTeX 格式進行排版,也就是說此時後面跟的tex檔案應該是用LaTex格式寫的。為方便,就把tex 命令與對應編譯選項合成為一個命令,叫latex命令。

ε-TeX 程式:Knuth TeX程式的一個擴充套件,也是一個程式,一般寫成 eTeX。增加了少量的幾個命令,但一般來說是與Knuth TeX程式沒有太多區別的。

PDFTeX程式:Tex語言的一個實現,也就是把Tex語言轉換為排版的一個程式。它會把TeX 語言寫的程式碼直接編譯成 PDF檔案。

PDFLaTeX命令:PDFTeX程式中的命令,用來編譯用LaTeX格式寫的tex檔案。

XeTeX程式:TeX語言的新的實現,即把Tex語言轉換為排版的一個新程式。支援Unicode編碼和直接訪問作業系統字型。

XeLaTeX命令:XeTeX程式中的命令,用來編譯用LaTeX格式寫的tex檔案。

實現:在文中的意思就是指“程式”的意思。如文中:eTeX程式和 Knuth TeX 都是TeX語言的一個實現(也就是說,eTeX 程式和 Knuth TeX 都是把TeX語言轉換為排版的程式。程式作用於tex文字檔案,把tex檔案編譯成dvi檔案)。