X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=72b4b528d9741b8722b4377d751474e5f0b60542;hp=6905efe9cad4855405032ff614f5ebd1553bafa8;hb=8758611b7670699ecaf4335933666a5967f39065;hpb=4b6fd70d429fd8d3268bd7ce05a84864af098c74 diff --git a/org-ref.el b/org-ref.el index 6905efe..72b4b52 100644 --- a/org-ref.el +++ b/org-ref.el @@ -111,11 +111,23 @@ You should use full-paths for each file." (defcustom org-ref-open-pdf-function 'org-ref-open-pdf-at-point -"User-defined function to open a pdf from a link. The function must get the key at point, and derive a path to the pdf file, then open it. The default function is `org-ref-open-pdf-at-point'." + "User-defined function to open a pdf from a link. The +function must get the key at point, and derive a path to the pdf +file, then open it. The default function is +`org-ref-open-pdf-at-point'." :type 'function :group 'org-ref) +(defcustom org-ref-get-pdf-filename-function + 'org-ref-get-pdf-filename + "User-defined function to get a filename from a bibtex key. +The function must take a key as an argument, and return the path +to the corresponding filename. The default is +`org-ref-get-pdf-filename'. An alternative value is +`org-ref-get-mendeley-filename'.") + + (defcustom org-ref-insert-cite-function 'org-ref-helm-insert-cite-link "Function to call to insert citation links. The default is `org-ref-helm-insert-cite-link' which uses `helm-bibtex'. `org-ref' modifies `helm-bibtex' a little bit to give `org-mode' citations, and to reorder default actions. You may use `org-ref-insert-cite-link' if you like the reftex interface." @@ -1411,9 +1423,10 @@ Optional argument ARG Does nothing." ;formatting (lambda (keyword desc format) (cond - ((eq format 'html) (format "(%s)" path)) - ((eq format 'latex) - (format "\\eqref{%s}" keyword))))) + ((eq format 'latex) (format "\\eqref{%s}" keyword)) + ;;considering the fact that latex's the standard of math formulas, just use mathjax to render the html + ;;customize the variable 'org-html-mathjax-template' and 'org-html-mathjax-options' refering to 'autonumber' + ((eq format 'html) (format "\\eqref{%s}" keyword))))) ;; ** cite link @@ -1536,12 +1549,37 @@ falling back to what the user has set in `org-ref-default-bibliography'" ;; *** key at point functions +(defun org-ref-get-pdf-filename (key) + "Return the pdf filename associated with a bibtex KEY." + (format (concat org-ref-pdf-directory "%s.pdf") key)) + + +(defun org-ref-get-mendeley-filename (key) + "Return the pdf filename indicated by mendeley file field. +Falls back to org-ref-get-pdf-filename if file filed does not exist. +Contributed by https://github.com/autosquid." + (let* ((results (org-ref-get-bibtex-key-and-file key)) + (bibfile (cdr results))) + (with-temp-buffer + (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) + (bibtex-search-entry key nil 0) + (setq entry (bibtex-parse-entry)) + (let ((e (org-ref-reftex-get-bib-field "file" entry))) + (if (> (length e) 4) + (remove-if + (lambda (ch) + (find ch "{}\\")) + (format "/%s" (subseq e 1 (- (length e) 4)))) + (format (concat org-ref-pdf-directory "%s.pdf") key)))))) + + (defun org-ref-open-pdf-at-point () "Open the pdf for bibtex key under point if it exists." (interactive) (let* ((results (org-ref-get-bibtex-key-and-file)) (key (car results)) - (pdf-file (format (concat org-ref-pdf-directory "%s.pdf") key))) + (pdf-file (funcall org-ref-get-pdf-filename-function key))) (if (file-exists-p pdf-file) (org-open-file pdf-file) (message "no pdf found for %s" key)))) @@ -1724,7 +1762,7 @@ get a lot of options. LINK-STRING is used by the link function." (interactive) (let* ((results (org-ref-get-bibtex-key-and-file)) (key (car results)) - (pdf-file (format (concat org-ref-pdf-directory "%s.pdf") key)) + (pdf-file (funcall org-ref-get-pdf-filename-function key)) (bibfile (cdr results)) (url (save-excursion (with-temp-buffer @@ -3260,7 +3298,7 @@ With two prefix args, insert a label link." Checks for pdf and doi, and add appropriate functions." (let* ((results (org-ref-get-bibtex-key-and-file)) (key (car results)) - (pdf-file (format (concat org-ref-pdf-directory "%s.pdf") key)) + (pdf-file (funcall org-ref-get-pdf-filename-function key)) (bibfile (cdr results)) (url (save-excursion (with-temp-buffer @@ -3360,7 +3398,13 @@ This is a list of cons cells '((\"description\" . action)). The action function ;; example of adding your own function (add-to-list 'org-ref-helm-user-candidates - '("Example" . (lambda () (message-box "You did it!"))) + '("Open pdf in emacs" . (lambda () + + (find-file + (concat + org-ref-pdf-directory + (car (org-ref-get-bibtex-key-and-file)) + ".pdf")))) t) ;;;###autoload