"footcites" "footcitetexts"
"smartcites" "Smartcites" "textcites" "Textcites"
"supercites" "autocites" "Autocites"
+ ;; for the bibentry package
+ "bibentry"
)
"List of citation types known in org-ref"
:type '(repeat :tag "List of citation types" string)
((eq format 'ascii) (org-ref-get-ascii-bibliography))
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
- ;; write out the latex bibliography command
- (format "\\bibliography{%s}" (replace-regexp-in-string "\\.bib" "" (expand-file-name keyword)))))))
+ ;; write out the latex bibliography command
+ (format "\\bibliography{%s}" (replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
+ (mapcar 'expand-file-name
+ (split-string keyword ","))
+ ",")))))))
+
+#+END_SRC
+
+Believe it or not, sometimes it makes sense /not/ to include the bibliography in a document (e.g. when you are required to submit references as a separate file). To generate the references, in another file, you must make a little tex file with these contents, and then compile it.
+
+#+BEGIN_LaTeX
+ \input{project-description.bbl}
+#+END_LaTeX
+
+Here, we make a =nobibliography= link that acts like the bibliography, enables creation of the bbl file, but does not put an actual bibliography in the file.
+
+#+BEGIN_SRC emacs-lisp :tangle org-ref.el
+(org-add-link-type "nobibliography"
+ ;; this code is run on clicking. The bibliography
+ ;; may contain multiple files. this code finds the
+ ;; one you clicked on and opens it.
+ (lambda (link-string)
+ ;; get link-string boundaries
+ ;; we have to go to the beginning of the line, and then search forward
+
+ (let* ((bibfile)
+ ;; object is the link you clicked on
+ (object (org-element-context))
+
+ (link-string-beginning)
+ (link-string-end))
+
+ (save-excursion
+ (goto-char (org-element-property :begin object))
+ (search-forward link-string nil nil 1)
+ (setq link-string-beginning (match-beginning 0))
+ (setq link-string-end (match-end 0)))
+
+ ;; We set the reftex-default-bibliography
+ ;; here. it should be a local variable only in
+ ;; the current buffer. We need this for using
+ ;; reftex to do citations.
+ (set (make-local-variable 'reftex-default-bibliography)
+ (split-string (org-element-property :path object) ","))
+
+ ;; now if we have comma separated bibliographies
+ ;; we find the one clicked on. we want to
+ ;; search forward to next comma from point
+ (save-excursion
+ (if (search-forward "," link-string-end 1 1)
+ (setq key-end (- (match-end 0) 1)) ; we found a match
+ (setq key-end (point)))) ; no comma found so take the point
+ ;; and backward to previous comma from point
+ (save-excursion
+ (if (search-backward "," link-string-beginning 1 1)
+ (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+ (setq key-beginning (point)))) ; no match found
+ ;; save the key we clicked on.
+ (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
+ (find-file bibfile))) ; open file on click
+
+ ;; formatting code
+ (lambda (keyword desc format)
+ (cond
+ ((eq format 'org) (org-ref-get-org-bibliography))
+ ((eq format 'ascii) (org-ref-get-ascii-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 ","))
+ ",")))
+
+ ))))
#+END_SRC
#+BEGIN_SRC emacs-lisp :tangle org-ref.el
;; we did not find anything, so go back to where we came
(org-mark-ring-goto)
(error "%s not found" label))
+ (org-show-entry)
(message "go back with (org-mark-ring-goto) `C-c &`"))
;formatting
(lambda (keyword desc format)
(save-buffer))))
#+END_SRC
+#+BEGIN_SRC emacs-lisp :tangle org-ref.el
+(defun org-ref-open-notes-from-reftex ()
+ "Call reftex, and open notes for selected entry."
+ (interactive)
+ (let ((bibtex-key )))
+
+ ;; now look for entry in the notes file
+ (if org-ref-bibliography-notes
+ (find-file-other-window org-ref-bibliography-notes)
+ (error "org-ref-bib-bibliography-notes is not set to anything"))
+
+ (goto-char (point-min))
+
+ (re-search-forward (format
+ ":Custom_ID: %s$"
+ (first (reftex-citation t)) nil 'end))
+ (funcall org-ref-open-notes-function))
+#+END_SRC
+
** open url in browser from bibtex
We bind this to a key here [[*key%20bindings%20for%20utilities][key bindings for utilities]].
(defalias 'orp 'org-ref-open-pdf-at-point)
(defalias 'oru 'org-ref-open-url-at-point)
(defalias 'orn 'org-ref-open-notes-at-point)
+(defalias 'ornr 'org-ref-open-notes-from-reftex)
(defalias 'orib 'org-ref-insert-bibliography-link)
(defalias 'oric 'org-ref-insert-cite-link)