bibtex

Emacsのorg-modeで論文を書く(その3:org-modeとbibtexとreftexの連携による文献引用の自動化)

前回(Emacsのorg-modeで論文を書く(その2:BibDeskによる論文収集と整理))は,BibDeskを用いて文献情報をbibtex ファイルとして収集する方法についてまとめた.今回は,この文献情報を利用した引用をEmacsのorg-modeでどのように自動化するかについてまとめる.早い話が,org-modeからlatexのbibtexとreftexの機能を利用するということになる. Table of Contents org-mode-reftex-setup org-mode-reftex-setupの使用方法 ox-bibtex.el bst ファイルについて bst ファイルの置き場所 文献を引用したorg-modeからのexportの実例 org-mode-reftex-setup 参照サイト:Using Emacs Org-mode to Draft Papers RefTex-ModeというものがEmacsには含まれている.文献や引用の管理のためのパッケージである.詳細はC-h iでマニュアルを見れば分かる,と言いたいところだが,このマニュアルが膨大である.そこで,RefTeX in a Nutshellという2ページほどの要約を読めば,使うのには十分であるとマニュアル自体に書いてある(笑).実は私はそれすらろくに読んでいないが,以下のように設定すれば,十分に使える.設定方法は,以前の記事(Emacsの設定(その2)設定ファイル(init.el)をorg-modeで管理する)に記載したとおり,init.orgに書き込めば良い. #+begin_src emacs-lisp (defun org-mode-reftex-setup () (load-library "reftex") (and (buffer-file-name) (file-exists-p (buffer-file-name)) (reftex-parse-all)) (define-key org-mode-map (kbd "C-c )") 'reftex-citation) ) (add-hook 'org-mode-hook 'org-mode-reftex-setup) #+end_src 上記の設定により,参照サイトの説明のように,org-modeの中でreftex-citationの機能が働くようになる. org-mode-reftex-setupの使用方法 org-modeで文書を書いている最中に文献を引用したい箇所で,C-c ) と打つ すると,まず,どの文献リストを使うかを聞いてくるので,hogefuga-reference.bibなど使いたいリストの名前を打つ.前回説明した方法で収集した文献のbib ファイルが有るはずである. 次に,文献を絞り込むためにキーワードを打つように催促されるので,それを打つ.すると,そのキーワードを有する文献のリストがずらずらと並ぶ.下図の例では,stetler と著者名を打ったときの結果が下のバッファに表示されている.該当する文献にカーソルを持ってくるか,クリックして選択し,リターンを押せば決定され,本文の該当箇所にその論文の cite-key,つまり,\cite{Stetler:2012jt} が入力される. 上図の下のバッファ内でも,C-sの検索機能は使えるので,さらに絞り込みが必要な際は便利である.以前の記事(Emacsの設定(その1)Preludeの導入)で述べたようにpreludeを導入して,かつ,helmを有効にしておけば,下図のようにC-sでswiperが使えて更に便利である.(なお,下図では,まず,heat shock proteinと打ち,ズラッと並んだ真ん中のバッファでC-sとやってstetlerと打ったところである.一番下のバッファにstetlerで絞り込まれた候補が並んでいる) ox-bibtex.el 参考サイト:Org and Bibtex 上述の作業で,文献を本文中にcite-keyとして引用することはできた.次に必要なのはorg-modeからpdfやhtmlにexportする際に,cite-keyをもとに,文献が雑誌の規定の様式で引用され,最後に文献リストが規定の様式で記述されるようにすることである.この面倒をみてくれるのが,ox-bibtex.el である. ox-bibtex.elは,org-plus-contrib packageの中に含まれているので,まず,org-plus-contribをインストールする.これは,package.el を使えば簡単である.

Emacsのorg-modeで論文を書く(その2:BibDeskによる論文収集と整理)

さて,前回(Emacsのorg-modeで論文を書く(その1:pdfとhtmlへの出力))はorg-modeによる論文本体の執筆に付いてまとめたわけだが,今回は論文引用の方法についてまとめる.と思ったのだが,論文を引用するためには,当然のことながら論文を収集しなければならない.そのうち膨大な数の論文の海に溺れることになる.そこで,収集した論文,つまり,pdfの整理をするソフトが必要になってくる.その引用も,書式や番号付を雑誌の規定に合わせて自動化してくれれば言うことはない.ということで,そのようなソフトについて書くことにする.有料ソフトの定番としては,EndoNoteがあるし,フリーソフトでは,zoteroやMendeleyが有名である.私自身は,LaTeXを利用することが多い関係上,BibDeskというこれまた老舗のソフトをもっぱら利用している.ネット上でもzoteroやmendeleyについての情報は豊富だが,BibDeskについてはそれほど見られないので,まとめておくことは多少の意味があるであろうと考え,BibDeskによる論文収集を説明することにした. BibDesk texliveをインストールすればその中に入っているが,最新版はリンク先にあるので,そちらを落とすほうが良い. 文献をbibtexのファイルとして管理する.pdfとの関連付けができるので,書誌事項とpdfが一体化して管理できる. bibtexに関しては,BiBTeXとは を参照 bibtexファイルなので,当然,latexの機能を用いて,文献の引用,引用スタイルの設定,文献リストの作成,文献リストのスタイルの設定などをすべて自動化できる.これが便利! 見た目はこんな感じ 医学系の論文となると,やはり,PubMedなどネットでの連携が重要である.下図のごとく,BibDeskではSearches menuからPubMedを選ぶことにより,BibDeskの中からPubMedを検索できる. 検索欄に,例えば,“heat shock protein"と打つと,下図のように検索結果が50編ずつ並ぶが,50編以上ある場合は,Searchを繰り返しクリックすることにより,100編と150編とどんどんリストに取り込まれていく. 上図のごとく,検索結果欄の左端に"Import” ボタンがあるが,これをクリックするとその論文の書誌事項が取り込まれる.その際に,自分の文献リストの名前を,“hogefuga-reference.bib” など適当に決めれば良い.以後はそのリストに追加していくことになる. また,取り込まれる際にcite-keyをBibDeskが自動的に決めてくれる.このcite-keyは次回の記事で述べる「引用の自動化」の際にreftexに使用される. なお,PubMedの番号,つまり,Pmidが分かっていれば,それを打ち込めば一発で書誌事項を検索できる. リストの中から興味のある論文をクリックして選択し,グレーにハイライトさせると,下図のごとく右側のサイドパネルに,その論文のあるサイトを示すアイコンが表示される.これをクリックすれば,ブラウザーが開いてそのサイトに飛ぶ.もし,その論文がオープンアクセスであれば,あるいは,所属する組織が出版社と契約を交わしていれば,その論文のpdfを落とせる.落としたpdfをドラッグしてその論文に該当するリストのラインにドロップすれば,その書誌事項とpdfはリンクし,以降はその論文のサイドパネルにpdfのアイコンが表示され,ダブルクリックによりオープンするようになる.さらに言えば,pdfではなく,パワポやワードのファイルとして文献が存在することもある.同じようにドラッグ&ドロップすれば,これまたリンクする.しかも一つの文献にいくつものpdfやその他のファイルをリンクできる.非常に便利である. また,下図のごとく,左のサイドパネルの一番上の方にある"Web BibDesk Web Group"をクリックして選択すれば,更にいろいろな文献ソースが表示される.医学系では,Google Scholarが有用なので,これをクリックすれば,BibDeskの中からGoogle Scholarを検索できるし,書誌事項も取り込める.pdfのリンクが存在すればBibDeskの中でpdfを落とすこともできる. 収集した文献の書誌事項はhogefuga-reference.bibにbibtex fileとしてまとめられているが,その中身は以下のような情報の集積である(下の例ではabstractなどは省略している). @article{Rothwell:2018aa, Author = {Rothwell, Peter M and Cook, Nancy R and Gaziano, J Michael and Price, Jacqueline F and Belch, Jill F F and Roncaglioni, Maria Carla and Morimoto, Takeshi and Mehta, Ziyah}, Date-Added = {2018-08-03 22:46:26 +0900}, Date-Modified = {2018-08-03 22:46:26 +0900}, Doi = {10.