branch: externals/org
commit d94f4066e075f5616965d99fada0997b27786e78
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    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 87ecd77cd7..988dfea93a 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 855be2a5c1..9153afd863 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.

Reply via email to