Finding bibtex entries with no downloaded pdf
Posted January 08, 2014 at 10:27 AM | categories: bibtex | tags:
Updated January 08, 2014 at 10:41 AM
We use bibtex for bibiliography management in our group. Almost every journal provides a utility to download bibtex entries, and you can pretty easily download bibtex entries from citeulike. It doesn't take too long though before you have a few hundred entries. You need some tools to interact with that database.
Bibtex-mode in Emacs provides some tools for working with your bibtex files. For example, you can (bibtex-validate) to check if entries are correct, and (bibtex-sort-buffer) to sort them by key.
I have a specific workflow to entering new entries. This is what I prefer to do:
- Go to journal, get bibtex entry, paste into bibtex file.
- delete the key that is used, if any
- type C-c C-c to autogenerate a key of my style
- Copy the key, download the pdf, and save the pdf as (format "%s.pdf" key) in my pdfs directory.
- Make an entry in a notes file for that reference. These entries are initially tagged as TODO to remind me to organize them.
Doing this has some payoffs; my org-mode cite links can open either the bibtex entry, or the pdf file directly from the org-file! The notes file is also an org-file, which I can organize as I see fit.
Sometimes I am lazy, and do not get all these steps done, especially the pdf download step. I like to have local copies of the pdf files so I can read them even if I am offline, and because I often annotate them using a tablet PC. It also makes it easy to send them to my students if I need to. Periodically, I like to go through my bibtex database to do some maintenance, download missing files, and notes entries etc… The problem is how do I know which entries have downloaded pdfs or note entries? It is not that difficult with a bit of elisp.
(find-file "~/Dropbox/bibliography/references.bib") (bibtex-map-entries (lambda (bibtex-key start end) (let ((type (cdr (car (bibtex-parse-entry))))) (unless (file-exists-p (format "~/Dropbox/bibliography/bibtex-pdfs/%s.pdf" bibtex-key)) (princ (format "%10s: cite:%s has no pdf\n" type bibtex-key))))))
Book: cite:ambrose-2010-how-learn-works has no pdf article: cite:gerken-2010-fluor-modul has no pdf Book: cite:gray-1973-chemic-bonds has no pdf ARTICLE: cite:kitchin-2003-tio2 has no pdf ARTICLE: cite:kitchin-2012-prefac has no pdf Book: cite:kittel-2005-introd-solid has no pdf ARTICLE: cite:mccormick-2003-tio2-pd has no pdf ARTICLE: cite:mhadeshwar-2004-nh3-ru has no pdf Misc: cite:ni-website has no pdf ARTICLE: cite:norskov-2006-respon has no pdf Book: cite:reif-1965-fundam-statis has no pdf article: cite:risch-2012-water-oxidat has no pdf ARTICLE: cite:shultz-1995-prepar-and has no pdf ARTICLE: cite:shultz-1997-prepar has no pdf ARTICLE: cite:song-2002-h3pw1 has no pdf
Using that list, I can click on those links, which takes me to the entry in file. That entry probably has a url or doi that makes it easy to navigate to the journal page where I can download the pdf file. You could improve on the code above by filtering out only articles, for example.
Copyright (C) 2014 by John Kitchin. See the License for information about copying.