コンパイルが失敗すると、LaTeX は謎めいた ! … のメッセージと行番号 l.NN を出し、? プロンプトで止まります。これを読み解く力——そして .log といくつかのデバッグコマンド——があれば、「壊れた」が「ここを直せばいい」に変わります。このページはエラーの読み方、ログ、デバッグを扱います。
エラーの読み方
エラーは決まった形です——! に続けてメッセージ(例:! Undefined control sequence)、そして l.NN でつまずいた行を、TeX が読んだところで折り返して示します。重要:l.NN は LaTeX が 異常に気づいた 位置で、原因の位置とは限りません——閉じ } の抜けは数行後に表れることがあるので、その行が正しく見えるなら 上の方 も疑います。? プロンプトでの操作:Return=続行を試みる、h=ヘルプ、x=終了、q=最後まで黙って走る(全エラーを集める)、r=止まらず走る。(実際は latexmk 等が止まらず走らせるので、後から .log で読むのがふつうです。)
- Undefined control sequence — 綴り違い、または
\usepackage忘れ。 - Missing $ inserted — 数式モード外で数式記号を使った。
- File
x.stynot found — パッケージ未導入(tlmgrで入れる)。 - Runaway argument —
{ }の対応が崩れている(多くは}抜け)。
ログの見方 — .log / texfot
.log ファイルには実行の全記録が残ります——すべてのエラーと 警告(Overfull/Underfull \hbox、未定義の参照、フォント代替など)。ログは情報過多なので、texfot で「注目すべき行」だけに絞ると読みやすくなります(→「texdoc / texfot …」)。ビルドが「成功」しても、警告はここで確認しましょう。
デバッグコマンド
\show\foo は \foo の定義・意味を表示し(? で止まります)、\showthe\textwidth はレジスタや長さの 値 を表示します。\typeout{...}(LaTeX)と \message{...}(TeX)は 自分のメッセージ をログ/端末に出す、printf 風のデバッグに便利です。最終手段の \tracingall は TeX の動作をすべてログに吐きます(非常に冗長。trace パッケージが出力を整えてくれます)。展開のどこで狂うかを突き止めるのに使います。
\show\section % \section の定義を表示 / show its meaning
\showthe\textwidth % 長さの値を表示 / show a length’s value
\typeout{ここまで来た} % 自分のメッセージ / your own message
\tracingall % すべてをログへ(非常に冗長)/ trace everything (very verbose)