]> git.donarmstrong.com Git - org-ref.git/blobdiff - org-ref.el
rm {} individually and add techreport.
[org-ref.git] / org-ref.el
index 8eb3fff6290b60bc62314be8e10cd275f345fd5f..0b86ed0156fd8d76572fdb2ffdf160625cc2df0b 100644 (file)
@@ -81,11 +81,9 @@ You should use full-paths for each file."
   '(("article" . "%a, %t, <i>%j</i>, <b>%v(%n)</b>, %p (%y). <a href=\"%U\">link</a>. <a href=\"http://dx.doi.org/%D\">doi</a>.")
 
     ("book" . "%a, %t, %u (%y).")
-
+    ("techreport" . "%a, %t, %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 +421,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 +508,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 +541,20 @@ 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 "<li><a id=\"%s\">[%s] %s</a></li>" 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 " <a href=\"\">link</a>\\." "" output))
+    (setq output (replace-regexp-in-string " <a href=\"http://dx\\.doi\\.org/\">doi</a>\\." "" output))
+    (format "<li><a id=\"%s\">[%s] %s</a></li>"
+           key key output)))
 
 (defun org-ref-get-html-bibliography ()
   "Create an html bibliography when there are keys."
@@ -749,7 +762,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 +2107,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 +2120,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 " <a href=\"%s\">link</a>" url))
-           (when doi (format " <a href=\"http://dx.doi.org/%s\">doi</a>" doi)))
-    ))
+           (when doi
+             (format " <a href=\"http://dx.doi.org/%s\">doi</a>" doi)))))
 
 ;; ** Open pdf in bibtex entry
 (defun org-ref-open-bibtex-pdf ()
@@ -3063,7 +3077,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
@@ -3101,11 +3115,13 @@ In the helm-bibtex buffer, C-u will give you a helm menu to select a new link ty
 C-u C-u will change the key at point to the selected keys."
   (let* ((object (org-element-context))
         (last-char (save-excursion
-                     (goto-char (org-element-property :end object))
-                     (backward-char)
-                     (if (looking-at " ")
-                         " "
-                       ""))))
+                     (when (org-element-property :end object)
+                       (goto-char (org-element-property :end object))
+                       (unless (bobp)
+                         (backward-char))
+                       (if (looking-at " ")
+                           " "
+                         "")))))
     (cond
      ;; case where we are in a link
      ((and (equal (org-element-type object) 'link)
@@ -3139,7 +3155,7 @@ C-u C-u will change the key at point to the selected keys."
      ;; We are next to a link, and we want to append
      ;; next to a link means one character back is on a link.
      ((save-excursion
-       (backward-char)
+       (unless (bobp) (backward-char))
        (and (equal (org-element-type (org-element-context)) 'link)
             (-contains?
              org-ref-cite-types