スポンサーリンク
今回は「Something's wrong--perhaps a missing \item.」というエラーが表示される理由とその対策についてです。
目次
スポンサーリンク
Something's wrong--perhaps a missing \item.
このエラーは、本来「\begin{enumerate}-\end{enumerate}」や「\begin{itemize}-\end{itemize}」の中に「\item」を書き忘れたときに表示されるものなのですが、それとは全く違う原因で表示されることがあります。
その一つは自分も体験していて、「\newtheorem{Theorem}{定理}[section]」のように自分で新しく環境を作ったときに、「\begin{Theorem}」の直後にいきなり数式環境を書いてしまうことで発生するものです。これは、いきなり数式環境を書かずに「\mbox{}」を間に挟むことで解決できます。
今回:.bblが原因
今回紹介するのは、エラーが表示されたときに、エラー本文が
reference.bbl(3): エラー: LaTeX Error: Something's wrong--perhaps a missing \item.
と表示された場合についてです。これは、上記の症状とは少し異なります。
直接的な原因
直接的な原因は、やはり「.bbl」ファイルにあります。このとき、「.bbl」ファイルは次のようになっていました。
\begin{thebibliography}{}
\end{thebibliography}
これには、とある問題があります。「\begin{thebibliography}-\end{thebibliography}」に中身がないのは別にしても、引数を書くべき部分({})に引数が無いことが問題です。thebibliography環境は引数が必須で、引数を忘れたときに「Something's wrong--perhaps a missing \item.」が表示されるようなのです。
つまり、「.bbl」を作り直せばよいのですが、このときWinShellで「BibTeXを実行」したとしても解決しないことがあります。
BibTeXを再実行しても解決しない場合の「もしかして」
この原因は、「BibTeX(jbibtex)」を実行する前に「LaTeX(platex)」を実行する設定になっていたからです。つまり、BibTeXを再実行するためにLaTeXを再実行してしまい、またエラーが発生し、BibTeXを再実行する前にプログラムが停止してしまっていたのです。つまり、この状態から抜け出すためにはBibTeXを単独で再実行する必要があるわけです。
無難な解決策:.bblを削除すればいい
このような場合もあるので、無難な方法は一旦「.bbl」を削除してしまう方法です。すると、「.bbl」が無い分にはLaTeXの実行に成功するので、問題なくそれに続けてBibTeXを実行して再び.bblを作り直すことができます。ただし、「.bbl」を直接編集していたりする場合には、確実にバックアップを取り直してください。
そもそもの原因:なぜ.bblが壊れてしまっていたのか
ここまでで問題自体は解決なのですが、ではなぜ.bblファイルが壊れてしまっていたのでしょうか。
今回私の場合この原因は、「\bibliography{}」に、間違ったファイル名を書いてしまっていたことにありました。
ファイル名を間違えると、BibTeXは.bibファイルを見つけられません。
I couldn't open database file reference.bib
しかし、このときBibTeXは、あたかも.bibファイルが空であったかのように動作してしまいます。
I found no database files---while reading file thesis.aux
Warning--I didn't find a database entry for "Cite-Tag"
...
(There were 2 error messages)
その結果、「.bbl」が空になってしまうと同時に、引数が空になってしまうのです(ちなみに、.bblの引数部分に「0」や他の数字を入力しても、環境の中身が空のままの場合、「Something's wrong--perhaps a missing \item.」のエラーが出てしまいました)。これがそもそもの原因だったようです。
まとめ
「Something's wrong--perhaps a missing \item.」のエラーがなぜこんなときにも登場するのか、という仕組みはよくわかりませんが、LaTeXでエラーが表示されてしまったときは、エラー文に書いてあることを考えるだけでなく、エラー文で検索してみて、同じエラーが書いてあることと全く違う原因で発生することが無いかチェックすることが重要そうです。
スポンサーリンク
スポンサーリンク