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:

(setq org-ref-bibliography-notes "~/org/ref/notes.org"
      org-ref-default-bibliography '("~/org/ref/master.bib")
      org-ref-pdf-directory "~/org/ref/pdfs/")

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:

(setq bibtex-completion-bibliography "~/org/ref/master.bib")
      bibtex-completion-library-path "~/org/ref/pdfs"
      bibtex-completion-notes-path "~/org/ref/notes.org") 

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.


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.