From d94f4066e075f5616965d99fada0997b27786e78 Mon Sep 17 00:00:00 2001 From: Ihor Radchenko Date: Wed, 25 Jan 2023 18:02:49 +0300 Subject: [PATCH] oc-natbib: Provide a fallback bibliography style * lisp/oc-natbib.el (org-cite-natbib-bibliography-style): New custom option for default bibliography style. (org-cite-natbib-export-bibliography): Use the new custom option. * etc/ORG-NEWS (New ~org-cite-natbib-export-bibliography~ option defining fallback bibliography style): Document the new option. If we do not specify a bibliography style, LaTeX export will fail. After the patch, the following simple-minded Org document will export without errors: #+title: Testing org-cite \LaTeX export #+latex_header: \usepackage{natbib} #+bibliography: bibliography.bib #+options: toc:nil #+cite_export: natbib Hello World! This is a citation: [cite:@citationkey2023] #+print_bibliography: --- etc/ORG-NEWS | 10 ++++++++++ lisp/oc-natbib.el | 21 ++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 87ecd77cd..988dfea93 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -24,6 +24,16 @@ consider [[https://gitlab.com/jackkamm/ob-python-mode-mode][ob-python-mode-mode] has been ported to. ** New and changed options +*** New ~org-cite-natbib-export-bibliography~ option defining fallback bibliography style + +~natbib~ citation export processor now uses +~org-cite-natbib-export-bibliography~ (defaults to ~unsrtnat~) as a +fallback bibliography style if none is specified by user in +=#+cite_export:= keyword. + +Previously, export would fail without explicitly selected bibliography +style. + *** New escape in ~org-beamer-environments-extra~ for labels in Beamer export The escape =%l= in ~org-beamer-environments-extra~ inserts the label obtained from ~org-beamer--get-label~. This is added to the default diff --git a/lisp/oc-natbib.el b/lisp/oc-natbib.el index 855be2a5c..9153afd86 100644 --- a/lisp/oc-natbib.el +++ b/lisp/oc-natbib.el @@ -77,6 +77,15 @@ If \"natbib\" package is already required in the document, e.g., through (const :tag "redefine \\thebibliography to issue \\section* instead of \\chapter*" sectionbib) (const :tag "keep all the authors' names in a citation on one line" nonamebreak))) +(defcustom org-cite-natbib-bibliography-style 'unsrtnat + "Default bibliography style." + :group 'org-cite + :package-version '(Org . "9.7") + :type + '(choice + (const unsrtnat) + (symbol :tag "Other"))) + ;;; Internal functions (defun org-cite-natbib--style-to-command (style) @@ -143,11 +152,13 @@ CITATION is the citation object. INFO is the export state, as a property list." "Print references from bibliography FILES. FILES is a list of absolute file names. STYLE is the bibliography style, as a string or nil." - (concat (and style (format "\\bibliographystyle{%s}\n" style)) - (format "\\bibliography{%s}" - (mapconcat #'file-name-sans-extension - files - ",")))) + (concat + (format "\\bibliographystyle{%s}\n" + (or style org-cite-natbib-bibliography-style)) + (format "\\bibliography{%s}" + (mapconcat #'file-name-sans-extension + files + ",")))) (defun org-cite-natbib-export-citation (citation style _ info) "Export CITATION object.