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