! Undefined control sequence 是最常见的 LaTeX 错误,表示 LaTeX 遇到了它不认识的命令(某个 \name)。原因几乎总是三种之一:拼写错误、忘记加载提供该命令的包,或使用了尚未定义的自定义命令。本页逐一排查。
如何读消息
错误会先显示 ! Undefined control sequence,随后用 l.NN 展示该行,并在未知命令之后断开。断行前面的那个 token 就是 LaTeX 不认识的命令。下面是把 \frac 误写成 \fra 的例子(一般的错误阅读方法见“阅读错误与调试”)。
terminal
! Undefined control sequence.
l.12 \fra
c{1}{2}三种原因与解决方法
- 拼写错误(最常见)— 例如
\fra→\frac、\textbnf→\textbf。改正拼写。 - 包没有加载 — 提供该命令的包没有
\usepackage(例如\includegraphics需要graphicx,\toprule需要booktabs,许多数学符号需要amsmath)。在导言区加载它。 - 自定义命令未定义 — 忘了
\newcommand,在定义前使用,或超出作用域。把定义放好,并放在首次使用之前。
如何追踪
l.NN 之前的 token 就是未定义命令,因此先在编辑器中查看那一行。如果没有头绪,优先怀疑最近添加的命令或包。不知道某个命令属于哪个包时,可用 texdoc PACKAGE 查文档。为了缩小范围,也可以把可疑部分注释掉后重新编译。