什么是“纯 TeX”?

什么是“纯 TeX”?

我偶尔会看到这样的说法,纯 TeX 与 TeX 不一样,因为纯 TeX 已经是一种格式。

什么是纯 TeX?它与真正的 TeX 有何区别?

一些答案在这里(TeX 引擎之间的差异),但我正在寻找一个明确的总结。

答案1

“最小”的 TeX 是 Knuth 所说的“原始”TeX(TeXbook,第 342 页):它只知道原始命令,没有宏。Plain TeX 是一组宏(由 Knuth 开发),它使 TeX 可以在打字员的日常生活中使用。

是的,现在我们使用了许多不同的宏集……其中最流行的一个当然是 LaTeX。Plain TeX 是其中最简单的一个 ;-)

关于格式(据我所知)。每次运行时“教” TeX 所有宏(例如纯 TeX 的宏)会花费太长时间(至少在过去是这样)。因此,我们只需做一次就行了:我们输入定义并拍摄快照,称为格式。


可用的命令可以分为原始命令和。宏是由原始命令和/或其他宏构建的复合命令。

“原始” TeX 只知道基本命令。TeX 知道哪些基本命令取决于特定引擎。例如,eTeX 比原始(Knuth 的)TeX 拥有更多基本命令;\unexpanded是新 eTeX 基本命令的示例。基本命令示例:\relax\def\halign。(大约有 300 个。)

格式(纯 TeX、LaTeX 等)通过定义宏来扩展 TeX 的词汇表。(实际上,软件包也会这样做。)例如,纯 TeX 定义宏\item\rm\newdimen\loop等。(纯 TeX 定义了大约 600 个宏。因此,纯 TeX 的完整词汇表大约有 900 个词。)

要检查命令是原始命令还是宏命令,可以:

  • 查看 TeXbook 的索引:原始操作用星号标记
  • 使用(原始)命令\show:将\show\cs的含义写入\cs终端。如果您使用\show原始命令,它将仅告诉您其“名称”:\relax=\relaxhalign=\halign等。相反,如果您\show在宏上使用 ,您将获得其定义,例如\newdimen=macro:->\alloc@ 1\dimen \dimendef \insc@unt

重申一下,有两种类型的命令:

  • 原语(这些是“原始” TeX 所知道的唯一东西)
  • 宏(“原始” TeX 不了解宏;宏由格式和包定义;格式和包仅定义宏)

答案2

对 Saso 的回答仅作一点说明(希望)可以消除他在回答评论中可能提到的任何不便之处:

  • TeX。图灵完备的计算机语言(与任何其他语言一样强大,例如 C、Java、Python 等)。“TeX”一词通常与“plainTeX”同义。TeX(该语言)高度专业化,因为它旨在提供一种标记语言,而不是一种计算机语言。

  • plainTeX。所谓的 TeX 的“格式”:运行 iniTeX(例如$ tex -ini在 Linux shell 上);定义你喜欢的字体和宏;在 iniTeX 中运行\dump。这会生成一个可以使用 virTeX 加载的“格式文件”,以便 继续你离开的地方。plainTeX 由 Don Knuth 本人提供,并以“TeX”一词来指代。您可以通过以下方式进行实验(再次使用 Linux shell):

$ tex 此后,TeX 所涉及的一些随机内容将会产生
** 继续输入 \relax
* [your code goes here]
* \bye 是你最后输入的内容 你得到的是一个名为“texput.dvi”的文件,可以使用 pdf 查看器查看

抱歉,我回避了,概括:

  • iniTeX。启用原语的地方\dump。用于创建格式文件。只知道 TeX 原语。

  • virTeX。可以轻松加载格式文件。在加载任何文件之前,它只知道 TeX 基元。

  • plainTeX . 有点类似,但不等同于 'virTeX 已加载名为“plain.tex”的文件'。诸如此类的东西随处可见,它们被称为 LaTeX、ConTeXt AMSTeX,... 被称为“格式”,与 '格式文件' 它们只能通过外部(wrt TeX)程序来制作。

答案3

Donald Knuth 最初的排版系统是 TeX。Leslie Lamport 通过在其上添加一堆宏使其更易于使用,结果就是 LaTeX。两者的核心都是 TeX,并且非常清楚您谈论的是原始的、未经修饰的 TeX,它有时被称为“纯 TeX”。

相关内容