Using org mode for bibliography management
Maintaining and sorting all the papers you come across in a meaningful way and being able to refer to them when you need to access them used to drive me nuts: There’s the bib file, all the notes on each paper, and then trying to track your notes and references while writing a paper/report. Being an emacs user, I wound up building a system around org-mode to manage all of this. This is basically a followup of the reddit post on this system. I’ve added quite a few additional pieces to this.
The idea is as follows: When I come across a paper that I am interested, I add it to the database, which involves three things:
- Creates a bib entry in my master bib file
- Creates a org heading in my bib notes file
- Downloads and attaches the pdf file to the entry
When I want to take notes on the paper, I use org-noter, which stores all the notes as a entries under the org heading of the paper and is (kinda!) linked to the pdf file. When I want to reference a paper from a latex or org file, I’d use reftex and org-ref which would be pointing to the master bib file when I am editing them. The most satisfying part is when I can directly open the pdf of a paper and the related notes directly from an cite entry in the latex file. On top of that, in order to classify and manage the different topics, I use org-brain which is a variant of concept mapping which uses org-mode. On top of this I also have a org-mode based system for managing my projects and taking related notes. It also being part of org-mode and my org-brain setup, allows me to easily reference papers related to implementations or the other way around, which is a topic for another day.
A few extra details
For brevity I am linking the functions to my dot files on github (Anyone who does go through that file, I apologize for the chaos it is; but then again, “a clean emacs config is an empty emacs config”, so…). Since I constantly modifying this file, the links are to the most recent commit on github as of the date I am pushing the article.
A typical entry in the master org-file would look something like this:
* (2013) Playing Atari With Deep Reinforcement Learning              :ATTACH:
  :PROPERTIES:
  :Custom_ID: mnih13_playin_atari_with_deep_reinf_learn
  :AUTHOR: Mnih, Kavukcuoglu, Silver, Graves, Antonoglou, Wierstra & Riedmiller
  :JOURNAL: CoRR
  :YEAR: 2013
  :VOLUME: 
  :PAGES: 
  :DOI: 
  :URL: http://arxiv.org/abs/1312.5602v1
  :LINK:     https://arxiv.org/pdf/1312.5602v1.pdf
  :ATTACH_DIR: ~/Documents/org/bibliography/pdfs/
  :ID:       2e8e99e0-fc7a-4d41-add9-6737c186d87e
  :Attachment: mnih13_playin_atari_with_deep_reinf_learn.pdf
  :INTERLEAVE_PDF: ~/Documents/org/bibliography/pdfs/mnih13_playin_atari_with_deep_reinf_learn.pdf
  :BRAIN_PARENTS: 6bb2329c-2f8d-4c64-b880-fe1d3f47e0fe
  :END:
  - cite:mnih13_playin_atari_with_deep_reinf_learnTypically, I use org-ref’s crossref-add-bibtex-entry to add a paper to the database. I still haven’t figured out a consistant way to directly download papers through my networks, so I add the url as a LINK propoery. At this stage I have the paper in the bib file and the org file, to link the entry with org-brain and org-noter I execute the research-papers-configure function. To attach the paper to any relevant topic in org-brain, I use the function org-brain-add-parent-topic which filters the org-brain entries to topics. When I want to keep track of the papers I have worked on and the ones I want to work on, I use org-modes todo lists, which I also expose to the org-brain interface which shows the todo state (more details on this can be found in this issue). On top of this I also have a few convenience functions for the following situations:
- Opening a pdf file directly from the org-brainwindow:org-brain-open-org-noter
- Opening an child buttons entry in org-brainwithout going to the entry inorg-brain:org-brain-goto-button-at-pt
- List the topics assigned to a entry: org-brain-print-topics
- Export all papers and notes related to a specific topic, which I use when I am sharing related papers with co-authors: copy-related-research-paper-notesandcopy-related-research-papers
- Simplify adding papers from arxiv (because it’s more consistent and free to download directly): arxiv-add-bibtex-entry-with-note
- Abstract deletion of pdf file and related cleanup: org-brain-delete-interleve-entry
- When reading a pdf file: 
- Add highlighted text as quoted notes (alternative to highlighting on the pdf): org-noter-copy-text-as-note
- Crop a part of the pdf and store it as an image (parts of them still experimental): pdf-crop-image
 
- Add highlighted text as quoted notes (alternative to highlighting on the pdf): 
- Using org-qlfor querying papers based on topics:org-brain-query-papers
PS: Alot of the code I have in these configuration files are copied and modified from many others solutions to different problems.