- (format "%s" results) ; json-data
- (some (lambda (g) (funcall g type results)) doi-utils-bibtex-type-generators)
- (message-box "%s not supported yet." type)))
-#+END_SRC
-
-
-#+BEGIN_SRC emacs-lisp :tangle doi-utils.el
-(defun doi-utils-doi-to-bibtex-string (doi)
- "return a bibtex entry as a string for the doi. Only articles are currently supported"
- (let (type
- results
- author
- title
- booktitle
- journal
- year
- volume
- number
- pages
- month
- url
- json-data)
- (setq results (doi-utils-get-json-metadata doi)
- json-data (format "%s" results)
- type (plist-get results :type)
- author (mapconcat (lambda (x) (concat (plist-get x :given) " " (plist-get x :family)))
- (plist-get results :author) " and ")
- title (plist-get results :title)
- journal (plist-get results :container-title)
- volume (plist-get results :volume)
- issue (plist-get results :issue)
- year (elt (elt (plist-get (plist-get results :issued) :date-parts) 0) 0)
- pages (plist-get results :page)
- doi (plist-get results :DOI)
- url (plist-get results :URL))
- (cond
- ((or (string= type "journal-article") (string= type "article-journal"))
- (doi-utils-expand-template "@article{,
- author = {%{author}},
- title = {%{title}},
- journal = {%{journal}},
- year = {%{year}},
- volume = {%{volume}},
- number = {%{issue}},
- pages = {%{pages}},
- doi = {%{doi}},
- url = {%{url}},
-}"))
-
- ((string= type "proceedings-article")
- (setq booktitle (plist-get results :container-title))
- (doi-utils-expand-template "@inproceedings{,
- author = {%{author}},
- title = {%{title}},
- booktitle = {%{booktitle}},
- year = {%{year}},
- month = {%{month}},
- pages = {%{pages}},
- doi = {%{doi}},
- url = {%{url}},
-}"))
-
- (t (message-box "%s not supported yet." type)))))