'(("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)
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
(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)))))
(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."
(setq link-string-beginning (match-beginning 0))
(setq link-string-end (match-end 0)))
+ ;; Make sure point is in the link-path.
(if (< cp link-string-beginning)
(goto-char link-string-beginning))
;; We set the reftex-default-bibliography
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
;; write out the latex bibliography command
-
-; (format "{\\setbox0\\vbox{\\bibliography{%s}}}"
-; (replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
-; (mapcar 'expand-file-name
-; (split-string keyword ","))
-; ",")))
-
(format "\\nobibliography{%s}"
(replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
(mapcar 'expand-file-name
(split-string keyword ","))
- ",")))
-
- ))))
+ ",")))))))
(org-add-link-type "printbibliography"
(lambda (arg) (message "Nothing implemented for clicking here."))
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
;; write out the biblatex bibliography command
- "\\printbibliography"))
-))
+ "\\printbibliography"))))
(org-add-link-type "bibliographystyle"
(lambda (arg) (message "Nothing implemented for clicking here."))
(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)
(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)
(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 ()
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
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)
;; 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