什么是Tex?
什么不是Tex
Tex绝对不是一种格式。
什么是Tex?
那么什么是Tex?好吧,这就是问题,正如哈姆雷特1所说。让我们尝试尽可能简单地回答它。
想象一下,我们有一个编程语言,该语言由两个基本命令(称为 控制序列 )或 primitives,\ a
\ a和'\ b
。用这种语言,我们可以编写用于文档(书籍,文章等)排版的程序。我们称此语言(l1)**。为了以某种方式执行这些程序,我们有一定的引擎来解释该语言的命令。
现在,假设在为某些文档编写排版程序时,我们发现子序列\ a \ b \ a
都经常出现。还假设我们的语言还有另一个原始的\ def
,它使我们能够定义子例程或宏。我们称此语言**(l2)**。在这种情况下,我们可以在程序的开头定义宏 \ def \ c {\ a \ b \ a}
,并用\ c’替换每个出现的副本,以更好地可读性和降低。
现在,如果我们想识别另一个文档,在该程序中,此命令的该子序列也经常发生,我们将不得不再次定义此宏。但是,让我们假设我们的引擎能够将\ c
宏加载到其内部状态中,然后将该状态保存为二进制文件(Adump),然后将自动加载(**(l2)**语言命令集的顶部),然后再处理每个文档的排放程序,其中哪些文档中所需的每个文档的排便程序。我们将称为\ c
宏观” 格式 扩展的原始图。因此,我们的格式是低级原始语言(L2)**的宏扩展。
该引擎还包含许多内部寄存器或 *内部参数 *,可以使用控制序列访问。除了宏定义外,格式还可能包含这些参数的初始化表达式。
碰巧的是,Donald E. Knuth 定义了一种类似于**(L2)**的语言,但其基元集更加丰富,他称之为 TeX。他还创建了一个能够理解(现在仍然能够理解)TeX 语言的引擎。他也将其命名为 TeX。
令人高兴的是,这并不是他唯一的事情。他还提出了宏扩展名或格式,他称其为 Plain Tex,这使写作计划更加方便。 Tex的初始原始人有时称为Virtex(“ Vir”为“ Virgin”),并且在考虑内部参数的默认值时,正式也是一种格式。
因此,一方面,Tex是一种编程语言。另一方面,它是一个理解这种语言的口译引擎。而且,第三手Tex是一个更通用的概念,意味着整体排版系统。
这里要注意的唯一要注意的是,实际上,文本是字样的字符也是迫使Tex引擎使用当前字体设置(又可以通过控制序列控制)的命令,迫使Tex引擎键入相应的字符(考虑到当前输入编码)。因此,在定义宏时,我们也可以使用字符。
我们希望从现在开始这个问题“什么是Tex?”您的脑海中不再存在。
1 ↩︎