“\csname”不需要包含“\0”吗?

“\csname”不需要包含“\0”吗?

第 40 页TeXbook

相反,您可以通过说“\csname\endcsname”从字符标记列表转到控制序列。

因此\csname TeX\endcsname等于\TeX。但是,\TeX包含四个标记,即\0 T11 e11 X11。那么,为什么这里不需要\csname第一个标记\0呢?

答案1

使用标准类别代码时,当 TeX 读取四个人物 \•T•e•X(空格仅用于在视觉上分隔字符)它看到\哪个类别代码为 0,因此它知道必须构建一个单身的令牌。

因此它查找下一个并找到T,其被分配了类别代码 11,所以现在 TeX 知道它必须构建一个控制字,因此它会读取所有后续字符,直到找到一个不属于类别代码 11 的字符。此时,它形成一个单身的在这种情况下,标记|TeX|(在 TeXbook 中,您会看到控制序列名称周围的一个框)并进入状态年代(跳过空格)。切勿将“读取部分”与 TeX 形成的标记相混淆。

类别代码 0 字符仅用于启动建立控制序列的程序姓名并且没有以任何方式保存。

如果你说

\catcode`|=0 |TeX

您将获得与 完全相同的令牌\TeX

类似地,\csname TeX\endcsname产生完全相同的标记。

相关内容