有人知道 Knuth 最初是如何定义著名的 TeX 宏的吗\TeX
?具体来说,我想知道在哪里我可以在 TeXLive 源文件集中找到正在构建的这个宏。
我问这个问题不是为了重新创建它,也不是为了更好地理解宏。我问这个问题是因为我已经研究 TeX 源代码/TeXbook/tex.web 一段时间了,但我仍然对它的编程结构感到困惑。我真正能了解到的是,其中一些是用 WEB、Pascal、一种叫做 Pascal-H 的东西编写的,然后 TeXLive 制作了 WEB2C 将其翻译成 C 等,所以我觉得具体确定\TeX
TeX 源代码中定义的位置将有助于理清这些问题。
答案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
,但五卷本中出现的其他字体的各种字距使用了不同的值。计算机与排版。
cmr
Knuth 为 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 中定义的强健版本。