TeX 提示中未定义的控制序列中的数字有什么作用?

TeX 提示中未定义的控制序列中的数字有什么作用?
$ latex
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=latex)
 restricted \write18 enabled.
**\s666666
entering extended mode
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
! Undefined control sequence.
<*> \s
      666666
? 2
<*> \s66
        6666
?

在上面的例子中,输入 a 会2做什么?为什么它会从未定义的控制序列中选择两个字符?

答案1

TeX 错误上下文行总是成对出现。在错误消息中:

! Undefined control sequence.
<*> \s
      666666
?

第一行(以 结尾的行\s)显示了 TeX 发现未定义的控制序列时看到的内容:\s,所以是控制序列,而不是\s666666(因为数字通常不会成为控制序列名称:只有字母)。

现在关于2你输入的:假设你输入了?,TeX 会告诉你该怎么做:

phelype@phelype ~> tex
This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
**\s666666
! Undefined control sequence.
<*> \s
      666666
? ?
Type <return> to proceed, S to scroll future error messages,
R to run without stopping, Q to run quietly,
I to insert something, 
1 or ... or 9 to ignore the next 1 to 9 tokens of input,
H for help, X to quit.
?

1当您在 中输入数字时9,TeX 将忽略接下来19标记。因此,当您输入 时2,TeX 会忽略您输入的两个6。事实上,如果我2像您一样在上面的提示中输入 :

? 2
<*> \s66
        6666
?

TeX 会按照承诺执行,忽略接下来的两个标记(请记住,TeX 已经处理的内容在第一行(\s66),其余的在下面的行),然后再次等待输入。如果我点击<return>这里,TeX 将继续处理其余的输入(6666),并提示你*,此时你可以输入\bye,TeX 将完成其工作,生成的.dvi文件将只包含以下6666内容:

在此处输入图片描述

注意:我tex在示例中使用它来避免 LaTeX 的Missing \begin{document}错误,但原理是一样的。

相关内容