! Undefined control sequence は最もよく出る LaTeX エラーで、LaTeX が 知らないコマンド(\なんとか)に出くわした という意味です。原因はほぼ 3 つ——綴り間違い、読み込み忘れのパッケージ、定義していない自作コマンド。このページで順に潰します。
メッセージの読み方
エラーは ! Undefined control sequence に続けて、l.NN でその行を 未定義コマンドの直後で折り返して 示します。折り返しの 直前のトークン が、LaTeX が知らないコマンドです。次は \frac を \fra と打ち間違えた例です(エラーの一般的な読み方は「エラーの読み方・デバッグ」へ)。
terminal
! Undefined control sequence.
l.12 \fra
c{1}{2}3 つの原因と対処
- 綴り違い(最多)—
\fra→\frac、\textbnf→\textbfのようなタイプミス。正しい綴りに直す。 - パッケージ未読込 — そのコマンドを出すパッケージを
\usepackageしていない(例:\includegraphicsはgraphicx、\topruleはbooktabs、多くの数式記号はamsmath)。プリアンブルで読み込む。 - 自作コマンド未定義 —
\newcommandでの定義忘れ、定義より前での使用、またはスコープ外。定義を(使う前に)置く。
見つけ方のコツ
l.NN の直前のトークンが未定義コマンドなので、エディタでその行を見ます。心当たりがなければ、最近追加したコマンドやパッケージ を疑うのが近道。あるコマンドがどのパッケージのものか分からなければ texdoc パッケージ名 で調べられます。原因の切り分けには、怪しい箇所をコメントアウトして再コンパイルするのも有効です。