bibtex-hygiene について
LaTeX 原稿で使う BibTeX ファイルを点検、整理するスキルです。付属のリンターでメタデータの問題を修正し、ビルド時に引用を検証します。
主な機能
- 01BibTeX ファイルの検査
- 02重複キーと重複文献の検出
- 03必須フィールドと形式の確認
- 04一部フィールドの安全な正規化
- 05ビルドログで引用を検証
活用シーン
- 01投稿前に重複文献を発見
- 02DOI と著者メタデータを修正
- 03参考文献の書式を統一
- 04コンパイル後に未解決引用を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill bibtex-hygieneインストール後、Claude Code で/bibtex-hygieneを入力して読み込まれたか確認します。
同梱ファイルscripts/bib_lint.py
詳細
BibTeX の整備
整理された参考文献リストは、見た目の問題ではなく正確性の問題です。重複した項目は参考文献数を水増しし、必須フィールドが欠けているとPDFでは「?」と表示され、小文字のままの頭字語は査読者に不注意な印象を与え、誤ったDOIは読者を別の論文へ誘導してしまいます。
ワークフロー
-
Lintを実行します。 原稿で使用しているすべての
.bibファイルに、同梱のリンターを実行します。python scripts/bib_lint.py references.bib python scripts/bib_lint.py references.bib --json > bib-report.json # for programmatic triage終了コード
0は問題なし、1は指摘事項あり、2は入力を解析できないことを示します。 -
まずエラーを、次の順に修正します。
duplicate-key:2つの項目でキーが重複しているため、LaTeXは最初の項目を黙って使用します。片方のキーを変更し、\cite{}の呼び出しも更新します(grep -rn "\\cite.*{oldkey" *.tex)。duplicate-work:同じ論文が2つのキーで登録されています(DOIまたはタイトルが同一)。片方を残し、引用先を変更します。missing-field:出版社のページまたはCrossrefからフィールドを追加します。記憶を頼りにしてはいけません。doi-format/year-format/author-format:信頼できる一次情報に基づいて修正します。
-
次に警告を修正します。
title-case:頭字語、固有名詞、化学記号や遺伝子記号を波括弧で囲みます。title = {{BERT}: Pre-training of Deep Bidirectional Transformers},{Bayesian},{CRISPR}-{Cas9},{\textit{E. coli}}。 囲むのは単語であり、タイトル全体ではありません。タイトル全体を波括弧で囲むと、文頭大文字化のスタイルが機能しなくなります。doi-url:DOIはプレフィックスなしの形式で記録します(10.1038/s41586-021-03819-2)。リゾルバーはスタイル側で追加されます。author-others:著者が3名未満の場合は、全員を列挙します。
-
プレプリントを確認します。
preprintの注記がある項目について、査読済みの版が存在するか確認します(Crossref/OpenAlexでタイトルを検索するか、citation-verificationスキルを使用します)。 出版済みの版を引用し、投稿先が認めている場合は、arXiv IDをeprintに残します。 -
正規化します(任意。DOIのプレフィックス削除、ページ範囲の
--表記、フィールド順の統一など、安全な機械的修正に限ります)。python scripts/bib_lint.py references.bib --fix references.clean.bib diff references.bib references.clean.bib # review before replacing -
ビルドを確認します。 コンパイルしてログを確認します:
grep -i "warning.*citation\|undefined" main.log。 すべての\citeが解決され、??と表示される項目がないことを確認します。
適用を徹底したい規約
| 項目 | 規則 |
|---|---|
| キー | authorYEARword の形式で、小文字のASCII文字を使用します。例:vaswani2017attention。異なる著作に同じキーを再使用してはいけません |
| 著者 | Last, First and Last, First の形式にします。団体著者は二重波括弧で囲みます:{{World Health Organization}} |
| 掲載先 | ファイル全体で掲載先の表記を統一します(ジャーナルのスタイルに合わせて、正式名称かISO4略称のどちらかを選びます) |
| 会議論文 | journal を持つ @article ではなく、booktitle を持つ @inproceedings を使用します |
| ソフトウェア/データ | @software / @dataset(BibLaTeX)、または version、doi / url、year を持つ @misc を使用します |
| Unicode | biberではUTF-8を維持します。従来のBibTeXではアクセントをエスケープします({\"u}) |
| URLとDOI | DOIがある場合は出版社のURLを削除します。url はウェブ上にしかない情報源に限って使用し、urldate も記載します |
避けるべきパターン
- 記憶やLLMを使ってBibTeXを生成すること。必ず出版社、Crossref(
https://api.crossref.org/works/{doi}/transform/application/x-bibtex)、DBLP、または文献管理ツールからエクスポートします。 - Google ScholarのBibTeXを確認せずにコピーすること。DOIが欠けていたり、項目の種類が誤っていたり、大文字・小文字が崩れていたりすることがよくあります。
- 大文字・小文字を「修正」するために、タイトル全体を二重波括弧で囲むこと。
- DOIがある論文に
note = {Accessed ...}を残すこと。
関連スキル
citation-verification:すべての項目が実在する記録と一致しているか確認します(架空の参考文献を検出します)。reference-manager-interop:Zotero/Mendeley/EndNoteのエクスポート、RIS、CSL-JSON、BibTeX間で変換します。citation-management:文献データベースから参考文献を検索・取得します。