X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=71252ebccd34183bb0a2f0db2b6d32177622dbd5;hp=7a54058c150a8eee5c0ded7fbf7f17de85fcc888;hb=5f80ebd42388dea16aeb397e0685500c4101f9cf;hpb=a5df44410adb84103c2e44c74ba6d0c4ce0fe9b3 diff --git a/org-ref.el b/org-ref.el index 7a54058..71252eb 100644 --- a/org-ref.el +++ b/org-ref.el @@ -41,6 +41,7 @@ (require 'helm-config) (require 'helm-bibtex) (require 'org) +(require 'org-element) ;; * Custom variables (defgroup org-ref nil @@ -81,11 +82,9 @@ You should use full-paths for each file." '(("article" . "%a, %t, %j, %v(%n), %p (%y). link. doi.") ("book" . "%a, %t, %u (%y).") - + ("techreport" . "%a, %t, %i, %u (%y).") ("proceedings" . "%e, %t in %S, %u (%y).") - ("inproceedings" . "%a, %t, %p, in %b, edited by %e, %u (%y)")) - "String to format an entry. Just the reference, no numbering at the beginning, etc... see the `org-ref-reftex-format-citation' docstring for the escape codes." :type 'string :group 'org-ref) @@ -423,7 +422,6 @@ Beware that all this only works with BibTeX database files. When citations are made from the \bibitems in an explicit thebibliography environment, only %l is available." ;; Format a citation from the info in the BibTeX ENTRY - (unless (stringp format) (setq format "\\cite{%l}")) (if (and reftex-comment-citations @@ -511,10 +509,14 @@ Format according to the type in `org-ref-bibliography-entry-format'." (insert-file-contents file) (bibtex-search-entry key nil 0) (setq bibtex-entry (bibtex-parse-entry)) + ;; downcase field names so they work in the format-citation code + (dolist (cons-cell bibtex-entry) + (setf (car cons-cell) (downcase (car cons-cell)))) (setq entry-type (downcase (cdr (assoc "=type=" bibtex-entry)))) (setq format (cdr (assoc entry-type org-ref-bibliography-entry-format))) (if format (setq entry (org-ref-reftex-format-citation bibtex-entry format)) + ;; if no format, we use the bibtex entry itself as a fallback (save-restriction (bibtex-narrow-to-entry) (setq entry (buffer-string))))) @@ -540,8 +542,22 @@ Format according to the type in `org-ref-bibliography-entry-format'." (defun org-ref-get-bibtex-entry-html (key) "Return an html string for the bibliography entry corresponding to KEY." - - (format "
  • [%s] %s
  • " key key (org-ref-get-bibtex-entry-citation key))) + (let ((output)) + (setq output (org-ref-get-bibtex-entry-citation key)) + ;; unescape the & + (setq output (replace-regexp-in-string "\\\\&" "&" output)) + ;; hack to replace {} around text + (setq output (replace-regexp-in-string "{" "" output)) + (setq output (replace-regexp-in-string "}" "" output)) + ;; get rid of empty parens + (setq output (replace-regexp-in-string "()" "" output)) + ;; get rid of empty link and doi + (setq output (replace-regexp-in-string " link\\." "" output)) + ;; change double dash to single dash + (setq output (replace-regexp-in-string "--" "-" output)) + (setq output (replace-regexp-in-string " doi\\." "" output)) + (format "
  • [%s] %s
  • " + key key output))) (defun org-ref-get-html-bibliography () "Create an html bibliography when there are keys." @@ -749,7 +765,10 @@ Format according to the type in `org-ref-bibliography-entry-format'." (cond ((eq format 'latex) ;; write out the latex bibliography command - (format "\\bibliographystyle{%s}" keyword))))) + (format "\\bibliographystyle{%s}" keyword)) + ;; Other styles should not have an output for this + (t + "")))) (defun org-bibliographystyle-complete-link (&optional arg) @@ -2091,7 +2110,6 @@ This assumes you are in an article." (defun org-ref-bib-html-citation () "From a bibtex entry, create and return a simple citation with html links." - (bibtex-beginning-of-entry) (let* ((cb (current-buffer)) (bibtex-expand-strings t) @@ -2105,14 +2123,13 @@ This assumes you are in an article." (volume (reftex-get-bib-field "volume" entry)) (pages (reftex-get-bib-field "pages" entry)) (doi (reftex-get-bib-field "doi" entry)) - (url (reftex-get-bib-field "url" entry)) - ) + (url (reftex-get-bib-field "url" entry))) ;;authors, "title", Journal, vol(iss):pages (year). (concat (format "%s, \"%s\", %s, %s:%s (%s)." author title journal volume pages year) (when url (format " link" url)) - (when doi (format " doi" doi))) - )) + (when doi + (format " doi" doi))))) ;; ** Open pdf in bibtex entry (defun org-ref-open-bibtex-pdf () @@ -2735,7 +2752,7 @@ Shows bad citations, ref links and labels" (setq keys (org-ref-split-and-strip-string link-string)) (setq years (mapcar 'org-ref-get-citation-year keys)) (setq data (mapcar* (lambda (a b) `(,a . ,b)) years keys)) - (setq data (cl-sort data (lambda (x y) (< (string-to-int (car x)) (string-to-int (car y)))))) + (setq data (cl-sort data (lambda (x y) (< (string-to-number (car x)) (string-to-number (car y)))))) ;; now get the keys separated by commas (setq keys (mapconcat (lambda (x) (cdr x)) data ",")) ;; and replace the link with the sorted keys @@ -3063,7 +3080,7 @@ first key that partially matches. This version avoids that." User is prompted for tags. This function is called from `helm-bibtex'. Argument CANDIDATES helm candidates." (message "") - (let ((keywords (read-input "Keywords (comma separated): "))) + (let ((keywords (read-string "Keywords (comma separated): "))) (loop for key in (helm-marked-candidates) do (save-window-excursion