Undefined control sequence

! 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 查文档。为了缩小范围,也可以把可疑部分注释掉后重新编译。