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.
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
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
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.
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
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
helm-bibtex to your liking.
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
interleave package, all I need to do is to add the
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
command. This will display the PDF side-by-side with my notes, where I can
navigate, see or add notes on any page.
The combination of
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.