LaTeX 論文の引用と参考文献を漏れなく確認する方法
本文と .bib の両方向を確認する
本文のキーが .bib にないと、Citation 'key' undefined や PDF の [?] になります。逆に、データベースにあって本文で引用しない項目は、通常、警告なしで一覧から除外されます。
次の例には2冊のデータがありますが、主ファイルは1冊だけを引用します。
@book{knuth1984,
author = {Donald E. Knuth},
title = {The TeXbook},
publisher = {Addison-Wesley},
year = {1984}
}
@book{lamport1994,
author = {Leslie Lamport},
title = {LaTeX: A Document Preparation System},
edition = {2},
publisher = {Addison-Wesley},
year = {1994}
}
\documentclass[11pt]{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{refs.bib}
\begin{document}
\cite{knuth1984}
\printbibliography
\end{document}
ログから未解決のキーを探す
Citation 'kingma2015' on page 3 undefined のページ番号は本文の引用位置です。.bib の位置ではありません。キーを検索して確認します。
- 綴りと大文字・小文字が完全に一致するか。
- データベースを読み込んだか。biblatex は
\addbibresource{refs.bib}、従来の BibTeX は\bibliography{refs}を使います。ファイル名の誤りは全引用に影響します。 - コメント内だけにないか。
% \cite{...}は検索されても引用として処理されません。
文献処理の途中で未解決になっている場合もあります。EasyLaTeX で再コンパイルし、全処理を待ってください。残る場合は参考文献関連のログを確認します。
引用されていない項目を探す
この方向には通常警告がありません。.bib のキーを一覧にし、本文で1つずつ検索します。引用漏れなのか、不要になった古いデータなのかを判断します。
プロジェクトのコピーで \nocite{key} を使えば1項目、\nocite{*} なら全項目を確認できます。後者を正稿に残すと、一覧だけでは実際に引用された項目を判断できません。
種類別にフィールドを確認する
フィールドの不足は処理停止ではなく、空欄やスタイル依存の表示になることがあります。文献処理ツールの警告も確認します。
| 種類 | 主に確認する項目 | 起こり得る表示 |
|---|---|---|
@article | author、title、journal、year、必要に応じて巻・ページ | 出版情報の欠落 |
@inproceedings | author、title、booktitle、year | 会議録名の欠落 |
@book | author、title、publisher、year | 出版者情報の不足 |
@misc / @online | 著者または組織、title、年・日付、URL | Web 情報の欠落。閲覧日は対応するフィールドとスタイルも必要 |
journal を journals と誤記すると、未指定と同様に扱われる場合があります。使っている文献方式とスタイルのフィールドを確認してください。
章の制限を外して最終確認する
\includeonly で省略した章は今回処理されません。その引用は補助情報に依存し、一覧から欠ける場合があります。\input はこの制限を受けません。最後は制限を解除して全体を処理し、引用と文献一覧を照合します。
よくあるメッセージ
| メッセージ | 原因 | 対処 |
|---|---|---|
Citation 'x' undefined | キーの不一致・不足、データベース未読込 | .bib とファイル名を確認 |
There were undefined references. | 未解決参照や処理の途中 | 完了後に個々のキーを確認 |
Please (re)run Biber on the file: main | 文献処理の更新が必要 | プラットフォームで再コンパイルしログを確認 |
I didn't find a database entry for "x" | BibTeX が項目を見つけられない | キーと読込先を確認 |
empty year in x | 出版フィールドの不足 | 補完する。一覧には表示される場合もある |
関連記事:大規模プロジェクトの管理、コンパイルの問題。
まとめ
- 欠けた項目と未使用の項目を別々に確認する。
- ログだけでは未使用の項目を把握できない。
\nocite{*}はコピーでの点検に使う。- 章別プレビュー後は全体をコンパイルする。
EasyLaTeXでプロジェクトと refs.bib を一緒に管理し、正しい主ファイルから処理できます。