Stop the press... I discovered a small bug in the last patch.
Attached is a new version.

/PA

On Wed, 17 Apr 2024 at 08:22, Pedro Andres Aranda Gutierrez <
paag...@gmail.com> wrote:

> Hi again
>
> Rationale of the patch:
> Currently, when the options to biblatex are _not_ xxx/xxx format, a style=
> is prepended, because
> it is assumed that it will be a biblatex options string starting with a
> style.
> With the proposed patch, I add the possibility of using a biblatex options
> string where style= is stated
> explicitly (anywhere in the string). This adds congruency WRT
> the ~org-cite-biblatex-options~ variable.
>
> Best, /PA
>
> On Sun, 14 Apr 2024 at 09:16, Pedro Andres Aranda Gutierrez <
> paag...@gmail.com> wrote:
>
>> HI, full answer...
>>
>> In the original code, that section prepends "style=" in some cases. I
>> have stumbled across
>> instances where the options started with style= because they were taken
>> directly from LaTeX
>> and the generated code ended by like:
>> \usepackage[style=style=numeric,backend=biber]{biblatex}
>> for
>> #+cite_export: biblatex style=numeric,backend=biber
>> which, BTW, is something someone used the LaTeX may parse as correct.
>> I was just trying to cater for this case.
>>
>> Best, /PA
>>
>>
>> On Sun, 14 Apr 2024 at 07:30, Pedro Andres Aranda Gutierrez <
>> paag...@gmail.com> wrote:
>>
>>> Sorry... I was not right... You are right. I'll take a look at it again.
>>> /PA
>>>
>>> On Sun, 14 Apr 2024 at 07:22, Pedro Andres Aranda Gutierrez <
>>> paag...@gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> Maybe not... because style= is a keyword for the biblatex package,
>>>> while bibstyle or citestyle aren't.
>>>>
>>>> Best, /PA
>>>>
>>>> On Sat, 13 Apr 2024 at 16:32, Ihor Radchenko <yanta...@posteo.net>
>>>> wrote:
>>>>
>>>>> Pedro Andres Aranda Gutierrez <paag...@gmail.com> writes:
>>>>>
>>>>> > HI,
>>>>> > Attached is a small patch to allow explicitly adding style= in the
>>>>> biblatex export options, to increase consistency with
>>>>> > Customisation variables.
>>>>>
>>>>> Thanks!
>>>>>
>>>>> >          (style-options
>>>>> >           (cond
>>>>> >            ((null style) nil)
>>>>> > +          ;; allow the user to include "style=" anywhere in the
>>>>> style options
>>>>> > +          ((string-match "\\(^s\\|,s\\)tyle=" style) (list style))
>>>>> >            ((not (string-match "/" style)) (list (concat "style="
>>>>> style)))
>>>>> >            (t
>>>>> >             (list (concat "bibstyle=" (substring style nil
>>>>> (match-beginning 0)))
>>>>>
>>>>> If we allow style=..., may as well allow bibstyle= and citestyle=.
>>>>>
>>>>> --
>>>>> 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>
>>>>>
>>>>
>>>>
>>>> --
>>>> Fragen sind nicht da, um beantwortet zu werden,
>>>> Fragen sind da um gestellt zu werden
>>>> Georg Kreisler
>>>>
>>>> Headaches with a Juju log:
>>>> unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
>>>> run a leader-deposed hook here, but we can't yet
>>>>
>>>>
>>>
>>> --
>>> Fragen sind nicht da, um beantwortet zu werden,
>>> Fragen sind da um gestellt zu werden
>>> Georg Kreisler
>>>
>>> Headaches with a Juju log:
>>> unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
>>> run a leader-deposed hook here, but we can't yet
>>>
>>>
>>
>> --
>> Fragen sind nicht da, um beantwortet zu werden,
>> Fragen sind da um gestellt zu werden
>> Georg Kreisler
>>
>> Headaches with a Juju log:
>> unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
>> run a leader-deposed hook here, but we can't yet
>>
>>
>
> --
> Fragen sind nicht da, um beantwortet zu werden,
> Fragen sind da um gestellt zu werden
> Georg Kreisler
>
> Headaches with a Juju log:
> unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should run
> a leader-deposed hook here, but we can't yet
>
>

-- 
Fragen sind nicht da, um beantwortet zu werden,
Fragen sind da um gestellt zu werden
Georg Kreisler

Headaches with a Juju log:
unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should run
a leader-deposed hook here, but we can't yet
From 82f1cecaf5c011506c6cc57cb3835b6f8eba0f6d Mon Sep 17 00:00:00 2001
From: "Pedro A. Aranda" <paag...@gmail.com>
Date: Wed, 17 Apr 2024 08:19:22 +0200
Subject: [PATCH 1/2] Allow explicit style= in cite_export options

lisp/oc-biblatex.el: Allow explicit style= in biblatex cite-export
doc/org-manual.org: Clarify documentation regarding biblatex cite-export

---
 doc/org-manual.org  | 10 +++++++++-
 lisp/oc-biblatex.el | 31 +++++++++++++++++--------------
 2 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/doc/org-manual.org b/doc/org-manual.org
index 6c699ae1e..2de5df3af 100644
--- a/doc/org-manual.org
+++ b/doc/org-manual.org
@@ -17614,7 +17614,15 @@ style and the =bibtex= backend. Always define the style first and then
 the rest of load-time options for the =biblatex=
 package. Alternatively, use the ~org-cite-biblatex-options~ variable
 in your Emacs configuration. It will only export to PDF, since it
-relies on the ~biblatex~ processor of your LaTeX installation;
+relies on the ~biblatex~ processor of your LaTeX installation.
+
+The previous example assumes the first element in the options is a
+style.  Alternatively you can specify ~style=~ explicitly anywhere in
+the options string (as you would when setting the
+~org-cite-biblatex-options~ variable in your Emacs configuration):
+
+: #+cite_export: biblatex backend=bibtex,style=numeric
+

 ** Bibliography printing

diff --git a/lisp/oc-biblatex.el b/lisp/oc-biblatex.el
index 36c0ee7e5..13e160ac1 100644
--- a/lisp/oc-biblatex.el
+++ b/lisp/oc-biblatex.el
@@ -190,20 +190,23 @@ INITIAL is an initial style of comma-separated options, as a string or nil.
 STYLE is the style definition as a string or nil.

 Return a string."
-  (let ((options-no-style
-         (and initial
-              (let ((re (rx string-start (or "bibstyle" "citestyle" "style"))))
-                (seq-filter
-                 (lambda (option) (not (string-match re option)))
-                 (split-string (org-unbracket-string "[" "]" initial)
-                               "," t " \t")))))
-        (style-options
-         (cond
-          ((null style) nil)
-          ((not (string-match "/" style)) (list (concat "style=" style)))
-          (t
-           (list (concat "bibstyle=" (substring style nil (match-beginning 0)))
-                 (concat "citestyle=" (substring style (match-end 0))))))))
+  (let* ((options-no-style
+          (and initial
+               (let ((re (rx string-start (or "bibstyle" "citestyle" "style"))))
+                 (seq-filter
+                  (lambda (option) (not (string-match re option)))
+                  (split-string (org-unbracket-string "[" "]" initial)
+                                "," t " \t")))))
+         ;; Did we state the style as style= in the options?
+         (explicit-style (string-match-p "\\(\\`s\\|,s\\)tyle=" style))
+         (style-options
+          (cond
+           ((null style) nil)
+           ;; prepend style= if not already in options
+           ((not (string-match "/" style)) (list (if explicit-style style (concat "style=" style))))
+           (t
+            (list (concat "bibstyle=" (substring style nil (match-beginning 0)))
+                  (concat "citestyle=" (substring style (match-end 0))))))))
     (if (or options-no-style style-options)
         (format "[%s]"
                 (mapconcat #'identity
--
2.34.1

Reply via email to