LaTeX のエラーメッセージは、! のあとの最初の数語を見るだけで誰が文句を言っているのかがわかるようにできています。何もつかない ! Missing $ inserted. は TeX エンジン自身、! LaTeX Error: は LaTeX カーネル、! Package hyperref Error: は名指しされたパッケージ。この区別がつけば、直すべき場所が自分の原稿なのか、プリアンブルの読込順なのか、それとも他人のバグ報告先なのかが最初の一行で決まります。このページは実際によく出会うメッセージを原文のまま並べ、それぞれが本当は何を言っているのかと、深く扱っているページへの行き先を添えた索引です。掲載しているメッセージはすべて TeX Live 2024 で実際に再現して確認しました。
! の次の言葉で発信源がわかる——TeX・LaTeX・パッケージ・警告
! で始まる行はビルドを止めうるエラー、! が付かない行は警告や情報で、ビルドは続きます。そしてエラーの側は、! の直後の言葉で三層に分かれます。 いちばん下の層が TeX エンジンで、! Missing $ inserted. のように何の前置きもありません——40 年前から一字一句変わらないメッセージ群で、LaTeX を読み込まない素の TeX でも同じ文面が出ます。中間層が LaTeX カーネルの ! LaTeX Error: …、いちばん上がパッケージの ! Package X Error: … とクラスの ! Class X Error: … です。層が上がるほど文面は親切になり、層が下がるほど「TeX が本当に困っていること」に近づきます。 前置きのないメッセージが出たときは、たいてい原稿の構文そのものが壊れています。
| 行のかたち | 発信源とビルドへの影響 |
|---|---|
! Missing $ inserted. | TeX エンジン本体。前置きが無いのが目印で、原稿の構文が壊れている |
! LaTeX Error: ... | LaTeX カーネル。環境・参照・プリアンブルなど LaTeX の作法の違反 |
! Package X Error: ... | 名指しされたパッケージ X。まず texdoc X でその節を読むのが早い |
! Class X Error: ... | 文書クラス X。投稿規定つきのクラスでは書式違反の通知であることが多い |
LaTeX Warning: ... | カーネルの警告。ビルドは通り、終了コードも 0 のまま。参照ずれの温床 |
Package X Warning: ... | パッケージの警告。on input line N が付く版と付かない版がある |
Overfull \hbox (...) | 段落組版器から直接。! も Warning も付かない、第三の書式 |
Package X Info: ... | 情報のみ。端末には出ず .log にだけ残る。診断の手がかりになる |
TeX エンジンのエラー——前置きの無いメッセージ
このグループは「TeX が入力を読み進められなくなった」という報告で、原因はほぼ例外なく括弧・$・& の対応と、数値の書き方です。 文面が素っ気ないのは、LaTeX がまだ存在しなかった時代に書かれたままだから。裏を返せば、ここに出るメッセージはどの LaTeX ディストリビューションでも、どの年代の文書でも同じ文字列で検索できます。以下は TeX Live 2024 で実際に再現した文面です。
| メッセージ | 本当のところ・最初の一手 |
|---|---|
! Undefined control sequence. | 上の行の右端の命令が未定義。綴り違い、パッケージ忘れ、定義の順番のどれか |
! Missing $ inserted. | 数式専用の記号を本文で使った。_ ^ \alpha などが定番の引き金 |
! Missing } inserted. | { が閉じられないまま何かが終わった。報告位置より上流に原因がある |
! Too many }'s. | } が余っている。前の行で { を一つ書き忘れている可能性が高い |
! Extra alignment tab has been changed to \cr. | 表の行に & が多すぎる。列指定の数と数え合わせる |
! Misplaced alignment tab character &. | 表の外で & を書いた。文字としての & は \& |
! Double subscript. | x_1_2 のように _ が二重。x_{12} のように波括弧でまとめる |
! Missing number, treated as zero. | 長さや個数を期待した場所に数字が無い。\hspace{} のような空引数が典型 |
! Illegal unit of measure (pt inserted). | 数値に単位が無い。\rule{1}{2pt} のように cm pt em の付け忘れ |
! Paragraph ended before \x was complete. | 引数の途中に空行が入った。Runaway argument? が直前に出るのが目印 |
! File ended while scanning use of \x. | 引数が閉じないままファイルが終わった。} の閉じ忘れの最終形 |
! Missing \endcsname inserted. | \csname … \endcsname の中に展開できないものが入った。マクロ名の組み立てを疑う |
! TeX capacity exceeded, sorry [...] | 角括弧の中が枯渇した資源名。[grouping levels=255] なら無限再帰を疑う |
! Emergency stop. | 対話できない状況で入力を求められた。非対話モードで欠けたファイルを探したときの定番 |
LaTeX カーネルのエラー——! LaTeX Error: で始まるもの
こちらは TeX の構文ではなく LaTeX の作法に対する違反で、文面がずっと具体的なぶん、直し方も一意に決まることが多いのが特徴です。 環境の対応、\usepackage の位置、プリアンブル専用命令、ファイルの不在——どれも「LaTeX がそう決めているから」という理由で怒られています。なお .log にはこのメッセージのあとにヘルプ段落が続き、端末に出た一行より具体的なことが書かれているので、意味が取れないときはログを開いてください。
| メッセージ | 本当のところ・最初の一手 |
|---|---|
! LaTeX Error: File `x.sty' not found. | パッケージが未導入か綴り違い。tlmgr install x か kpsewhich x.sty で確認 |
! LaTeX Error: Environment x undefined. | その環境を定義するパッケージが未読込。環境名の綴りも一度疑う |
! LaTeX Error: \begin{x} on input line N ended by \end{y}. | 環境の入れ子が交差している。N は開いた側の行なので、そこから下を見る |
! LaTeX Error: Command \x already defined. | 既存の命令を \newcommand した。上書きするなら \renewcommand を使う |
! LaTeX Error: Missing \begin{document}. | プリアンブルで文字が出力された。空白でない 1 文字が原因になる |
! LaTeX Error: Option clash for package x. | 2 回目の読込が、1 回目に無かったオプションを要求した。\PassOptionsToPackage で直す |
! LaTeX Error: Something's wrong--perhaps a missing \item. | リストが空か、最初の \item より前に本文がある |
! LaTeX Error: There's no line here to end. | 行が始まっていないのに \\ を書いた。段落の頭や center の先頭が典型 |
! LaTeX Error: Not in outer par mode. | フロートをフロートや箱の中に置いた。figure を figure や minipage に入れられない |
! LaTeX Error: \caption outside float. | figure/table の外で \caption を書いた。captionof を使うか環境で囲む |
! LaTeX Error: Can be used only in preamble. | \usepackage などプリアンブル専用の命令を本文で使った |
! LaTeX Error: \usepackage before \documentclass. | \documentclass より前で \usepackage を使った。そこで使えるのは \RequirePackage |
! LaTeX Error: Unknown option `x' for package `y'. | そのパッケージが宣言していないオプション。綴りとバージョンを確認する |
! LaTeX Error: Unicode character X (U+NNNN) | その文字に定義が無い。pdfLaTeX では CJK や絵文字が該当。XeLaTeX/LuaLaTeX なら通る |
パッケージのエラー——! Package X Error: は X の言い分
この層のメッセージは名指しされたパッケージが自分で書いた文章なので、そのパッケージのマニュアルに同じ言葉が載っています。texdoc X を開いてメッセージを検索するのが最短経路です。 内容も具体的で、「この環境はここでは使えない」「この色は定義されていない」「このパッケージとは共存できない」のように、対処がほぼそのまま書かれていることが多い。以下は TeX Live 2024 で実際に出させたものです。
| メッセージ | 本当のところ・最初の一手 |
|---|---|
! Package biblatex Error: Incompatible package 'natbib'. | biblatex と natbib は共存不可。\usepackage[natbib=true]{biblatex} に置き換える |
! Package cleveref Error: cleveref must be loaded after hyperref!. | 読込順の指定。cleveref は hyperref より後、しかも varioref より後 |
! Package amsmath Error: \begin{split} won't work here. | split は単独では使えない。equation や align の内側に置く |
! Package xcolor Error: Undefined color `x'. | 色名が未定義。dvipsnames などの色名セットを読み込むか \definecolor する |
! Package babel Error: Unknown option 'x'. | 言語名の綴り違いか、その言語用のファイルが未導入 |
! Package pdftex.def Error: File `x.png' not found: using draft setting. | 画像が見つからない。枠だけが組まれて処理は続く。パスと拡張子を確認 |
! Package inputenc Error: ... | TeX Live 2024 ではほぼ出ない。UTF-8 の扱いはカーネルに移り、inputenc は空回りしている |
警告——止まらないが、放置すると PDF が嘘をつく
警告はビルドを止めず、終了コードも 0 のままなので、CI は「成功」と判定します。だからこそ危険で、参照が ?? のままの PDF や、番号がずれた PDF はここから生まれます。 特に LaTeX Warning: There were undefined references. と Label(s) may have changed. Rerun to get cross-references right. の 2 つは「もう一度コンパイルせよ」という指示であって、放置してよい種類の警告ではありません。ビルドスクリプトを書くなら、この 2 行を検出して再実行するか、そもそも latexmk に任せるのが定石です。
| メッセージ | 本当のところ・最初の一手 |
|---|---|
Overfull \hbox (12.3pt too wide) in paragraph at lines 4--5 | 行が版面をはみ出した。括弧の数値がはみ出し量で、1pt 未満なら気にしなくてよい |
Underfull \hbox (badness 10000) in paragraph at lines 4--5 | 行が間延びした。badness 10000 は最悪値で、\linebreak や \\ の乱用が引き金 |
Overfull \vbox (26.3pt too high) detected at line 4 | 縦方向のはみ出し。ページ末尾に押し込めない箱があるという意味 |
LaTeX Warning: Reference `x' on page 1 undefined on input line 3. | そのラベルが .aux に無い。初回実行か、\label の綴り違い |
LaTeX Warning: Citation `x' on page 1 undefined on input line 3. | bibtex か biber をまだ走らせていないか、文献キーが .bib に無い |
LaTeX Warning: Label `x' multiply defined. | 同じラベルが 2 か所にある。\ref はどちらか一方しか指せない |
LaTeX Warning: There were undefined references. | 最終行での要約。これが出たまま出荷すると ?? が残った PDF になる |
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. | 番号が前回と食い違った。もう一度コンパイルすれば消える |
LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined | 太字と小型大文字のような組み合わせが無い。代替が使われるので見た目だけ変わる |
Package hyperref Warning: Token not allowed in a PDF string (Unicode): | 見出しの数式などが PDF のしおりに入らない。\texorpdfstring{数式}{plain} で分ける |
もう出ないメッセージ——古い情報にだけ残っているもの
検索で見つかる古い回答には、TeX Live 2024 ではもう再現しないメッセージが混ざっています。同じ文字列が出ないからといって自分の環境が壊れているわけではありません。 代表格は Unicode 文字のエラーで、かつては ! Package inputenc Error: Unicode character … でしたが、UTF-8 の処理がカーネルに移った現在は ! LaTeX Error: Unicode character 日 (U+65E5) に変わり、続く行に not set up for use with LaTeX. が来ます。しかも → や € はもうエラーになりません——実測すると、pdfLaTeX でも通るようになった文字と、CJK・絵文字・≤ のように依然として通らない文字に分かれます。xcolor のオプション衝突も、同じ理由で過去のものになりました(詳しくは「パッケージの衝突」へ)。
- Unicode 文字 —
! Package inputenc Error:ではなく! LaTeX Error: Unicode character 日 (U+65E5)になった。→€は通り、CJK・絵文字・≤は通らない(pdfLaTeX の場合)。 xcolorのオプション衝突 —\usepackage[dvipsnames]{xcolor}のあとに\usepackage[table]{xcolor}と書いてもエラーにならない。キー値方式のオプションに移行したため。captionとsubfigure— かつての「共存できません」というエラーは消え、いまは.logにPackage caption Info: subfigure package is loaded.と記録されるだけ。subfigureとsubcaption— 読み込んでもエラーは出ない。代わりに\begin{subfigure}が古い\subfigure命令に吸われ、! Missing number, treated as zero.のような無関係な顔をしたエラーになる。