Ebib のススメ --- Emacs で文献管理 (その 1: 基礎編)
修士論文を書くためにいろいろと参考文献を集めた際,その管理に Emacs を使ったという話をします. おおよそ package.el を用いてパッケージをインストールできる程度には Emacs に慣れた人を対象にしています.
本記事では .bib
ファイルの基本的な編集方法について述べます.
文献の検索・閲覧や,ユーザ設定のカスタマイズなどは別記事で述べます*1.
Ebib について
Emacs には標準で .bib
ファイルの編集支援用の bibtex-mode があります.
が,正直なところ bibtex-mode だけでは .bib
ファイルの編集だけならともかく,
閲覧や検索は厳しいものがあります.
そこで Ebib を使います.
マニュアルは
で読めます. Ebib を用いると,たとえば
file
フィールドで設定した PDF (または PS ファイル) を開くurl
やdoi
フィールドで設定したアドレスを Web ブラウザで開く- フィルター機能を用いた検索
- entry key の自動生成
などが簡単にできるようになります. 本稿では私の備忘録を兼ねて Ebib の紹介と設定について述べます.
Ebib のマニュアルを読むと,ユーザー設定は Customize を用いて行うのが期待されているようです.
私は init.el
に設定を書き込んでしまいましたが,M-x customize-group RET ebib RET
として Customize を利用するのが良さそうです.
本稿執筆時の環境は
OS: macOS 10.13.6 Emacs: GNU Emacs 26.1 Ebib: 20190201.1528
となります.
用語について
BibTeX まわりの用語について,次の凡例のとおり用いることにします.
@entry-type{entry-key, field-name1 = "field-value1", field-name2 = "field-value2", ......, }
例えば
@article{Denef2002:Motivic, keywords = {motivic integration, quotient singularities, the McKay correspondence}, author = {Denef, Jan and Loeser, François}, title = {Motivic integration, quotient singularities and the {M}c{K}ay correspondence}, journal = {Compositio Mathematica}, volume = {131}, year = {2002}, number = {3}, pages = {267--290}, ISSN = {0010-437X}, MRCLASS = {14B05 (14A15 14C15 14C30 14C35 14E15 14L30)}, MRNUMBER = {1905024}, doi = {10.1023/A:1015565912485} }
の entry-type は article
で,entry-key は Denef2002:Motivic
,author
フィールドの値は Denef, Jan and Loeser, François
となります.
拡張子が .bib
のファイルを文献データベース,あるいは単にデータベースということにします.
インストール
MELPA からインストールできます. Emacs のバージョンは 25.3 以上が必要なようです. 詳しくはマニュアルを読みましょう.
起動とデータベースの読み込み
Ebib を起動するには M-x ebib
とタイプします.
データベースを開くには o
を押下します.
データベースは複数開くことができ,方向キーで切り替えができます.
データベースを開くと次のように,ウィンドウが上下に二分割された状態になります.
上の部分を index buffer とよび,下の部分を entry buffer とよびます.
index buffer での基本操作
基本的な操作は次の表の通り.
key | 操作 |
---|---|
o |
データベースを開く |
c |
データベースを閉じる |
s |
保存 |
q |
終了 |
z |
一時休止 |
n |
次の entry へ |
p |
前の entry へ |
g |
最初の entry へ |
G |
最後の entry へ |
a |
entry の追加 |
e |
entry の編集 |
E |
entry key の編集 |
m |
現在行をマーク |
C-u m |
全ての行をマーク/全ての行のマークを外す |
d |
entry を削除 |
k |
entry を kill |
y |
entry を yank |
f |
file を開く |
u |
url を開く |
I |
doi を開く |
i |
他の buffer へ entry を送る |
x |
entry のエクスポート |
! |
entry key の自動生成 |
K s |
keywords の保存 |
保存と終了
編集したデータベースを保存するには s
を押下します.
データベースを閉じるには c
を,Ebib 自体を終了するには q
を押下します.
一時的に Ebib を閉じて他のバッファの編集にもどるには z
を押下します.
Ebib に戻るには再度 M-x ebib
とします.
entry の追加・編集
entry を追加するには a
を,既存の entry を編集するには e
を押下します.
するとカーソルが entry buffer に移動するので内容を追加・修正します.
詳しくは下の entry buffer での基本操作を見てください.
entry key を編集するには E
を押下します.
また !
を押下することで author
, year
や title
フィールドから自動的に entry key を生成することができます.
この自動生成は bibtex-generate-autokey
関数を利用しています.
この関数のカスタマイズについては後で述べます.
また,それぞれ d
, k
, y
を押下することで entry の削除,kill-ring, yank ができます.
Ebib で開いている他のデータベースに entry をエクスポートするには x
を押下します.
これらの操作は m
等でマークした entry に対して一斉に行うことができます.
entry buffer での基本操作
基本的な操作は次の表の通り.
key | 操作 |
---|---|
n |
次のフィールドへ |
p |
前のフィールドへ |
g |
最初のフィールドへ |
G |
最後のフィールドへ |
e |
field value の編集 |
a |
field の追加 |
m |
multiline edit buffer へ |
d |
field value の削除 |
k |
field value の kill |
y |
field value の yank |
q |
index buffer に戻る |
フィールドについて
entry buffer を見ると,フィールドがおおよそ 4 つに分けられます.
一番上のグループ (author
から year
まで) は required field です.
これらは entry type (ここでは article type) ごとに必須とされるフィールドです.
二番目のグループ (volume
から note
まで) は optinal field です.
これらは必須ではありませんが,field value が空でない場合 BibTeX で使われます.
これら 2 つのグループは,当然ですが entry type ごとに異なります.
詳しくは BibTeX の使い方についてググってください.
三番目のグループ (crossref
から file
まで) は extra field です.
これはユーザ変数 ebib-extra-fields
で設定できます.
私の場合,arXiv の ID や MathSciNet で用いられている MRNUMBER などを設定しています.
最後のグループは,required でも optinal でもなく,ebib-extra-fields
で設定されてもいないフィールドです.
あまり使わないし ebib-extra-fields
で設定するまでもない場合に使います.
フィールドの編集・追加
上述の表にあるように e
や a
でフィールドの編集や追加が行なえます.
また index buffer と同じ様にフィールド値の削除, kill-ring, yank が行えます.
m
を押下することで multiline edit buffer へ移ります.
これは,例えば annote
や abstract
フィールドのように複数行にわたって記述されるフィールド値を編集するのに使います.
multiline edit buffer を編集を保存して終了するには C-c | q
を,保存せず終了するには C-c | c
をタイプします.
よく利用する人は適当なキーバインドを設定するのが良いでしょう.
文献情報のインポート
すでに存在する .bib
ファイルから,または CiNii や MathSciNet などの BibTeX 出力を用いて文献情報を追加することができます.
例えば CiNii や MathSciNet の BibTeX 出力をコピーし,適当なバッファ (例えば *scrach*
バッファ) にペーストします.
そこで M-x ebib-import
とすれば現在開いているデータベースに文献情報が追加されます.
また,リージョン選択中に M-x ebib-import
とすれば,選択範囲内の文献情報のみが追加されます.
もし追加される文献の entry key が重複していた場合は Ebib が適当に書き換えます.
E
などを押下して entry key を変更しましょう.
また Ebib で開いている 2 つのデータベースをマージすることもできます. 詳しくはマニュアルを参考にしてください.
*1:後で書くぞ書くぞ