mcpField
B
bibtex-hygiene

bibtex-hygiene

github.com/kalarislabsドキュメント7359 回インストール3 日前に更新
リポジトリ

bibtex-hygiene について

LaTeX 原稿で使う BibTeX ファイルを点検、整理するスキルです。付属のリンターでメタデータの問題を修正し、ビルド時に引用を検証します。

主な機能

  1. 01BibTeX ファイルの検査
  2. 02重複キーと重複文献の検出
  3. 03必須フィールドと形式の確認
  4. 04一部フィールドの安全な正規化
  5. 05ビルドログで引用を検証

活用シーン

  1. 01投稿前に重複文献を発見
  2. 02DOI と著者メタデータを修正
  3. 03参考文献の書式を統一
  4. 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は読者を別の論文へ誘導してしまいます。

ワークフロー

  1. 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 は入力を解析できないことを示します。

  2. まずエラーを、次の順に修正します。

    • duplicate-key:2つの項目でキーが重複しているため、LaTeXは最初の項目を黙って使用します。片方のキーを変更し、\cite{} の呼び出しも更新します(grep -rn "\\cite.*{oldkey" *.tex)。
    • duplicate-work:同じ論文が2つのキーで登録されています(DOIまたはタイトルが同一)。片方を残し、引用先を変更します。
    • missing-field:出版社のページまたはCrossrefからフィールドを追加します。記憶を頼りにしてはいけません。
    • doi-format / year-format / author-format:信頼できる一次情報に基づいて修正します。
  3. 次に警告を修正します。

    • 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名未満の場合は、全員を列挙します。
  4. プレプリントを確認します。 preprint の注記がある項目について、査読済みの版が存在するか確認します(Crossref/OpenAlexでタイトルを検索するか、citation-verification スキルを使用します)。 出版済みの版を引用し、投稿先が認めている場合は、arXiv IDを eprint に残します。

  5. 正規化します(任意。DOIのプレフィックス削除、ページ範囲の -- 表記、フィールド順の統一など、安全な機械的修正に限ります)。

    python scripts/bib_lint.py references.bib --fix references.clean.bib
    diff references.bib references.clean.bib   # review before replacing
    
  6. ビルドを確認します。 コンパイルしてログを確認します: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 を使用します
UnicodebiberではUTF-8を維持します。従来のBibTeXではアクセントをエスケープします({\"u})
URLとDOIDOIがある場合は出版社の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:文献データベースから参考文献を検索・取得します。

コメント