Ihor Radchenko <yanta...@gmail.com> writes:

> Note that apart from the problem on Emacs side, there appears to be a
> problem with org-cite-basic-export-bibliography.
> org-cite-basic-export-bibliography uses org-cite-basic--print-entry,
> which fails to print keys, which are not in .bib files. As a result,
> #+print_bibliography: appears to fail all the time when the document
> contains invalid cite keys.
> I consider this as a bug. At least org-cite-basic-export-bibliography
> could provide a more useful error message. Or maybe even skip the
> invalid keys. Or, similar to LaTeX, print ???. I am not sure which way
> will be more canonical according to general oc.el design.

I am suggesting to merge the attached patch.
It will simply skip keys that are not in the bibliography when printing


>From 943b070b7e0f2b6d0bed261f831589fb918c214f Mon Sep 17 00:00:00 2001
Message-Id: <943b070b7e0f2b6d0bed261f831589fb918c214f.1666420664.git.yanta...@posteo.net>
From: Ihor Radchenko <yanta...@posteo.net>
Date: Sat, 22 Oct 2022 14:32:17 +0800
Subject: [PATCH] org-cite-basic-export-bibliography: Skip missing bibliography

* lisp/oc-basic.el (org-cite-basic-export-bibliography): Ignore
citation keys that are not present in bibliography.  Previously, an
error was thrown.
 lisp/oc-basic.el | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index f1b7c8263..3ef7a37e3 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -713,15 +713,17 @@ (defun org-cite-basic-export-bibliography (keys _files style _props backend info
 style, as a string.  BACKEND is the export back-end, as a symbol.  INFO is the
 export state, as a property list."
-   (lambda (k)
-     (let ((entry (org-cite-basic--get-entry k info)))
-       (org-export-data
-        (org-cite-make-paragraph
-         (and (org-export-derived-backend-p backend 'latex)
-              (org-export-raw-string "\\noindent\n"))
-         (org-cite-basic--print-entry entry style info))
-        info)))
-   (org-cite-basic--sort-keys keys info)
+   (lambda (entry)
+     (org-export-data
+      (org-cite-make-paragraph
+       (and (org-export-derived-backend-p backend 'latex)
+            (org-export-raw-string "\\noindent\n"))
+       (org-cite-basic--print-entry entry style info))
+      info))
+   (delq nil
+         (mapcar
+          (lambda (k) (org-cite-basic--get-entry k info))
+          (org-cite-basic--sort-keys keys info)))

Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

Reply via email to