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
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] Allow explicit style= in cite_export options

lisp/oc-biblatex.el: Ckech whether the biblatex options include style= explicitly.
doc/org-manual.org: Clarify this in the documentation.


---
 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