From: Konrad Herbst <k.herbst@stud.uni-heidelberg.de>
To: emacs-orgmode@gnu.org
Subject: [PATCH] ox-bibtex.el: Extend to use bibtex files not in current, working directory
Date: Wed, 09 Jul 2014 19:10:47 +0200 [thread overview]
Message-ID: <53BD7797.7060002@stud.uni-heidelberg.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 1066 bytes --]
Hello everybody,
I would like to provide a patch for the ox-bibtex.el module which can
now handle bibtexfile destinations of the form:
#+BIBLIOGRAPHY: /home/user/Literature/foo.bib plain option:-d
but still accepts bibfiles in the working directory.
I really like this module as it makes on-the-fly literature referencing
so easy, but I really missed the "feature" to use include global
bib-files for example. As I recognized other users had the same feeling,
as these threads on the list show:
- problem of path in using ox-bibtex, Joseph Vidal-Rosset, 2014-01-05
08:35:58 GMT
- [O] ox-bibtex: How to use Bib file in a different directory?,
Richard Stanton, 2014-02-17 11:09:39 -8:00.
As motivation I think this solution is more convenient than creating
symbolic links or changing environment variables/config-files.
I used functions like 'file-name-base`, so in principle this
implementation should be OS-independent but I did not test this, maybe
this should be tried for MS-OS paths for example.
Hope this is of any use.
Best,
Konrad Herbst
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-ox-bibtex.el-Extend-to-use-bibtex-files-not-in-curre.patch --]
[-- Type: text/x-patch; name="0001-ox-bibtex.el-Extend-to-use-bibtex-files-not-in-curre.patch", Size: 3639 bytes --]
From 9c17d3df2de6a39229970461da80fb6d04bb6467 Mon Sep 17 00:00:00 2001
From: Konrad Herbst <k.herbst@stud.uni-heidelberg.de>
Date: Wed, 9 Jul 2014 15:26:10 +0200
Subject: [PATCH] ox-bibtex.el: Extend to use bibtex files not in current
working directory
* contrib/lisp/ox-bibtex.el (org-bibtex-process-bib-files): Process bibtexfilename so that it does not have to be in the same directory.
---
contrib/lisp/ox-bibtex.el | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/contrib/lisp/ox-bibtex.el b/contrib/lisp/ox-bibtex.el
index 7caa2e2..7cb8972 100644
--- a/contrib/lisp/ox-bibtex.el
+++ b/contrib/lisp/ox-bibtex.el
@@ -36,7 +36,7 @@
;;
;; The usage is as follows:
;;
-;; #+BIBLIOGRAPHY: bibfilebasename stylename optional-options
+;; #+BIBLIOGRAPHY: bibfilename stylename optional-options
;;
;; e.g. given foo.bib and using style plain:
;;
@@ -44,6 +44,10 @@
;;
;; "stylename" can also be "nil", in which case no style will be used.
;;
+;; Full filepaths are also possible:
+;;
+;; #+BIBLIOGRAPHY: /home/user/Literature/foo.bib plain option:-d
+;;
;; Optional options are of the form:
;;
;; option:-foobar pass '-foobar' to bibtex2html
@@ -187,7 +191,16 @@ Return new parse tree."
(when (equal (org-element-property :key keyword) "BIBLIOGRAPHY")
(let ((arguments (org-bibtex-get-arguments keyword))
(file (org-bibtex-get-file keyword))
- temp-file)
+ temp-file
+ out-file)
+ ;; Test if filename is given with .bib-extension and strip
+ ;; it off. Filenames with another extensions will be
+ ;; untouched and will finally rise an error in bibtex2html.
+ (setq file (if (equal (file-name-extension file) "bib")
+ (file-name-sans-extension file) file))
+ ;; Outpufiles of bibtex2html will be put into current working directory
+ ;; so define a variable for this.
+ (setq out-file (file-name-base file))
;; limit is set: collect citations throughout the document
;; in TEMP-FILE and pass it to "bibtex2html" as "-citefile"
;; argument.
@@ -219,7 +232,7 @@ Return new parse tree."
(and temp-file (delete-file temp-file))
;; Open produced HTML file, and collect Bibtex key names
(with-temp-buffer
- (insert-file-contents (concat file ".html"))
+ (insert-file-contents (concat out-file ".html"))
;; Update `org-bibtex-html-entries-alist'.
(goto-char (point-min))
(while (re-search-forward
@@ -233,14 +246,14 @@ Return new parse tree."
((org-export-derived-backend-p backend 'html)
(insert (format "<div id=\"bibliography\">\n<h2>%s</h2>\n"
(org-export-translate "References" :html info)))
- (insert-file-contents (concat file ".html"))
+ (insert-file-contents (concat out-file ".html"))
(insert "\n</div>"))
((org-export-derived-backend-p backend 'ascii)
;; convert HTML references to text w/pandoc
(unless (eq 0 (call-process "pandoc" nil nil nil
- (concat file ".html")
+ (concat out-file ".html")
"-o"
- (concat file ".txt")))
+ (concat out-file ".txt")))
(error "Executing pandoc failed"))
(insert
(format
@@ -249,7 +262,7 @@ Return new parse tree."
"References"
(intern (format ":%s" (plist-get info :ascii-charset)))
info)))
- (insert-file-contents (concat file ".txt"))
+ (insert-file-contents (concat out-file ".txt"))
(goto-char (point-min))
(while (re-search-forward
"\\[ \\[bib\\][^ ]+ \\(\\]\\||[\n\r]\\)" nil t)
--
2.0.0
next reply other threads:[~2014-07-09 17:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-09 17:10 Konrad Herbst [this message]
2014-07-09 18:36 ` [PATCH] ox-bibtex.el: Extend to use bibtex files not in current, working directory Vikas Rawal
2014-07-28 15:17 ` Bastien
2014-08-02 19:27 ` Nicolas Goaziou
2014-08-03 8:57 ` Konrad Herbst
2014-08-03 17:14 ` Thomas S. Dye
2014-08-03 18:29 ` Nick Dokos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53BD7797.7060002@stud.uni-heidelberg.de \
--to=k.herbst@stud.uni-heidelberg.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).