情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

LaTeXで謎のエラーが出たけれど原因の行番号(.tex)がよくわからないときは

LaTeXを書いていて、「LaTeX Error: Command \definition already defined.」というエラーが出ました。ただ、エラーの行が.texではなく.clsで示されたため、.texのどこが悪いのかすぐにはわかりませんでした。というわけでメモ

エラーの内容

今回のエラー内容はこちら

LaTeX Error: Command \definition already defined.

このエラーメッセージそのままでは情報が得られず、「\definition」という文字が.texファイルになかったので、困ってしまいました。

二分探索で原因を絞る

このようなさっぱりエラーの原因行が分からない場合は、深く考えすぎず調べすぎず、とりあえず原因となっている行を力業で特定します

そのときに使えるのが二分探索です。

まず、きちんとバックアップをとってから、.texファイルの自分が書いた部分のうち、後半半分くらいを削除します。そして、コンパイルしてみます(あまり適当に分割しすぎず、エラーの原因が無ければちゃんと動くはず、という程度に分割すること)。

ここでもしエラーが出なかったら、エラーは削除した後ろ半分にあるはずです。そこで、今度は後半部分にターゲットを絞って、さらにその後半部分の半分だけ戻して再びコンパイルします。

最初にもしエラーが出たとしたら、この場合は少なくとも前半にエラーの原因がある、と考えられるので、次は前半部分にターゲットを絞って、前半部分の半分をさらに取り除いて再びコンパイルします。

必ず、とは言えませんが、こんな作業を繰り返すことで、あまり悩むことなくエラーの原因候補を見つけ出すことができます

エラーがたくさん有る場合は、エラー数の減少をヒントにします。また、全く別のエラーが現れたら、それは領域を切り分ける場所が悪かった可能性が高いので、全体として必要な部分を消してしまっていないか、環境を2分割していないかなどを確認して、再度残す場所を調節してみてください。また、怪しさに応じて上手く分割場所を変えるとすぐ見つかるようになります。

原因行特定!

こんな考え方を使うと、すぐ問題の行が見つかりました。

\newdef{definition}{Definition}

この行でした。「\newdef」についてはあまり情報が見つからないのですが、この\newdefの行を複数書いてしまっていたのが原因だったようです(最初に「\」付きで「\definition」で検索してしまったのが悪かった)。

というわけで、\newdefの行を1行だけにすることで、無事コンパイルが成功するようになりました。

コメント(0)

新しいコメントを投稿




  • カテゴリ ナビ
  • 著者紹介

    ブログが趣味で、スマホアプリの利用中に発生するトラブルや不具合の対策手順や障害情報、 設定の変更方法などについて、解説記事をよく書いています。

    自分が困ったことをブログに書けば、次に困る人の参考になって、みんながみんな同じ苦労をせずに済む、というのが原点です。

    最近の関心は、スマホやパソコンが苦手な人の行動や思考、そしてそんな人を手助けする方法です。

    Amazonのアソシエイトとして、did2は適格販売により収入を得ています。

    RSS | Facebook | Twitter | About