As an scientist, I read lots of journal articles in the form of PDF files. I wrote recently about how I find papers related to my field of interest (i.e., sensory neurobiology in insects) and I thought it would also be fun to write a bit more about the workflow I use to process papers once I find them.
Reading and annotating PDFs
I maintain a library of about 3,000 PDFs in a Papers2 database. Papers2 is a great app that has built-in, token-based journal repository search coupled to the ability to automatically retrieve article metadata. Although not officially supported, Papers2 also allows me to sync my PDF library through Dropbox to multiple computers.
I run a primarily paperless office, and my favorite way to read these papers is on my iPad. Papers2 has a companion iOS app, but it is still hobbling along with Wifi-only based syncing1. Instead, I use the excellent iOS app iAnnotate PDF because of nice annotation tools but also because of its ability to sync my newly annotated files back to Dropbox.
iAnnotate has become a very important part of my workflow because I stay more focused as I read by highlighting passages and by taking notes. Although iAnnotate has lots of annotation tools, I really only use the highlighter and floating comment tools. I also try very hard to maintain a consistent color code across all of my papers. This way, I can see at a glance what I was thinking when I read a specific paper. Although the specifics of this code are irrelevant—it is only important to stay consistent—I will share it here just in case anyone is curious. Regardless of whether I am making a highlight or a floating comment, I follow this color code:
- Red - Summary
- Orange - Important techniques
- Yellow - Important results
- Green - References (Background info I didn’t know or other papers to read)
- Cyan - Hypotheses and interpretations
- Magenta - Questions for further research or connections to my own projects
If I am ever reading or annotating back on my Mac, I can even use Apple’s standard color chooser to create a custom color palette that reminds me of my chosen code.

Making your annotations searchable
Once I have read a paper, I want to incorporate the paper and the notes I have taken into my personal wiki. I have written a little about this before, but I am using VoodooPad. Each paper I read gets its own page in VoodooPad. This page includes two sections, both of which are automatically generated. The first section is generated based on metadata gathered by Papers2. Using a hotkey, I can export a summary of each paper (i.e., title, authors, abstract, a formatted reference, and link to the paper online) to the clipboard.
Then, using a custom AppleScript, I export the annotations and notes I made in iAnnotate and add them as the second section of that paper’s page in VoodooPad. I wanted to include my color code for the type of note, my comments on that note, and a hyperlink back to the specific page of the paper it came from. The first two of these were easy using the great desktop PDF reader Skim, which supports export of annotation text. Since Skim does not support hyperlinks to specific pages, I had to hack together a solution myself that involved Python, AppleScript, and an application wrapper for creating a custom url handler to tell Skim what to do. Stay tuned for more details2.
Each note is written in markdown and looks basically like this:
**[Reference](skimmer://Hu2007bs.pdf#page=6)**:
References on the expression of different signaling components in the sensory neurons that project to the necklace glomeruli
This means that when the time comes for me to write something using a particular paper as a reference, as long as I remember something about that paper I will be able to search in VoodooPad and quickly get back to the right page of the right PDF.
Just in case it might help someone else, here is the AppleScript I use to export my colored notes from Skim. This script is a modified version of an export script found on this page at Organognosi.com.
tell application "Skim"
set the clipboard to ""
set numberOfPages to count pages of document 1
activate
set myColorCodes to my chooseColor()
set firstPage to "1" as number
set lastPage to numberOfPages
set the clipboard to "# Notes #" & return & return
repeat with currentPage from firstPage to lastPage
set pageNotes to notes of page currentPage of document 1
exportPageNotes(pageNotes, currentPage, myColorCodes) of me
end repeat
end tell
on exportPageNotes(listOfNotes, pageForProcessing, myColorCodes)
tell application "Skim"
set currentPDFpage to pageForProcessing
repeat with coloredNote in listOfNotes
repeat with i from 1 to the count of myColorCodes
if color of coloredNote is item i of myColorCodes then
set categoryColors to ({"Summary", "Technique", "Result", "Reference", "Hypothesis", "Question or connection"})
set noteColor to color of coloredNote as string
if noteColor is item i of myColorCodes as string then
set noteColor to item i of categoryColors
end if
set noteText to get text for coloredNote
set the clipboard to (the clipboard) & "**[" & noteColor & "]" & "(skimmer://" & name of document 1 & "#page=" & pageForProcessing & ")**" & ": " & return & noteText & return & return
end if
end repeat
end repeat
end tell
end exportPageNotes
on chooseColor()
set selectedColors to ({"Summary", "Technique", "Result", "Reference", "Hypothesis", "Question or connection"})
set colorCodes to {}
set noteColor to ""
repeat with noteCol in selectedColors
set noteColor to noteCol as text
if noteColor is "Summary" then
set end of colorCodes to {64634, 900, 1905, 65535}
else if noteColor is "Technique" then
set end of colorCodes to {64907, 32785, 2154, 65535}
else if noteColor is "Result" then
set end of colorCodes to {65535, 65531, 2689, 65535}
else if noteColor is "Reference" then
set end of colorCodes to {8608, 65514, 1753, 65535}
else if noteColor is "Hypothesis" then
set end of colorCodes to {8372, 65519, 65472, 65535}
else if noteColor is "Question or connection" then
set end of colorCodes to {64587, 1044, 65481, 65535}
end if
end repeat
return colorCodes
end chooseColor
Notice, that the color codes feature prominently and most of that script is related to processing the notes according to their color.
-
Papers, if you are listening, please support Dropbox-based library sync. ↩
