レッスン 15

エラーへの対処

このレッスンでは LaTeX による文書作成でよくあるエラーを紹介します.各エラーがどのような意味で,どうすれば改善できるのかを示します.

典型的なワープロソフトと異なり,LaTeX には編集・実行・確認のサイクルがあり,プログラミング言語のコンパイラを使った作業に似ています.そして,プログラミングの場合と同様に,入力の中に間違いが含まれていて,システムが報告するエラーメッセージを解読しなければならない場合があります.

よくあるエラー

ここからいくつかの一般的なエラーを紹介していきます.各エラー例ではエラーメッセージの見た目に関することについても解説します.

実際にエラーとなるコード例を試してみるだけでも勉強になるかと思いますが,さらに編集機能を利用して問題箇所を修正し,ご自身の手でエラーを解決できるか試してみるといいでしょう.

pdflatex コマンドが見つからない

これは LaTeX 初心者が陥りやすい典型的なエラーです.Windows の場合,次のようなメッセージが現れます:

'pdflatex' is not recognized as an internal or external command,
operable program or batch file.

Linux などの場合は次のようなメッセージが見られるでしょう:

bash: pdflatex: command not found

これらは厳密には TeX のエラーではなく,TeX がインストールされていない(あるいは見つからない)というオペレーティングシステムのエラーです.よくある間違いは,TeXworks や TeXShop などのエディタだけをインストールしていて,TeX Live や MiKTeX といった TeX システムをインストールしていないというものです.

TeX エラーメッセージの解剖学

\documentclass{jsarticle}

\newcommand\mycommand{\textbold{むむむ}}

\begin{document}

コマンドを使ってみます:\mycommand.

\end{document}

上記のコード例は複数行のメッセージをログファイルに吐き出します.

! Undefined control sequence.
\mycommand ->\textbold 
                       {hmmm}
l.7 My command is used here \mycommand
                                      .
? 

ここで注目すべき点は,TeX はコマンドを定義したところでエラーを起こしているわけではないことです.実際,\mycommand を定義しても,そのコマンドを使用しなかった場合,エラーは発生しません.この例ではエラーが8行目にあると報告されているにも関わらず,「本当の」エラーは4行目のコマンド定義の中にあります.したがって,エラーメッセージ全体を視ることが重要です.

エディタによってはエラーログの「概要」のみを表示するものもあります.このようなエディタでは,場合によっては次のようにミスリーディングな表示になってしまう場合があります:

line 8: undefined command: ...\mycommand

これではあたかも \mycommand が未定義であるかのように読めますが,実際のエラーはそうではありません.

アンバランスなブレース

\documentclass{article}

\usepackage[leqno}{amsmath}

\begin{document}

\end{document}

上記のコード例ではアンバランスな } がオプション引数の終端で使用されています.この閉じブレースは LaTeX のオプション処理を失敗させるため,あまり役に立たない内部エラーを見ることになります:

! Argument of \@fileswith@ptions has an extra }.

エラーの説明は役に立ちませんが,続く2行がエラー箇所を正確に示しています.改行位置は TeX がどこまで読むことができたかを示しています:

l.3 \usepackage[leqno}
                      {amsmath}

ファイルが見つからない

\documentclass{article}

\usepackage{amsmathz}

\begin{document}

\end{document}

このコード例は,次のエラーを引き起こします.

! LaTeX Error: File `amsmathz.sty' not found.

このエラーの原因は2通り考えられます.1つは,ここでの例がそうであるように,単純にタイポがある場合です.これはパッケージ名を正しく直すことによって解決するはずです.もう1つの可能性は,本当に目的のファイルが存在しておらず,システムにインストールが必要な場合です.

ディスプレイ数式内での空行

\documentclass{jsarticle}

\begin{document}

何らかのテキスト
\begin{equation}

  1=2

\end{equation}

\end{document}

上記の例は,ちょっと意味不明なエラーを生じさせます:

! Missing $ inserted.

しかしながら,これを直すのは簡単です.ディスプレイ数式環境には空行を含めることはできないので,空行を削除してしまいましょう.

練習問題

このレッスンに出てきたエラーを直してみましょう.

ここに出てこなかったエラーが発生するような小さな文書を作成し,エラーメッセージを確認してみましょう.