Research Literature Management with Emacs
A major activity in the daily routine of a graduate student is reading a lot of literature. Obviously, this results in a huge pile of papers to manage over time and hence it is unsurprising that we seek out a literature management solution atleast once during our graduate life. Fortunately, there are several excellent solutions today that addresses this problem. I’ve tried many of them, but finally settled on something that works for me. This post describes my current workflow; hopefully it will be useful for someone else too.
At a high-level, my literature management system is really simple. I keep a bibliography file to which I add papers that I find interesting. For each entry in this file, I link two things: the PDF of the paper, and notes on the paper. With this setting, I can quickly search for an entry, find the PDF and/or notes for the matching entry. All this is made possible by Emacs, with the help of a few packages. Let me explain this in a bit of details.
Basic Setup
The first thing to do is to set up a few basic things. As I mentioned, I have one bibliography file where I want new entries to go. I also need a folder to store all the PDFs and a way to store notes on each of these entries. For this task, I leverage the org-ref package. Here’s my org-ref setup:
The code should be self-explanatory: bibliography entries are stored in a file
named master.bib
, while PDF files corresponding to the entries go in the
pdfs
folder. I chose to store my notes in a single org file notes.org
. Note
that it is entirely possible to have separate note files for every entry in your
bibliography file. My org
folder is synced with a cloud storage service.
Adding Entries
When I come across a paper that I’m interested in reading, I add it to
master.bib
. Most of the time, I can simply drag-and-drop the paper link or
DOI to the bibliography file and let org-ref take care of creating the entry
and downloading the PDF. Otherwise, I simply copy the bibtex entry and then run
doi-utils-get-bibtex-entry-pdf
to get the PDF.
Once I decide to read (and make notes on) a paper that is in my bibliography
file, I then proceed to make an entry for it in my notes.org
file. I do this in
either of two ways: if I have the master.bib
file open, I can simply go to the
entry I want to read, and then use the org-ref-open-bibtex-notes
command. As
the name suggests, this command opens the corresponding notes entry in the
org-ref-bibliography-notes
file, creating a new entry if it can’t find one. If
I don’t have the master.bib
file open, I use the excellent helm-bibtex
package to search through my bibliography files. When I find the entry I’m
looking for, I open notes (or create it) with helm’s available
actions on the selected entry. For this to work, we
need to let helm-bibtex
know where the notes and PDF files are:
You can customize the fields in the entry created in notes.org
by both
org-ref
and helm-bibtex
to your liking.
Taking Notes
Now that I have an entry in my notes.org
file for the paper that I want to
read, the next step is to take notes as I read. You can simply type down your
thoughts below the entry in notes.org
, but I like seeing the notes
side-by-side with the page on which it was made. For this purpose, I use
the interleave package. To
use the interleave
package, all I need to do is to add the INTERLEAVE_PDF
property to the PROPERTIES
section of the entry in my notes.org
file. Then,
to open the PDF, I place the cursor on the title, and invoke interleave-mode
command. This will display the PDF side-by-side with my notes, where I can
navigate, see or add notes on any page.
Searching
The combination of org-ref
, helm-bibtex
and interleave
gives me great
flexibility. I can easily search for entries in my bibliography files using
helm-bibtex
. From there, I can open the paper and/or its notes. Since I use
Emacs to write papers, org-ref
makes it easy to insert citations, look up
notes and download papers as I write. Having the notes in plain text lets me
search through them easily. Finally, as a bonus, org
mode lets me easily
export my notes in several formats.
To summarize, having the literature management system tightly coupled with my paper writing environment (Emacs with AUCTeX) worked quite well for me.