X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=arxiv.el;h=5b4a8e0427cdf6600a73aa94dfe5f1e134c0138e;hp=f83e768bdd65796679392c8153bc6c6d125c51cf;hb=669d2f3e9a8a033213dfefe40b380ab268962504;hpb=4485ccb1a5c4a3e6541e55c88377edeec18eb61c
diff --git a/arxiv.el b/arxiv.el
index f83e768..5b4a8e0 100644
--- a/arxiv.el
+++ b/arxiv.el
@@ -19,11 +19,14 @@
;; along with this program. If not, see .
;;; Commentary:
-
+;; this library creates a new org-link for Arxiv (http://arxiv.org/) entries,
+;; and provides functions to retrieve bibtex entries from an Arxiv number.
;;
+;; An Arxiv number might look like: cond-mat/0410285 or 1503.01742
;;; Code:
-
+;; * The org-mode link
+;; this just makes a clickable link that opens the entry.
(org-add-link-type
"arxiv"
;; clicking
@@ -76,7 +79,7 @@
(defun arxiv-add-bibtex-entry (arxiv-number bibfile)
"Add bibtex entry for ARXIV-NUMBER to BIBFILE."
(interactive
- (list (read-input "arxiv: ")
+ (list (read-string "arxiv: ")
;; now get the bibfile to add it to
(ido-completing-read
"Bibfile: "
@@ -90,5 +93,29 @@
(save-buffer)))
+(defun arxiv-get-pdf (arxiv-number pdf)
+ "Retrieve a pdf for ARXIV-NUMBER and save it to PDF."
+ (interactive "sarxiv: \nsPDF: ")
+ (let ((pdf-url (with-current-buffer
+ (url-retrieve-synchronously
+ (concat
+ "http://arxiv.org/abs/" arxiv-number))
+ ;;
+ (search-forward-regexp
+ "name=\\\"citation_pdf_url\\\" content=\\\"\\(.*\\)\\\"")
+ (match-string 1))))
+ (url-copy-file pdf-url pdf)
+ ;; now check if we got a pdf
+ (with-temp-buffer
+ (insert-file-contents pdf-file)
+ ;; PDFS start with %PDF-1.x as the first few characters.
+ (if (not (string= (buffer-substring 1 6) "%PDF-"))
+ (progn
+ (message "%s" (buffer-string))
+ (delete-file pdf-file))
+ (message "%s saved" pdf-file)))
+
+ (org-open-file pdf)))
+
(provide 'arxiv)
;;; arxiv.el ends here