Latex介紹


Latex中各種概念的區分

目錄:

1 名詞理解

latex(tex)本身其實並不復雜, 復雜的是各種不同的版本 + 中文環境 + 不同的操作系統版本 (尤其是linux下), 這幾點加起來, 就讓人頭暈了. 比如:

  • 各種名詞讓人頭暈: tex, ctex, xetex, latex, xelatex, texlive, texpdf, pdflatex
  • 各種中文字符集, 字體, 亂碼, 編譯報錯問題.

在這里對一些概念試圖加以區分. 對於不太想了解這些細節, 只想快速上手的人, 可以忽略本文直接移步:

(對於linux的用戶, 如果想快速無障礙的上手, 強烈建議安裝texlive-full latex-cjk-all這兩個包, 這兩個包很大, 不過正因如此, 包含的東西比較多, 所以網上與書上找到的各種例子, 基本上都能跑通. 所以這個空間換時間還是比較值得的.)

但是Mike推薦新手還是大概瀏覽一下本文, 哪怕有個籠統的印象也好.

下表來自(http://blog.csdn.net/dbzhang800/article/details/6820659)

類型 名詞 解釋
引擎 (Knuth)TeX 真正的(原始的)TeX
引擎 ε-TeX 相對於原始的TeX它提供了一種擴展模式
引擎 pdfTeX 它從tex文件不通過dvi文件直接生成pdf文件(開發者已經轉向LuaTeX)
引擎 LuaTeX 它使用Lua作為擴展語言, 對於LaTeX支持尚不完善?
引擎 XeTeX 相對於原始的TeX, 主要增加了Unicode和 OpenType 的支持
------- ---------------- ---------------------------------------------------------------
宏包 plain TeX 最古老的TeX宏包, 提供了一些最基本的命令
宏包 AMSTeX 是美國數學會提供的一個TeX宏包, 它添加了許多數學符號和數學字體
宏包 LaTeX 相對於PlainTeX, 它使得科技文檔的排版更加直觀和方便
宏包 ConTeXt 和LaTeX 相比, 它更加靈活和自由
------- ---------------- ---------------------------------------------------------------
發行版 TeX Live 國際TeX用戶組織TUG開發,支持不同的操作系統
發行版 MiKTeX Windows 下廣泛使用的一個TeX發行版
發行版 ConTeXt Minimals 它包含了最新版本的 ConTeXt
發行版 teTeX 一個Unix下的TeX發行版, 現在已經停止更新且並入TeXLive
發行版 fpTeX 一個Windows的TeX發行版, 已不再更新

那么, 什么叫引擎, 宏包, 發行版呢?

打個不太恰當但是比較直觀的比方:

(該列表為Mike個人的理解)

  • Tex就相當於C/C++語言, 規定了基本的關鍵字, 語法等.
  • 宏包就相當於C/C++各種庫和宏函數等, 比如C++提供標准庫, 但是有些人覺得不夠用, 又開發了boost等庫, 這就有點類似PlainTeX與LaTeX的關系.
  • 引擎, 就有點類似於編譯器(Mike: 或者有點類似於各種編程框架吧? 目前還不是理解的很清楚).
  • 而發行版, 就有點類似於同是gnu編譯器, 但是有Ubuntu下的, 有Fedora下的(額, 這個比方貌似不太恰當, 勉強幫助理解吧).

2 稍微具體一些的解釋

2.1 PlainTeX(宏包)

原始的TeX已經有了一組宏包, 也就是Knuth所寫的著名的Plain TeX(原始的TeX和Plain Tex都是<<The TeXbook>>一書中介紹的內容).

2.2 LaTeX(宏包)

Tex中的一個宏包合, 構成一種與 Plain TeX 不一樣的格式. PlainTeX很底層,不夠方便, 直觀, 於是Leslie Lamport寫了另一組宏, 稱為LaTeX, 主要是它版本配置和文中內容適度分開處理.

每一個LaTeX 命令實際上最后都會被轉換解釋成幾個甚至上百個TeX 命令. 但是, 普通用戶可以無需知道這中間的復雜聯系. 就象編程的時候如果使用一些已經編譯 好的函數庫和模板可以使我們僅僅用幾個命令就實現很多功能一樣, LaTeX 根據人們排版文章的習慣, 定義了許多命令和模板, 通過這些命令和模板, 我們可以很快的得到漂亮的排版結果.

2.3 ctex(宏包)

ctex宏包提供了一個統一的中文LaTeX文檔框架,底層支持CCT, CJK和xeCJK三種中文LaTeX系統.

  • CCT 非常不推薦了
  • CJK 這個? 應該在windows下工作還很不錯
  • xeCJK 比較推薦(該推薦來自: http://blog.csdn.net/dbzhang800/article/details/6820659)

ctex宏包提供了編寫中文LaTeX文檔常用的一些宏定義和命令.

主要文件包括ctexart.cls, ctexrep.cls, ctexbook.cls 和 ctex.sty, ctexcap.sty.

對於CJK與xeCJK的來龍去脈, 可以參考這個討論: 知乎:如何評價xeCJK

2.4 pdfTeX(引擎)

它從tex文件不通過dvi文件直接生成pdf文件(開發者已經轉向LuaTeX)

2.5 LuaTeX(引擎)

pdfTeX 的后繼是LuaTEX, 這是一種把腳本語言 Lua 和 TeX 結合起來的程序.

2.6 XeTeX(引擎)

是一種使用Unicode的TeX排版引擎, 並支持一些現代字體技術, 例如 OpenType. 其作者和維護者是Jonathan Kew, 並以X11自由軟件許可證發布. 它原生的支持Unicode, 並默認其輸入文件為UTF-8編碼. XeTeX可以在不進行額外配置的情況下直接使用操作系統中安裝的字體, 因此可以直接利用OpenType, Graphite中的高級特性, 例如額外的字形, 花體, 合字, 可變的文本粗細等等.

2.7 XeLaTeX(引擎)

是使用LaTeX的排版引擎, 也有上述XeTeX的優點, 命令下直接使用 xelatex ***.tex 就會產生對應的PDF文件.

2.8 更多解釋

如果想了解更多的來龍去脈, 請參考劉海洋老師的<<LaTeX入門>>中的 "編譯程序" 以及 "文字編碼與 Unicode" 這兩節. 該書作者好像是CTeX的負責人之一, 所以他寫的書比較深入淺出, 尤其是對於這種歷史沿革性的內容, 比網上找來的信息看着明白多了.

這里只給出一個簡單的參考示意圖, 表示他們的發展脈絡:

各種tex關系圖

各種tex關系圖

3 Latex轉pdf流程

原始的方式

       latex         dvips        ps2pdf
*.tex ------> *.dvi ------> *.ps -------> *.pdf

dvipdfm(x)方式,少一個.ps 步驟

       latex         dvipdfm
*.tex ------> *.dvi --------> *.pdf

pdflatex或xelatex, 直接生成pdf

       pdflatex
*.tex ---------> *.dvi


免責聲明!

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



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