org-modeにおける引用のハンドリング
Emacs org-modeのアウトライン編集とエクスポート機能はアカデミックな文書作成においてもとても有用です。アカデミックライティングにおいて引用文献の管理はエッセンシャルですが、org-modeでは引用管理ツールに大きく二つの選択肢があります。一つは、jkitchin氏が精力的に開発しているorg-refパッケージ、もう一つはorg-modeの標準機能として提供されているorg-citeです。
org-refはorg-citeの実装以前から開発されており、引用管理以外にも文献検索bibtexファイルの管理等、多様な機能を提供しています。しかし私はシンプルなorg-citeを文献管理パッケージのcitarと組み合わせて使っています。
文書で引用している文献を抽出したリストがほしい
普段の作業では、自分の管理するすべての書誌情報をまとめたbibtexファイル references.bib
をマスターファイルとして、そこ必要な文献を引用しています。しかし、時々「引用している文献だけを抽出した BibTeX ファイルが欲しい」と思うことがあります。
多機能なorg-refにはこの機能が org-ref-extract-bibtex-to-file
として実装されています。この関数は、org ドキュメントで実際に引用された文献だけを含むローカルな BibTeX ファイルを生成してくれます。しかし、citar & org-cite の環境では標準機能に含まれていません。
自作関数: citar-extract-bibtex-to-file
そこで、自分で作ってみるました。手順としては以下のようになります。
- org-citeがエクスポート時に引用文献を処理するための関数 org-cite-get-references を用いて文書中の引用文献のcitekeyを抽出
- 抽出したcitekeyを用いてcitarでマスターbibtexファイルを検索し、書誌情報を得る。
- 書誌情報をbibtex形式に再構成してファイルに出力
このようにして作成したのが citar-extract-bibtex-to-file
です。始めて自分で自分が必要な機能を作成しました。
プログラミングは素人なので、もっとスマートなやり方があるかもしれませんが、とりあえず自分の求めていた機能を実現できて満足です。
せっかくなので、これも初体験ですがパッケージとしてgithubで公開してみました。ニッチなツールかもしれませんが、誰かの役に立ったり、有用なコメントがもらえるとうれしいです。