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