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