「Undefined control sequence」を直す
未知のコマンドについて、タイプミス、不足パッケージ、利用できない定義、スコープの誤りをたどります。
このページの内容
Undefined control sequence は、LaTeX が読み取ったコマンドを認識していないことを意味します。一般的な原因は、綴り間違い、読み込まれていないパッケージ、定義より前に使われたプロジェクトのマクロ、スコープ外になった定義です。
未知のトークンを特定する#
問題を開き、最初のエラーを確認します。通常、コンパイル時の前後関係には、報告された行またはその直後のコマンドが示されます。プリアンブルを変更する前に、綴りと大文字・小文字を確認してください。
The domain is \(\mathbb{R}\). % Error unless a package defines \mathbb
The estimate is \(\alhpa\). % Typo: the command is \alpha
The domain is \(\R\). % Error unless the project defines \Rプロジェクト内でそのコマンドを検索します。定義へ移動を使うと、プロジェクト内の別のファイルにある、認識済みのコマンド定義を確認できます。論文やテンプレートから取り込まれたコマンドの場合は、名前から推測せず、それを導入したソースを確認してください。
原因に合った修正を適用する#
資料に記載されたパッケージのコマンドであれば、そのコマンドを提供するパッケージをプリアンブルで一度読み込みます。プロジェクト独自の略記であれば、使用前に定義します。
\documentclass{article}
\usepackage{amssymb}
\newcommand{\R}{\mathbb{R}}
\begin{document}
The function maps \(\R\) to \(\R\).
\end{document}同じ名前がすでに定義されていたらエラーにしたい場合は \newcommand を使います。グループや環境の内側に置かれた定義は、閉じ波括弧や \end の位置で適用されなくなることがあります。文書全体で使う定義は、メイン文書のプリアンブルへ移してください。定義が macros.tex にある場合は、メイン文書が最初の使用より前にそのファイルを読み込んでいることを確認します。
推測でパッケージを読み込まない#
エラーが消えるまで無関係なパッケージを追加しないでください。パッケージによって、ほかのコマンド、オプション、間隔、テンプレートの動作が変わることがあります。パッケージまたは投稿先の資料からコマンドを見つけ、そのパッケージが選択中の TeX Live スナップショットに存在することを確認し、提供元だけを読み込みます。
定義を含むファイル、.sty、.cls を読み込めない場合は、先にファイル未検出エラーを修正します。別のエンジンやクラスに応じて条件付きで作られるコマンドの場合は、必要なエンジンまたはクラスを選ぶか、対応している代替手段を使ってください。テンプレートの内部定義をコピーしてはいけません。
修正は一度に 1 つ適用し、そのたびにコンパイルします。元のコマンドを解決でき、PDF で意図した記法が使われていれば成功です。最初のエラーが別のものに変わっただけでは不十分です。互いに無関係な失敗が複数ある場合は、LaTeX のコンパイル問題を解決するへ戻り、現在の最初のエラーから順に対応します。
