跳至内容

TeX

0% developed
来自维基教科书,开放世界中的开放书籍


TeX
TeX

TeX 是一种用于排版文档的语言,尤其是那些包含数学的文档。它同时具有编程和标记功能。在本手册中,我们将描述“原始 TeX”—— 宏语言 plain TeXLaTeXConTeXt 等的基本引擎。如果您不熟悉 TeX,那么这可能不是您想阅读的内容:您可能正在寻找 LaTeX,它是 TeX 的一个宏包,可以更轻松地生成标准文档。

TeX 是 唐纳德·克努特 的宏语言,用于排版文档。原则上,TeX 可以用于任何类型的程序(它是一个图灵完备编程语言)。

其他来源

[编辑 | 编辑源代码]

学习 TeX 语言的权威来源,包括编写文档和编程,是唐纳德·克努特编写的TeX 手册。还有一个全面的程序员参考手册,叫做TeX by topic,作者慷慨地将其免费提供在他的网站上,以及 TeX for the Impatient

TeX 的结构

[编辑 | 编辑源代码]

我们描述 TeX 的基本结构:寄存器、参数和其他影响 TeX 源文件处理的资源。

基本定义

[编辑 | 编辑源代码]
坏度
排版文本行的间距质量的衡量标准。
基线
hbox
溢出错误
TeX 无法生成不溢出盒子的结果,并且已经放弃。通常会出现连字或对齐问题:将行上的最后一个词移到下一行将使行中的空格比当前限制更宽;将词保留在行上将使空格比当前限制更窄,因此词被保留在行上,但词之间的空格最小,这会导致行溢出。
不足错误
TeX 无法生成适当填充盒子的结果,并且已经放弃。TeX 无法将行拉伸到足够宽以适合,而不会使间距大于当前允许的最大值。坏度(0-10,000)表示严重程度。

盒子的概念是 TeX 的基础。盒子代表组成排版页面的内容。例如,字母、文本行、段落、数学公式及其组成符号在概念上都只是 TeX 粘贴在一起以构建页面的盒子,页面本身也是一个盒子。盒子通常由更小的盒子组成。

每个盒子都有许多属性,TeX 使用这些属性使用各种算法将盒子粘贴在一起。这些是

基线
这是一条垂直分割盒子的水平线。
高度
从基线到盒子顶部的距离。
深度
从基线到盒子底部的距离。
宽度
盒子的水平长度。
参考点
基线与盒子左侧相交的点。

例如,字母“a”放置在一个盒子里,使其直接坐在基线上;而像“p”、“g”或“j”这样的字母则延伸到基线以下。当 TeX 正在构建一行普通文本时,所有基线都是对齐的,因此一行字符的定位方式与人们预期的一致。字体设计师决定如何将每个字形放置在其各自的盒子里。

虽然盒子代表页面的内容,但胶水代表盒子之间填充的空白,并且当 TeX 正在构建页面时,这种胶水可以扩展或收缩以允许内容最佳定位。这种胶水最终被“设置”,之后它就不能再调整——它只是固定的空白。

存在许多类型的预定义胶水,以满足排版中可能出现的不同需求。

在处理源文件的每个阶段,TeX 都处于以下模式之一

TeX 如何解释源文件取决于当前模式。

数学字体

[编辑 | 编辑源代码]

TeX 算法

[编辑 | 编辑源代码]

词法分析

[编辑 | 编辑源代码]

宏展开

[编辑 | 编辑源代码]

设置间距

[编辑 | 编辑源代码]

行构造

[编辑 | 编辑源代码]

页面构造

[编辑 | 编辑源代码]

数学公式的构造

[编辑 | 编辑源代码]

表格的构造

[编辑 | 编辑源代码]

连字符

[编辑 | 编辑源代码]

TeX 关键字

[编辑 | 编辑源代码]

TeX 有 25 个 *关键字*。这些词前面没有反斜杠,也不区分大小写。TeX 仅在某些上下文中将这些词解释为关键字。

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>` 在实际使用中不必包含。在任何情况下,方括号都不应该在实际使用中使用。

网络资源

[编辑 | 编辑源代码]

其他维基教科书

[编辑 | 编辑源代码]
华夏公益教科书