当您在 LaTeX 中遇到错误时,会打印“未定义控制序列”消息。例如,为什么它被称为“控制序列”而不是“命令”?序列如何工作?这是 TeX 还是 LaTeX 的东西?
答案1
它之所以使用“控制序列”,是因为这是 Knuth 选择的名称。在他的 LaTeX 手册中,Lamport 决定使用“命令”。
由于这些低级错误消息在 TeX 中是硬连线的,因此您无法省略或修改它们。
A控制序列可
\<letters>
例如\a
,等等\ab
\abc
\<nonletter>
,例如\?
或\.
<active character>
, 例如~
关于控制序列是什么以及如何从文本输入中解析控制序列的描述可以在 TeX by Topic 中找到。(texdoc texbytopic
从终端或http://texdoc.net/texmf-dist/doc/plain/texbytopic/TeXbyTopic.pdf)。但是,如果您愿意,您可以放心地将它们称为“命令”。
它会可以通过为 TeX 的 WEB 源编写更改文件并重新编译来修改错误消息
答案2
控制序列(通常,粗略地说)是带有反斜杠的字母序列。这是 TeX 术语。
控制序列已指定其意义。其含义一般为:
- TeX 原语 ... 由 TeX 本身处理的命令(例如
\def
)\font
。 - 宏 ... 由 声明的序列
\def
(或类似\edef
等)。例如,\newcommand
由 声明的 LaTeX 宏。宏\def
的扩展使用原语将新控制序列声明为宏。\newcommand
\def
- 寄存器...一个保存某些值的变量(
\baselineskip
例如,原始寄存器,或由等原始声明的寄存器\countdef
)\dimendef
。 - 字符常量...由
\chardef
或\mathchardef
原语声明的序列,例如\$
或\alpha
,\sum
。 - 字体选择器...由原始声明的序列
\font
。
未定义的控制序列是任何没有指定含义的控制序列。
LaTeX 文档隐藏了这些术语,只简单地提到了“命令”。LaTeX 用户在阅读 TeX 错误消息时会感到困惑。当然,最终用户不需要知道这\%
是具有“字符常量”含义的控制序列。只要知道这是打印百分号字符的“命令”就足够了。
答案3
除了现有的答案之外,“控制序列”还有一个具体的意义,并唤起准确的形象顺序拥有的字符控制语义(而不是可打印的)。
“控制字符”的概念并不新鲜(甚至在 LaTeX 出现的时候)所以谈论“控制序列”是完全有意义的。
另一方面,“命令”一词非常含糊。我很高兴 Knuth 做出了这样的选择!
答案4
为了补充现有的答案,Knuth 发表了评论在 2010 年 TUG 大会上,他发表了题为“惊天动地的公告”的戏仿演讲表明这个名字的特殊性:
我的狭隘视野的例子比比皆是,几乎在《TEXbook》的每一页上都有。例如,我使用反斜杠和其他奇怪的字符来定义我所谓的“控制序列”。你知道其他系统有控制序列吗?当然没有。