Ebib のススメ --- Emacs で文献管理 (その 3: 設定編)
その 1 および その 2 に続いて,
Ebib の個人的なカスタマイズについてまとめます.
その 1 でも書きましたが Ebib のマニュアルを読むと Customize を用いて設定されるのを想定しているように思えます.
が,私は init.el
に色々と書き込んでしまったので,その様に本記事でも記述します.
本稿は個人的な備忘録代わりですのでちゃんとマニュアルを読むことをおすすめします.
また下記の設定 (の一部) は私の GitHub のレポジトリに上げてあったりもします*1.
データベースのプリロード
Ebib は起動時に指定した .bib
ファイルを読み込ませることができます.
これは ebib-preload-bib-files
変数で設定できます.
MacTeX では .bib
ファイルの類は ~/Library/texmf/bibtex/bib
以下に置いておくのが良さそうですので,
ここに置いた特定のファイルを起動時に読み込むようにしています.
~/Library/texmf/bibtex/bib
以下に
articles.bib
... 論文やプロシーディングスなどbooks.bib
... 教科書などothers.bib
... その他 (preprint など)
などのデータベースを配置し init.el
に
(setq ebib-preload-bib-files '("~/Library/texmf/bibtex/bib/articles.bib" "~/Library/texmf/bibtex/bib/books.bib" "~/Library/texmf/bibtex/bib/others.bib"))
と記述します.
extra fields
個人的に extra field には
などが欲しいので
- MRNUMBER
- MRCLASS
- archivePrefix
- eprint
- primaryClass
などの項目を ebib-extra-fields
にセットします.
(setq ebib-extra-fields '((BibTeX "annote" "keywords" "doi" "archivePrefix" "primaryClass" "eprint" "MRCLASS" "MRNUMBER" "file") (biblatex "annotation" "keywords" "archivePrefix" "primaryClass" "MRCLASS" "MRNUMBER" "file")))
BibTeX
から始まる行は BibTeX 使用時の,biblatex
から始まる行は biblatex 使用時の extra field の設定です.
Ebib で BibTeX (または biblatex) をデフォルトとして使うには ebib-bibtex-diarect
変数に BibTeX
(または biblatex
) をセットします.
entry key の自動生成
新しく文献を追加して q
を押下したあと,または !
を押下すると自動的に entry key が生成されます.
この自動生成規則は bibtex-mode の bibtex-generate-autokey
を利用しているようです.
ここでは <第一著者の姓><出版年>:<論文タイトルの最初の 1 語>
の形の entry key を作成します.
ただし <出版年>
は 4 桁で, <論文タイトルの最初の 1 語>
は A
An
The
On
などを除くように設定します.
(setq bibtex-autokey-name-case-convert 'capitalize) (setq bibtex-autokey-titleword-case-convert 'capitalize) (setq bibtex-autokey-titleword-separator "") (setq bibtex-autokey-titleword-length nil) (setq bibtex-autokey-titlewords 1) (setq bibtex-autokey-year-length 4) (setq bibtex-autokey-year-title-separator ":") (setq bibtex-autokey-titleword-ignore '("A" "An" "On" "The" "a" "an" "on" "the" "Le" "La" "Les" "le" "la" "les" "Zur" "zur"))
keywords list
keywords list の設定についてです.
その 2 でも述べたように,
私は一つの ebib-keywords.txt
をすべてのデータベースで共有して利用しています.
また,新規に追加したキーワードはEbib 終了時に自動的に保存するように設定しています.
例えば ~/Library/texmf/bibtex/ebib-keywords.txt
を keywords list として利用する場合,次のように設定します.
(setq ebib-keywords-use-only-file t) (setq ebib-keywords-file "~/Library/texmf/bibtex/ebib-keywords.txt") (setq ebib-keywords-file-save-on-exit 'always)
PDF を開く
まず PDF/PS を開くためのコマンドを標準の xpdf
/ gv
から macOS の open
に変更します.
(setq ebib-file-associations '(("pdf" . "open") ("ps" . "open")))
open
コマンドではなく Skim.app を利用したい場合は /Applications/Skim.app/Contents/MacOS/Skim
に書き換えれば OK です.
open -a Skim
等ではうまくいきません.
また ("拡張子" . "コマンド")
のドット対を追加することで PDF/PS 以外のファイルも開けるようになります.
File Search Dirs
index buffer で f
を押下したとき,file
フィールドに記述されたファイルを開きます.
file
フィールドにはフルパスを記述する必要はありません.
Ebib は File Serch Dirs に設定したディレクトリの下にあるファイルを探して開きます.
File Search Dirs 以下のサブディレクトリは 検索しません .
私の場合,Dropbox 内の BibFile というディレクトリをホームディレクトリにシンボリック・リンクを貼って利用しています.
~/BibFile/Papers/
... 論文など~/BibFile/Books/
... 教科書など~/BibFile/Proceedings/
... プロシーディングス集など
を File Serch Dirs にセットします.
(setq ebib-file-search-dirs '("~/BibFile/Papers" "~/BibFile/Books" "~/BibFile/Proceedings"))
この状況で,例えば file = {Denef/Denef2002Motivic.pdf}
というフィールド値を持つ entry を選択した状態で f
を押下すると
~/BibFile/Papers/Denef/Denef2002Motivic.pdf
か ~/BibFile/Books/Denef/Denef2002Motivic.pdf
, ~/BibFile/Proceedings/Denef/Denef2002Motivic.pdf
のいずれかが開きます*3.
ebib-name-transform-function
file
フィールド値が空の場合,Ebib は entry key から定まる PDF を探して開いてくれます.
標準では <entry key>.pdf
という名前の PDF を探します.
Ebib が探すファイル名を変更するには ebib-name-transform-function
を適当に定義します.
私の場合 <第一著者の姓><出版年>:<論文タイトルの最初の 1 語>
の形の entry key から <第一著者の姓>/<第一著者の姓><出版年><論文タイトルの最初の 1 語>.pdf
というファイルを探して欲しいので,
そのように適当な関数を定義します.
例えば
(defun my/ebib-name-transform-function (key) "Serach file" (format "%s/%s" (substring key (string-match "[A-Za-z]+" key) (match-end 0)) (replace-regexp-in-string ":" "" key)))
という関数を定義して ebib-name-transform-function
にセットします.
(setq ebib-name-transform-function #'my/ebib-name-transform-function)
Emacs Lisp はまったくわからないので,上の関数は見よう見まねです. なにかあっても責任はとれませんのであしからず.
それでは,なにかありましたらコメントいただければ幸いです.