第 3 章开头:控制 TeXKnuth 在他的 TeXbook 中解释说,控制序列有两种形式:控制词和控制符号。
控制字
第一种,比如
\input
,被称为控制字; 它由转义符和后跟一个或多个字母,后面跟着一个空格或字母以外的其他字符。[...] 如果你想知道“字母”是什么,答案是 TeX 通常将 52 个符号 A...Z 和 a...z 视为字母。数字 0...9 是不是被视为字母,因此它们不会出现在第一类控制序列中。
控制符号
另一类控制序列,如
\'
,称为控制符号;它由转义字符和后面的单个非字母。
为了测试我对这些类别的理解,我尝试编译以下代码(使用pdftex
)......并且惊讶地发现没有任何错误!
\def\10{foo}
\def\20{bar}
\10\20
\bye
事实上,PDF 输出生成得很顺利:
我感到困惑的原因是\10
和\20
似乎不属于任何一类允许的控制序列名称(如上所述):
- 它们包含非字母;因此,它们不能被视为控制词。
- 它们由转义字符 (
\
) 和后跟的更多的而不仅仅是一个非字母;因此,它们不能被视为控制符号。
我错过了什么?
答案1
在这种情况下,0
是参数文本的一部分,并充当分隔符标记。因此,您实际上是在定义\1
和,\2
并指定0
后面需要分隔符标记。您可以使用此机制来分隔参数。