LoginSignup
16
14

More than 1 year has passed since last update.

Zotero と LaTeX Workshop で bib ファイルを扱いこなす

Last updated at Posted at 2021-07-24

Zotero と LaTeX Workshop で bib ファイルを扱いこなす

Zotero から簡単に bib ファイルを取得したい。また、LaTeX Workshop で上手に bib ファイルを取り扱いたい。

本記事では、BibTeX や biber を利用した引用文献の出力カスタマイズについては一切述べない。bib ファイルを上手に扱うことのみに限る。

本記事は大きく以下のような構成となっている。

また、LaTeX Workshop によるインテリセンス機能については # この節 を参照されたい。

2 つ目の節は Zotero に関しているが、その他の節は bib ファイルの作成方法に依らない。Zotero 以外で作成している場合であっても一読の価値はあると思われる。

○ Bib ファイルの基礎知識

文献リストを手動で作成する場合、thebibliography 環境を使って作成することになる。この場合、文献の並び替えやスタイルをすべて手動で変更する必要があり非常に面倒になる。これを自動化するツールが BibTeX になる。このリストに必要な情報は bib ファイルに記述する。
本節ではこの bib ファイルについての基本的な記述方法を確認しておきたい。

1 つの文献は bib ファイル内で以下のような形式で記述される。

@EntryType{Citation_key,
  Fields = {Contents_of_fields},
}

本記事では bib ファイル内の要素を以下の 4 つの名前を利用していく。(さまざまな呼び方がるため、一般的な呼び名が分からなかった)

Contents Example elements Description
EntryType article, book ...etc 文献の形式
Citation_key Any key name \cite で文献参照する際の参照キー
Fields title, author, year ...etc 文献の諸情報を記載
Contents_of_fields - タイトルや著者名など

FieldsContents_of_fields からなる key-value については以下のような記法を満たす必要がある。

  • Fields 名は大文字小文字を問わない(EntryType も同様)
  • Fields 要素を同不順に列挙可能
  • = の後に続けて Contents_of_fields{} または " で囲う
  • 行末尾には , を付ける
  • EntryType ごとに必須の Fields がある(これらが揃っていないとエラーになる)

コメントアウトするには @ を取り除けば良い。引用文献全体をコメントアウト出来るが、Fields のそれぞれをコメントアウトすることは出来ないようだ。

EntryType{Citation_key,
  Fields = {Contents_of_fields},
}

最後に具体例として、乾燥したパスタを 2 つに割る方法について示した「Controlling fracture cascades through twisting and quenching」の BibTeX ソースを示しておく。

1802.05402 | arXiv
arXiv の Export Bibtex Citation から BibTeX ソースを出力することが出来る。これを下で示している LaTeX Workshop でフォーマットを行った。

@article{Heisser_2018,
  title     = {Controlling fracture cascades through twisting and quenching},
  author    = {Heisser, Ronald H. and Patil, Vishal P. and Stoop, Norbert and Villermaux, Emmanuel and Dunkel, Jörn},
  year      = {2018},
  journal   = {Proceedings of the National Academy of Sciences},
  publisher = {Proceedings of the National Academy of Sciences},
  doi       = {10.1073/pnas.1802831115},
  issn      = {1091-6490},
  month     = {Aug},
  number    = {35},
  pages     = {8665–8670},
  url       = {http://dx.doi.org/10.1073/pnas.1802831115},
  volume    = {115},
}

このように記述する必要があるが、今回は自力で記述せずに Zotero から出力することを考えたいので詳細な記述方法についてはこれ以上述べない。
また、Zotero の他にも Google Scholar 等からでも bib 情報を得ることが出来る。

このような bib ファイルを作成したのちに、BibTeX や (u)pBibTeX, biber+BibLaTeX などのエンジンを利用して処理すれば LaTeX の処理に組み込むことが出来る。このような処理や引用文献の表示の並び替えなどの方法については他の記事を参照してほしい。
本記事は bib ファイルを上手に扱うことのみに限っている。(繰り返し注意喚起)

○ Zotero から bib ファイルのエクスポート

Zotero の初期設定については以下の記事の通りにしたものとしている。
この記事では Chrome 拡張機能から Zotero にインポートし、インポートした PDF ファイルを ZotFile を利用して Dropbox へ保存するようにしている。

Zotero で論文管理してみた話 - Qiita

文献引用したい文献はインポートしたのちに特定のコレクションに振り分けておくと良いだろう。(Zotero ではコレクションと呼称しているが、タグ付けに近い印象)

Zotero から BibTeX を作成する方法は非常に簡単。
例えば次のように必要な文献が “use” コレクションにある場合を考える。このコレクション上で右クリックし、コレクションをエクスポート をクリックすると左のようなウィンドウが表示される。これを OK して bib ファイルを好きなところに保存すれば良いだけ。

Step1: Collection in Library Step2: Export Window
Zotero Export BibTeX of Collection Zotero BibTeX Export Window

ここで画像をよく見るとしれっとフォーマットが Better BibTeX によるエクスポートになっている。
本記事で Better BibTeX (BBT) を利用できるようにしておこう。BBT を利用することで以下のようなメリットを得る。

  • 日本語文献に対しても出力が安定する
  • Citation_key のスタイルを変更できる
  • 出力する Fields を制限できる

もちろん BBT を必ず利用する必要はないが、Citation_key を好きなようにカスタマイズすることにはかなり価値があると思われる。

■ Better BibTeX for Zotero

Zotero の拡張機能である Better BibTeX (BBT) を導入することでより良い bib ファイルを得ることが出来る。

Better BibTeX for Zotero ver.5.4.25 (2021/7 現在)

BBT の取得方法は以下ページ内の latest release をクリック、GitHub の release ページに遷移するのでここから xpi ファイルをダウンロードすれば良い。

Installation :: Better BibTeX for Zotero

あとは ZotFile と同様に、メニューバーから ツール > アドオン に進み、右上の歯車アイコンから Install Add-on From File をクリックし、取得した zotero-better-bibtex ファイルを選択する。
インストールしたら Zotero を再起動する。おそらく 2 回ほど再起動する必要があるが、2 回とも再起動のダイアログが表示されるためそれに従えば良い。

Citation key の命名規則

Citation Keys :: Better BibTeX for Zotero

Citation_key をカスタムしたい。デフォルトでは以下のようになっている。

[auth:lower][shorttitle3_3][year]

この命名規則を例をもって示しておきたい。例えば、著者名が Famous Author、文献タイトルが This is very famous document、公開年が 1990 であれば Citation_key は以下のようになる。

famousThisIsVery1990

これらの詳細は以下を参照すると良い。かなり多様な設定をすることが出来ることが分かるだろう。

cf. Citation Keys # Functions :: Better BibTeX for Zotero

今回は、Google Scholar 風の Citation_key を作成することを考えたい。BBT の issue に以下のようなものが挙がっていたので、これを参考にしたい。

Google Scholar like Citation Key Generation - Issue #595 | retorquere/zotero-better-bibtex - GitHub

issue によれば、以下のようにすれば Google Scholar 風になるようだ。

[auth:lower][year][veryshorttitle:lower]

このように変更するには、編集 > 設定 (N) から以下のような Zotero 環境設定ウィンドウを開く。Better BibTeX を選択し、ここから Citation keys タブのCitation key format を上のものに変更すれば良い。

Renaming Citaion keys

○ LaTeX Workshop によるフォーマット

LaTeX Workshop では bib ファイルのフォーマットを行うことが出来る。これは latexindent を利用したフォーマットではなく、この拡張機能固有のフォーマットになっている。
これらはコマンドパレットから実行する。(頻繁に利用しないと予想されるのでショートカットキーは設定しない)

Command Palette Description
Sort BibTeX file
"latex-workshop.bibsort"
文献と Fields の並び替え
Align BibTeX file
"latex-workshop.bibalign"
Fields= を整列
Sort and Align BibTeX file
"latex-workshop.bibalignsort"
上の 2 つを同時に実行

これらのコマンドの有効化は以下の設定を変更する必要がある。デフォルトではすべて false になっている。有効にしたいものを true にすれば良いだろう。

  // 文献の並び替えの有効化の切り替え
  "latex-workshop.bibtex-format.sort.enabled": false,
  // Fields の並び替えの有効化の切り替え
  "latex-workshop.bibtex-fields.sort.enabled": false,
  // Fields の整列の有効化の切り替え
  "latex-workshop.bibtex-format.align-equal.enabled": false,

また、これらのコマンドを実行した場合、以下で見る # 基本的なフォーマット も同時に実行される。

以下に BibTeX に関する設定をまとめておく。

settings.json(折りたたみ)
{
    "[bibtex]": {
      "editor.wordWrap": "off",
      "editor.tabSize": 2,
      "editor.insertSpaces": true,
      "files.trimTrailingWhitespace": true,
    },
    // Intellisense for BibTeX
    "latex-workshop.intellisense.citation.maxfilesizeMB": 5,
    "latex-workshop.intellisense.citation.label": "title",
    "latex-workshop.intellisense.citation.type": "inline",
    "latex-workshop.intellisense.citation.format": [
      "author",
      "title",
      "journal",
      "publisher",
      "booktitle",
      "year"
    ],
    // Basic format settings
    "latex-workshop.bibtex-format.tab": "2 spaces",
    "latex-workshop.bibtex-format.case": "lowercase",
    "latex-workshop.bibtex-format.surround": "Curly braces",
    "latex-workshop.bibtex-format.trailingComma": true,
    "latex-workshop.bibtex-format.handleDuplicates": "Comment Duplicates",
    // Align "="
    "latex-workshop.bibtex-format.align-equal.enabled": true,
    // Sort fields
    "latex-workshop.bibtex-fields.sort.enabled": true,
    "latex-workshop.bibtex-fields.order": [
      "title",
      // writer
      "author",
      "editor",
      // date
      "year",
      // organization
      "journal",
      "publisher",
      "school",
      "institution",
    ],
    // Sort bib order
    "latex-workshop.bibtex-format.sort.enabled": true,
    "latex-workshop.bibtex-format.sortby": [
      "key"
    ],
}

■ 基本的なフォーマット

コマンドパレットから"Sort and Align BibTeX file" する様子

Format bib file

基本的なフォーマット設定は以下からすることが出来る。ここで設定したフォーマットは上のコマンドのいずれかを実行すると動作する。

  "[bibtex]": {
    "editor.wordWrap": "off",
    "editor.tabSize": 2,
    "editor.insertSpaces": true,
    "files.trimTrailingWhitespace": true,
  },
  "latex-workshop.bibtex-format.tab": "2 spaces",
  "latex-workshop.bibtex-format.case": "lowercase",
  "latex-workshop.bibtex-format.surround": "Curly braces",
  "latex-workshop.bibtex-format.trailingComma": true,
  "latex-workshop.bibtex-format.handleDuplicates": "Highlight Duplicates",

インデントは "editor.tabSize""editor.insertSpaces""~.bibtex-format.tab" を揃えておく必要があるだろう。上の設定では半角スペース 2 つをインデントとしている。

この他は以下のような設定となっている。

Settings Value Description
"~.case"
  • 小文字:"lowercase"
  • 大文字:"UPPERCASE"
Fields 名のレターケースを選択
"~.surround"
  • 波括弧:"Curly braces"
  • ダブルクォテーション:"Quotation marks"
Contents_of_fields の囲い
"~.trailingComma" true or false 末尾の , の自動挿入
"~.handleDuplicates"
  • 波下線:"Highlight Duplicates"
  • コメントアウト:"Comment Duplicates"
  • なにもしない:"Ignore Duplicates"
重複する Citation_key の処理

"~.handleDuplicates" では、同じ Citation_key があった場合に波下線が付くようにしている。Zotero から BibTeX をエクスポートする場合にはほとんど生じないと思われるが、場合によっては気にしておいた方が良いだろう。

■ 文献と Fields の並び替え

"~.bibtex-format.sort.enabled"true とするとデフォルトでは Citation_key による並び替えとなる。("key" が意味している)

  "latex-workshop.bibtex-format.sort.enabled": true,
  "latex-workshop.bibtex-format.sortby": [
    "key"
  ],

"~.bibtex-format.sortby" から titleauthor を複数含めて並び替えることも出来るが、Citation_key による並び替えで十分だろう。また、これらの bib ファイル内での並び替えは PDF に出力する際の並び替えとは全く関係がないので注意が必要。

また、Fields の順序を並び替えることが出来る。以下のようにしておけば必須 Fields を先に並べることが出来、目に優しくなるだろう。

  "latex-workshop.bibtex-fields.sort.enabled": true,
  "latex-workshop.bibtex-fields.order": [
    "title",
    // writer
    "author",
    "editor",
    // date
    "year",
    // organization
    "journal",
    "publisher",
    "school",
    "institution",
  ],

ここで指定しなかった Fields 名は指定した Fields 以下でアルファベット順になるようだ。

■ インテリセンス

BibTeX から \cite で引用する際にインテリセンスによって Citation_key が自動補完される。プリアンブルで \bibliography{hoge.bib}\addbibresource{hoge.bib} などとすると LaTeX Workshop が bib ファイルを読むようになる。

デフォルトでは以下のようになっている。

  "latex-workshop.intellisense.citation.maxfilesizeMB": 5,
  "latex-workshop.intellisense.citation.label": "bibtex key",
  "latex-workshop.intellisense.citation.type": "inline",
  "latex-workshop.intellisense.citation.format": [
    "author",
    "title",
    "journal",
    "publisher",
    "booktitle",
    "year"
  ],

これらの設定の概要は以下のようになっている。

Settings Value Description
"~.maxfilesizeMB" numeric 読み込む BibTeX の最大サイズ
"~.label"
  • タイトル:"title"
  • 著者名:"author"
  • Citation_key"bibtex key"
サジェストを表示するためのトリガー語句
"~.type"
  • ホバー表示:"inline"
  • ナビゲーション表示:"browser"
サジェストの表示位置
"~.format" いくつかの Fields サジェスト表示時の情報リスト

\cite で文献の参照を作成するとき、Citation_key を一言一句暗記して打つことに意味はない。サジェスト表示させて選択した方が便利。

多くの場合、参考文献で覚えているのは文献タイトルになると思われる。そのため、"~.label""title" にしておくと良いように思われる。

またこれは好みの問題だが、サジェストの表示位置は "inline" の方が見やすいと思われる。ホバーのサイズが小さくてすべての表示が出来ていない場合にはマウスで大きさを変更できる。以下の画像で確認してみてほしい。

Browser Inline
Citation key browser Citation key inline
Citation key browser pic Citation key inline pic

これらのインテリセンスはかなり優秀に働いてくれる。そのため、mblode.zotero - Marketplace などの Zotero から直接 Citation_key を取得する拡張機能もあるが、bib ファイルを作成してしまえば LaTeX Workshop のインテリセンスで十分だと思われる。(Zotero を起動させておく必要があることなどあまり勝手いが良いものとも思えなかった)

これらのインテリセンスに加えて \cite{Citation_key} に対してホバーで概要を見ることも出来る。

Hover cite

cf. https://github.com/James-Yu/LaTeX-Workshop/blob/master/demo_media/hover-cite.gif?raw=true

参考

また、以下のページでは BibTeX の EntryTypeField に関して詳細に書かれている。スタイルのサンプルもある。

Format - BibTeX.com

関連記事

Zotero に関する記事があります。本記事と合わせてご覧ください。

余談

bib ファイルを取り扱うだけならかなり簡単に扱えるようになっていると思われる。
LaTeX Workshop の設定はほとんどがデフォルトのままになっているが、どのようなフォーマット機能やインテリセンス機能があるのか把握しておく必要はあるだろうと思う。

BibTeX による文献の出力形式をカスタマイズするのは少し面倒らしい。
基本的には (u)pBibTeX を利用すれば良いと思われる。すこし複雑なカスタムをしたい場合には biber+biblatex を利用すると楽に出来るらしい。(最近まで biblatex がエンジンだと思っていたが、これはパッケージ。バックエンドのエンジンに biber や BibTeX を利用しているらしい。)

LaTeX Workshop に関連する記事を計 4 本書いたが、これで Docker に関する設定以外はほぼ網羅したと思われる。やったね!

BibTeX に関するエトセトラ

追記に付すくらいには小さい記事にしようと思ったら、想像以上に大きい記事になってしまったので、以下の Gist に書きました。

初心者のための BibTeX とは - Gist

タイトルの対象が大きすぎてそれに耐えうる記事かは怪しいです。

追記

  • 2021/08/08 : 軽微修正。
  • 2022/07/15 : 軽微修正。
16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14