TeX
| 一位華夏公益教科書使用者認為此頁面應該分割成更小的頁面,並有更窄的子主題。 您可以透過將此大頁面分割成更小的頁面來提供幫助。請確保遵循 命名政策。將書籍分成更小的部分可以提供更多的關注,並允許每個部分都能夠很好地完成一項任務,這將使每個人受益。 |
TeX 是一種用於排版文件的語言,尤其是那些包含數學的文件。它同時具有程式設計和標記功能。在本手冊中,我們將描述“原始 TeX”—— 宏語言 plain TeX、LaTeX、ConTeXt 等的基本引擎。如果您不熟悉 TeX,那麼這可能不是您想閱讀的內容:您可能正在尋找 LaTeX,它是 TeX 的一個宏包,可以更輕鬆地生成標準文件。
TeX 是 唐納德·克努特 的宏語言,用於排版文件。原則上,TeX 可以用於任何型別的程式(它是一個圖靈完備程式語言)。
學習 TeX 語言的權威來源,包括編寫文件和程式設計,是唐納德·克努特編寫的TeX 手冊。還有一個全面的程式設計師參考手冊,叫做TeX by topic,作者慷慨地將其免費提供在他的網站上,以及 TeX for the Impatient。
我們描述 TeX 的基本結構:暫存器、引數和其他影響 TeX 原始檔處理的資源。
- 壞度
- 排版文字行的間距質量的衡量標準。
- 基線
- hbox
- 溢位錯誤
- TeX 無法生成不溢位盒子的結果,並且已經放棄。通常會出現連字或對齊問題:將行上的最後一個詞移到下一行將使行中的空格比當前限制更寬;將詞保留在行上將使空格比當前限制更窄,因此詞被保留在行上,但詞之間的空格最小,這會導致行溢位。
- 不足錯誤
- TeX 無法生成適當填充盒子的結果,並且已經放棄。TeX 無法將行拉伸到足夠寬以適合,而不會使間距大於當前允許的最大值。壞度(0-10,000)表示嚴重程度。
盒子的概念是 TeX 的基礎。盒子代表組成排版頁面的內容。例如,字母、文字行、段落、數學公式及其組成符號在概念上都只是 TeX 貼上在一起以構建頁面的盒子,頁面本身也是一個盒子。盒子通常由更小的盒子組成。
每個盒子都有許多屬性,TeX 使用這些屬性使用各種演算法將盒子貼上在一起。這些是
- 基線
- 這是一條垂直分割盒子的水平線。
- 高度
- 從基線到盒子頂部的距離。
- 深度
- 從基線到盒子底部的距離。
- 寬度
- 盒子的水平長度。
- 參考點
- 基線與盒子左側相交的點。
例如,字母“a”放置在一個盒子裡,使其直接坐在基線上;而像“p”、“g”或“j”這樣的字母則延伸到基線以下。當 TeX 正在構建一行普通文字時,所有基線都是對齊的,因此一行字元的定位方式與人們預期的一致。字型設計師決定如何將每個字形放置在其各自的盒子裡。
雖然盒子代表頁面的內容,但膠水代表盒子之間填充的空白,並且當 TeX 正在構建頁面時,這種膠水可以擴充套件或收縮以允許內容最佳定位。這種膠水最終被“設定”,之後它就不能再調整——它只是固定的空白。
存在許多型別的預定義膠水,以滿足排版中可能出現的不同需求。
在處理原始檔的每個階段,TeX 都處於以下模式之一
TeX 如何解釋原始檔取決於當前模式。
TeX 有 25 個 *關鍵字*。這些詞前面沒有反斜槓,也不區分大小寫。TeX 僅在某些上下文中將這些詞解釋為關鍵字。
這裡我們描述了 TeX 的 325 個原始控制序列中的每一個。每個條目都給出概要、描述和示例。概要給出了控制序列的正確語法上下文。例如,
\pretolerance=<integer>
給出了 TeX 整數引數之一的語法。在原始檔中,需要用 `<integer>` 替換實際的整數,如條目 `<a href="/wiki/TeX/pretolerance" title="TeX/pretolerance">\pretolerance</a>` 的“描述”部分所述。一般來說,任何形式為 `<...>` 的內容(其中省略號是一些描述性詞語)都需要用適當的內容替換;“描述”部分將告訴你哪些內容是允許的。
有時語法的一部分是可選的,這可以透過將它放在方括號中來表示,例如
\ifmmode <TeX code 1> [\else <TeX code 2>] \fi
這給出了 TeX 的 if-then-else 控制結構之一的語法。這裡的方括號表示 `\else <TeX code 2>` 在實際使用中不必包含。在任何情況下,方括號都不應該在實際使用中使用。
- www.tug.org — TeX 使用者組
- ctan.tug.org/tex-archive/info/gentle/gentle.pdf — Michael Doob 的 TeX 指南
- TeX for the Impatient
- TeX Primitive Control Sequences — TeX 參考手冊
- TeX by Topic — Victor Eijkhout 編寫的免費提供的書籍。
