未定義の制御シーケンス
不明なコマンド名: タイプミス、パッケージの欠落、エンジンの間違い。
未定義の制御シーケンス
症状
コンパイルは「!」で停止します。未定義の制御シーケンス。` ログには、問題が発生した行が 2 つに分割されて表示されます。問題のコマンドを含む TeX が読み取ったすべての内容が 1 行に表示され、残りのソース行はその下に表示されます。上の行の最後のトークンは TeX が認識しなかったコマンドであるため、これは正確に特定するのが簡単なエラーの 1 つです。
なぜそれが起こるのか
制御シーケンスとは、バックスラッシュで始まるものです。 TeX には固定の語彙がありません。コマンドは、カーネル、ドキュメント クラス、パッケージ、または独自の \newcommand によって定義されたためにのみ存在します。 TeX がバックスラッシュの後に何も定義されていない名前を読み取ると、その意味を推測できずに停止します。一般的に、エラーはコマンドが「間違っている」というものではありません。現時点では、このエンジンの下で、この文書ではその名前が不明であるということです。
3 つのチェックで修正します
まずスペルを確認してください。ほとんどの場合、\textbf の代わりに \texbf、\label の代わりに \lable、または名前を 2 つに分割する迷走スペースが考えられます。ログの行番号を確認すると、タイプミスがすぐにわかります。
スペルが正しい場合は、定義パッケージが欠落している可能性があります。 \includegraphics は \usepackage{graphicx} なしでは何も行いません。 \toprule には booktabs が必要で、\SI には siunitx が必要です。これが最も厄介なのは、別の文書やモデルの回答からスニペットをコピーする場合です。本文は表示されますが、プリアンブル行は表示されません。 Every command Explained でコマンドを定義しているパッケージを見つけて、\usepackage 行を追加して再コンパイルします。パッケージ自体がインストールされていない場合は、「不足しているパッケージをインストールする」(/learn/install-missing-package/) を参照してください。
パッケージがロードされてもエラーが続く場合は、エンジンを疑ってください。一部のコマンドは特定のエンジンの下でのみ存在します。 \fontspec とその関連コマンドは XeLaTeX または LuaLaTeX を必要とし、pdfLaTeX の下ではまさにこのエラーで停止します。ドキュメントでエンジンを指定するテンプレートは、通常、この理由から指定します。 このプロジェクトのどのエンジン で違いを説明します。
知っておく価値のある 2 つの癖
順序は重要です。コマンドを定義する \usepackage 行の前で使用されるコマンドは、その時点ではまだ定義されていないため、パッケージの読み込みは \begin{document} より上のプリアンブルに続けてください。そして、TeX が回復した後、その後のすべてを読み間違える可能性があるため、1 つのエラーが別のエラーを隠してしまうことがよくあります。ログ内の最初の未定義の制御シーケンスを修正し、再コンパイルしてから、残っているものを確認します。