"\tenrm" 不是 TEX 内置的,但为什么可以直接使用?

"\tenrm" 不是 TEX 内置的,但为什么可以直接使用?

在书的第 15 页TEXbook:使用 TEX 进行计算机排版的完整用户指南KNUTH 先生表示

TEX 手稿中使用的每种字体都与一个控制序列相关联;例如,本段中的 10 点字体称为 \tenrm,相应的 9 点字体称为 \ninerm。与 \tenrm 和 \ninerm 匹配的倾斜字体称为 \tensl 和 \ninesl。这些控制序列不是内置在 TEX 中的,也不是字体的实际名称;每当手稿中引入新字体时,TEX 用户只需编造方便的名称。此类控制序列用于更改字体。

如果为真,则\tenrm不应直接在 TeX 中使用。但是,此代码可以直接运行,这表明是\tenrm内置的,

    \tenrm Ten-point is difference between from
    \bye % end the document

答案1

你混淆了 TeX程序(或有时引擎),即实际进行排版的软件,使用 TeX格式(我们通常称之为“纯 TeX"),即引擎使用的一组宏。

当我tex在提示符下输入时我得到

This is TeX, Version 3.141592653 (TeX Live 2023) (preloaded format=tex)
**

这意味着 TeX 程序已通过加载格式启动,即首先tex加载文件。1 )程序本身没有任何预加载的字体,但格式文件有plain.texplain.tex

\font\tenrm=cmr10

在第 400 行。

latex另一方面,如果我输入提示符

This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023) (preloaded format=latex)
 restricted \write18 enabled.
**

这表明 pdfTeX 程序(它是一个不同的引擎比 TeX 更强大,但可以完成 TeX 能做的所有事情,再加上一些其他事情)正在以 格式运行latex,这意味着latex.ltx正在使用一组不同的宏(由 和几个其他文件定义)。当然,您可以将程序 pdfTeX 与纯 tex 格式一起使用:当您pdftex在提示中键入时会发生什么。

诚然,TeX Book 并不总是 100% 透明地说明哪些命令是原始命令,哪些命令是格式中定义的宏。原始控制序列在索引中用星号标记。另一个很好的资源是https://www.tug.org/utilities/plain/cseq.html


进一步阅读:


1)善意的谎言……格式以更高效的方式构建。

相关内容