第 46 页TeXbook, 有
TEX 删除输入行右端出现的任何空格字符(编号 32)。然后它在行的右端插入一个回车符(编号 13),但它不会在错误恢复期间用 'I' 插入的行尾放置任何额外内容。请注意,回车符被视为行中的一个实际字符;你可以通过更改其 catcode 来获得特殊效果。
为了检查 TeX 是否在行的右端插入回车符,我编写了以下代码
\catcode`\^^M=11
hello
\bye
但它产生了
! Undefined control sequence.
l.3 \bye
我该怎么做才能看到它?
答案1
对你的代码做一些修改:
\catcode`\^^M=12
hello
\bye
然后就不会出现错误,您会在 dvi 输出中看到“hellofl”。因为 fl 是插入 cmr10 当前字体中插槽 13 的连字符,而“return”字符的代码为 13。
您的示例(catcode 为 11)将“return”字符设置为字母,因此创建了标记\bye^^M
(此控制序列的字符串由b
、y
、e
、组成return
)。这样的控制序列是未定义的。