Nature [1] only gives me ris-formatted [2] citations, but I use bibtex [3].
Also ris is far from human readable.
ris can be reformatted to bibtext, but doing that manually disturbs my workflow when getting references while taking note about a paper in emacs.
I tend to search online for references, often just using google scholar [4], so when I find a ris reference, the first data I get for the ris-citation is a link.
bibutils [5]1 can convert ris to an intermediate xml format and then convert that to bibtex.
wget -O reference.ris RIS_URL
cat reference.ris | ris2xml | xml2bib >> ref.bib
This solves the problem, but it is not convenient, because I have to switch to the terminal, download the file, convert it and append the result to my bibtex file.
With the first step, getting the ris-citation is quite inconvenient. I need 3 steps just for getting a citation.
But those steps are always the same, and since I use Emacs [6], I can automate and integrate them very easily. So I created a simple function in emacs, which takes the url of a ris citation, converts it to bibtex and appends the result to my local bibtex file. Now I get a ris citation with a simple call to
M-x ris-citation-to-bib
Then I enter the url and the function appends the citation to my bibtex file.2
Feel free to integrate it into your own emacs setup (additionally to the GPLv3 [7] you can use any license used by emacswiki [8] or worg [9]).
(defun ris-citation-to-bib (&optional ris-url) "get a ris citation as bibtex in one step. Just call M-x ris-citation-to-bib and enter the ris url. Requires bibutils: http://sourceforge.net/p/bibutils/home/Bibutils/ " (interactive "Mris-url: ") (save-excursion (let ((bib-file "/home/arne/aufschriebe/ref.bib") (bib-buffer (get-buffer "ref.bib")) (ris-buffer (url-retrieve-synchronously ris-url))) ; firstoff check if we have the bib buffer. If yes, move point to the last line. (if (not (member bib-buffer (buffer-list))) (setq bib-buffer (find-file-noselect bib-file))) (progn (set-buffer bib-buffer) (goto-char (point-max))) (if ris-buffer (set-buffer ris-buffer)) (shell-command-on-region (point-min) (point-max) "ris2xml | xml2bib" ris-buffer) (let ((pmin (- (search-forward "@") 1)) (pmax (search-forward "}
"))) (if (member bib-buffer (buffer-list)) (progn (append-to-buffer bib-buffer pmin pmax) (kill-buffer ris-buffer) (set-buffer bib-buffer) (save-buffer) ))))))
Happy Hacking!
PS: When I don’t have the URL (many thanks to journals giving me only a download button), I open the file, select the content and hit M-|
(shell-command-on-region) with ris2xml | xml2bib
(searching backwards via C-r ris
so I to avoid typing the exact command) and get the bibtex version in the results buffer.
Links:
[1] http://www.nature.com/
[2] http://en.wikipedia.org/wiki/RIS_%28file_format%29
[3] http://tug.ctan.org/pkg/bibtex
[4] http://scholar.google.com
[5] http://sourceforge.net/p/bibutils/home/Bibutils/
[6] https://www.draketo.de/light/english/emacs
[7] http://license.draketo.de
[8] http://emacswiki.org
[9] http://orgmode.org/worg/