Zotero と LaTeX Workshop で bib ファイルを扱いこなす
Zotero から簡単に bib ファイルを取得したい。また、LaTeX Workshop で上手に bib ファイルを取り扱いたい。
- Zotero ver.5.0.96.2 (2021/7 現在)
- LaTeX Workshop | James Yu ver.8.19.2 (2021/7 現在)
本記事では、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 |
- | タイトルや著者名など |
Fields
と Contents_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 ではコレクションと呼称しているが、タグ付けに近い印象)
Zotero から BibTeX を作成する方法は非常に簡単。
例えば次のように必要な文献が “use” コレクションにある場合を考える。このコレクション上で右クリックし、コレクションをエクスポート
をクリックすると左のようなウィンドウが表示される。これを OK
して bib ファイルを好きなところに保存すれば良いだけ。
Step1: Collection in Library | Step2: 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 ファイルをダウンロードすれば良い。
あとは ZotFile と同様に、メニューバーから ツール > アドオン
に進み、右上の歯車アイコンから Install Add-on From File
をクリックし、取得した zotero-better-bibtex ファイルを選択する。
インストールしたら Zotero を再起動する。おそらく 2 回ほど再起動する必要があるが、2 回とも再起動のダイアログが表示されるためそれに従えば良い。
Citation key の命名規則
Citation_key
をカスタムしたい。デフォルトでは以下のようになっている。
[auth:lower][shorttitle3_3][year]
この命名規則を例をもって示しておきたい。例えば、著者名が Famous Author
、文献タイトルが This is very famous document
、公開年が 1990
であれば Citation_key
は以下のようになる。
famousThisIsVery1990
これらの詳細は以下を参照すると良い。かなり多様な設定をすることが出来ることが分かるだろう。
今回は、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 を上のものに変更すれば良い。
○ 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" する様子
基本的なフォーマット設定は以下からすることが出来る。ここで設定したフォーマットは上のコマンドのいずれかを実行すると動作する。
"[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" |
|
Fields 名のレターケースを選択 |
"~.surround" |
|
Contents_of_fields の囲い |
"~.trailingComma" |
true or false
|
末尾の , の自動挿入 |
"~.handleDuplicates" |
|
重複する 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"
から title
や author
を複数含めて並び替えることも出来るが、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" |
|
サジェストを表示するためのトリガー語句 |
"~.type" |
|
サジェストの表示位置 |
"~.format" |
いくつかの Fields
|
サジェスト表示時の情報リスト |
\cite
で文献の参照を作成するとき、Citation_key
を一言一句暗記して打つことに意味はない。サジェスト表示させて選択した方が便利。
多くの場合、参考文献で覚えているのは文献タイトルになると思われる。そのため、"~.label"
は "title"
にしておくと良いように思われる。
またこれは好みの問題だが、サジェストの表示位置は "inline"
の方が見やすいと思われる。ホバーのサイズが小さくてすべての表示が出来ていない場合にはマウスで大きさを変更できる。以下の画像で確認してみてほしい。
Browser | Inline |
---|---|
これらのインテリセンスはかなり優秀に働いてくれる。そのため、mblode.zotero - Marketplace などの Zotero から直接 Citation_key
を取得する拡張機能もあるが、bib ファイルを作成してしまえば LaTeX Workshop のインテリセンスで十分だと思われる。(Zotero を起動させておく必要があることなどあまり勝手いが良いものとも思えなかった)
これらのインテリセンスに加えて \cite{Citation_key}
に対してホバーで概要を見ることも出来る。
cf. https://github.com/James-Yu/LaTeX-Workshop/blob/master/demo_media/hover-cite.gif?raw=true
参考
- About BibTeX
- LaTeX Workshop
- Better BibTeX for Zotero
また、以下のページでは BibTeX の EntryType
と Field
に関して詳細に書かれている。スタイルのサンプルもある。
関連記事
Zotero に関する記事があります。本記事と合わせてご覧ください。
-
Zotero をセットアップします。
余談
bib ファイルを取り扱うだけならかなり簡単に扱えるようになっていると思われる。
LaTeX Workshop の設定はほとんどがデフォルトのままになっているが、どのようなフォーマット機能やインテリセンス機能があるのか把握しておく必要はあるだろうと思う。
BibTeX による文献の出力形式をカスタマイズするのは少し面倒らしい。
基本的には (u)pBibTeX を利用すれば良いと思われる。すこし複雑なカスタムをしたい場合には biber+biblatex を利用すると楽に出来るらしい。(最近まで biblatex がエンジンだと思っていたが、これはパッケージ。バックエンドのエンジンに biber や BibTeX を利用しているらしい。)
LaTeX Workshop に関連する記事を計 4 本書いたが、これで Docker に関する設定以外はほぼ網羅したと思われる。やったね!
BibTeX に関するエトセトラ
追記に付すくらいには小さい記事にしようと思ったら、想像以上に大きい記事になってしまったので、以下の Gist に書きました。
タイトルの対象が大きすぎてそれに耐えうる記事かは怪しいです。
追記
- 2021/08/08 : 軽微修正。
- 2022/07/15 : 軽微修正。