Emacs の org-ref で文献参照・相互参照のリンクを挿入する

Emacs の org-mode では、org ファイルから LaTeX ファイルを出力して PDF を作成することができます。
org-mode の org-babel でソースコードの評価と挿入が簡単にできるので便利です。

org-mode では org-ref というパッケージを使用すると、BibTeX の文献参照や図表などの相互参照のリンクを挿入するのがとても簡単になります。
org-ref の一通りの機能や設定方法は、YouTube の 紹介動画 1紹介動画 2公式ページ を見ると分かります。
org-ref はリンクの挿入以外にも、bib ファイルの作成を支援する機能なども備えています。
個人的に bib ファイルの作成には Zotero を使っているのですが、そのうち org-ref に移行するかもしれません。

インストール

org-ref のパッケージは Melpa からインストールできます。
この際、文献のリンクを helm で選択できる helm-bibtex なども一緒にインストールされます。

M-x package-refresh-contents RET
M-x package-install RET org-ref RET

設定

設定は公式ページに従えばいいですが、デフォルトでは helm-bibtex の migemo が有効になっていません。
ここでは migemo の設定は省略しますが、helm で migemo を使うには るびきちさん が紹介している設定が必要です。

最低限としては以下のような設定をしておきます。

(require 'org-ref)
(setq reftex-default-bibliography '("~/Dropbox/bibliography/references.bib"))

;; ノート、bib ファイル、PDF のディレクトリなどを設定
(setq org-ref-bibliography-notes "~/Dropbox/bibliography/notes.org"
      org-ref-default-bibliography '("~/Dropbox/bibliography/references.bib")
      org-ref-pdf-directory "~/Dropbox/bibliography/bibtex-pdfs/")

;;; helm-bibtex を使う場合は以下の変数も設定しておく
(setq bibtex-completion-bibliography "~/Dropbox/bibliography/references.bib"
      bibtex-completion-library-path "~/Dropbox/bibliography/bibtex-pdfs"
      bibtex-completion-notes-path "~/Dropbox/bibliography/helm-bibtex-notes")

;;; migemo を有効化
(push '(migemo) helm-source-bibtex)

;;; background が暗い色だとリンクの色が見辛い
(set-face-foreground 'org-ref-cite-face "White")
(set-face-foreground 'org-ref-ref-face "Yellow")
(set-face-foreground 'org-ref-label-face "Cyan")

;;; どこか空いてる所にキーバインドを設定
(define-key org-mode-map (kbd "C-c c c") `org-ref-helm-insert-cite-link)
(define-key org-mode-map (kbd "C-c c l") `org-ref-helm-insert-label-link)
(define-key org-mode-map (kbd "C-c c r") `org-ref-helm-insert-ref-link)

PDF フォルダの設定は必須ではありませんが、ここに BibTex のキーと同じ名前の PDF を保存しておくと、文献のリンクや helm-bibtex のアクションから PDF を開くことができます。

notes.org の設定も必須ではありませんが、文献についてのメモをこのファイルに書くことができます。
パスに設定したファイルが存在しない場合は、文献のリンクの上で C-c C-o (M-x org-open-at-point) と押すか、リンクをクリックして Open notes を選ぶことでファイルを作成できます。

基本的な使い方

使い方も動画などを見れば全部わかりますが、自分用にメモを残しておきます。

まず最初に、LaTeX で使用する bib ファイルとスタイルを org ファイルに記述します。

bibliographystyle:junsrt
bibliography:~/Dropbox/bibliography/references.bib

文献を参照する cite リンクを挿入するには M-x org-ref-insert-cite-link を実行します。
すると helm-bibtex のバッファが起ち上がり、ここで文献を選択します。
複数の文献を選択する場合は C-SPC で対象の文献をマークします。
また、C-u を押してから文献を選択すると、リンクの形式を選択することができます。

挿入した cite リンクの上にカーソルがある状態では、次のことができます。

  • helm-bibtex バッファで他の文献を選択すると、それが既存のリンクに追加されます。
  • helm-bibtex バッファで C-u C-u を押して文献を選択すると、既存のリンクが消去されて置き換わります。
  • S-right (M-x org-shiftright) と S-left (M-x org-shiftleft) でリンクの並び換えができます。
  • M-x org-ref-sort-citation-link を実行すると、日付の昇順でリンクが並び換えられます。

図表などに相互参照を追加する場合は、まずは M-x org-ref-insert-label-link で label リンクを作成しておきます。
そして、ref リンクを挿入したい場所で M-x org-ref-insert-ref-link を実行します。
自動的に org ファイルの中の label リンクが候補に表示されるので、その中から選択します。
候補には latex ブロックの中に書いた \label も表示されます。
また、この場合も C-u を押してから候補を選択すると、リンクの形式を選択することができます。

その他にも、リンクは C-c C-l (M-x org-insert-link) から補完機能を使って挿入するこも可能です。

コメント

Comments powered by Disqus
書籍更新情報
2016-10-21
Pythonによる科学技術計算 基礎編
PDF版の販売を開始しました。
販売ページはこちら

2016-09-09
Pythonによる科学技術計算 基礎編
1.2版への更新が可能になりました。
サポートページはこちら
電子書籍
Pythonによる科学技術計算 基礎編
Kindle ストア、Leanpubで販売中です
Pythonによる科学技術計算 基礎編
PDF版の販売はこちら
同人誌
技術書典(2016/6/25)
Emacs/org-modeのPDF作成術
電子版をBOOTHで販売中です
Emacs/org-modeのPDF作成術
Share