Allow multiple bibliographies when BibLaTeX is used rathen than

BibTeX.
* textmodes/reftex-parse.el (reftex-using-biblatex-p): New function.
(reftex-locate-bibliography-files): Us it.
This commit is contained in:
Tassilo Horn 2013-11-01 11:27:21 +01:00
parent 82bd64d838
commit 9bc236c826
2 changed files with 35 additions and 10 deletions

View file

@ -1,3 +1,10 @@
2013-11-01 Tassilo Horn <tsdh@gnu.org>
Allow multiple bibliographies when BibLaTeX is used rathen than
BibTeX.
* textmodes/reftex-parse.el (reftex-using-biblatex-p): New function.
(reftex-locate-bibliography-files): Us it.
2013-11-01 Claudio Bley <claudio.bley@googlemail.com>
* image.el (image-type-header-regexps): Fix the 'pbm' part to

View file

@ -350,20 +350,38 @@ of master file."
;; Return the list
docstruct))
(defun reftex-using-biblatex-p ()
"Return non-nil iff we are using biblatex rather than bibtex."
(if (boundp 'TeX-active-styles)
;; the sophisticated AUCTeX way
(member "biblatex" TeX-active-styles)
;; poor-man's check...
(save-excursion
(re-search-forward "^[^%]*\\\\usepackage.*{biblatex}" nil t))))
(defun reftex-locate-bibliography-files (master-dir &optional files)
"Scan buffer for bibliography macro and return file list."
"Scan buffer for bibliography macros and return file list."
(unless files
(save-excursion
(goto-char (point-min))
(if (re-search-forward
(concat
; "\\(\\`\\|[\n\r]\\)[^%]*\\\\\\("
"\\(^\\)[^%\n\r]*\\\\\\("
(mapconcat 'identity reftex-bibliography-commands "\\|")
"\\)\\(\\[.+?\\]\\)?{[ \t]*\\([^}]+\\)") nil t)
(setq files
(split-string (reftex-match-string 4)
"[ \t\n\r]*,[ \t\n\r]*")))))
;; when biblatex is used, multiple \bibliography or
;; \addbibresource macros are allowed. With plain bibtex, only
;; the first is used.
(let ((using-biblatex (reftex-using-biblatex-p))
(again t))
(while (and again
(re-search-forward
(concat
;; "\\(\\`\\|[\n\r]\\)[^%]*\\\\\\("
"\\(^\\)[^%\n\r]*\\\\\\("
(mapconcat 'identity reftex-bibliography-commands "\\|")
"\\)\\(\\[.+?\\]\\)?{[ \t]*\\([^}]+\\)") nil t))
(setq files
(append files
(split-string (reftex-match-string 4)
"[ \t\n\r]*,[ \t\n\r]*")))
(unless using-biblatex
(setq again nil))))))
(when files
(setq files
(mapcar