Knuth 如何/在哪里定义著名的 \TeX 宏?

Knuth 如何/在哪里定义著名的 \TeX 宏?

有人知道 Knuth 最初是如何定义著名的 TeX 宏的吗\TeX?具体来说,我想知道在哪里我可以在 TeXLive 源文件集中找到正在构建的这个宏。

我问这个问题不是为了重新创建它,也不是为了更好地理解宏。我问这个问题是因为我已经研究 TeX 源代码/TeXbook/tex.web 一段时间了,但我仍然对它的编程结构感到困惑。我真正能了解到的是,其中一些是用 WEB、Pascal、一种叫做 Pascal-H 的东西编写的,然后 TeXLive 制作了 WEB2C 将其翻译成 C 等,所以我觉得具体确定\TeXTeX 源代码中定义的位置将有助于理清这些问题。

答案1

\TeX定义在plain.tex作为

\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}

或在 LaTeX 中(ltlogos.dtx) 作为

\DeclareRobustCommand\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}

(不同之处在于 LaTeX 制作了\TeX一个强健的宏,并添加了空间因子校正 \@)。

您可以使用\show\TeX在纯 TeX 或最新的 LaTeX 发行版中查看其定义\ShowCommand\TeX

> \TeX=robust macro:
->\protect \TeX  .

> \TeX =\long macro:
->T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\@.
<argument> \TeX  
                 
<*> \ShowCommand\TeX
                     \stop
?

此宏是手动调整为 Computer Modern 的,因此如果您更改字体,则可能需要调整字距。

答案2

Phelype Oleinik 的回答确实给出了文件中出现的 TeX 徽标的定义plain.tex,但五卷本中出现的其他字体的各种字距使用了不同的值。计算机与排版

cmrKnuth 为 TUGboat 撰写了一篇文章,解释了这些差异以及差异背后的原因,并给出了Computer Modern 系列 以外字体的值:“各种字体的 TeX 徽标”,TUGboat,第 7 卷(1986 年),第 2 期,第 101 页

答案3

这个答案除了 Phelype 和 Barbara 已经告诉你的有关宏的内容之外,没有其他内容\TeX。但是,为了完整起见,我只想指出一个名为的命令行工具的存在,texdef它根据提供的参数为你提供 TeX 宏的定义。在这种情况下

[paulo@cambridge ~] $ texdef TeX

\TeX:
macro:->T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX

带来 Phelype 提到的原始定义。通过调用该工具而不使用任何附加标志和选项,texdef假定 TeX。如果我们明确要求 LaTeX 定义 ( -t latex),

[paulo@cambridge ~] $ texdef -t latex TeX

\TeX:
macro:->\protect \TeX  


\TeX :
\long macro:->T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\@

该工具为我们提供了 LaTeX 中定义的强健版本。

相关内容