ping... On Fri, 22 May 2026 at 16:37, Pedro Andres Aranda Gutierrez < [email protected]> wrote:
> Hi, > > I'm OK with this patch. > @Ihor, apply when fitting. > > Bestm > /PA ox-latex maintainer > > On Fri, 22 May 2026 at 13:49, Derek Chen-Becker <[email protected]> > wrote: > >> Thanks, you're right, I forgot you don't need to escape the bracket. >> Updated patch attached! >> >> Cheers, >> >> Derek >> >> >> >> On Thu, May 21, 2026 at 11:58 PM Pedro Andres Aranda Gutierrez < >> [email protected]> wrote: >> >>> Ah, I see. However, tried this in the scratch buffer: >>> >>> (let ((str >>> "\\documentclass[11pt]{article}\n\n\n\\usepackage[utf8]{inputenc} >>> \\usepackage[french]{babel}\n")) >>> (if (string-match "\\\\usepackage\\[\\([^]]*\\)\\]{babel}" str) >>> (message (match-string 1 str)) >>> (message "???"))) >>> >>> Ad it printed >>> french >>> >>> So, apparently, you don't need the extra escape inside the charset, >>> \\([^]]*\\) >>> should be enough... >>> >>> Cheers, /PA >>> >>> On Fri, 22 May 2026 at 04:31, Derek Chen-Becker <[email protected]> >>> wrote: >>> >>>> Hi Pedro, >>>> >>>> Thanks, I did try the non-greedy capture and it didn't work. I'm >>>> actually just realizing that it probably didn't work because it's not that >>>> it's greedy, it's that "]{babel}"doesn't sufficiently constrain the >>>> contents ahead of it. >>>> >>>> Cheers, >>>> >>>> Derek >>>> >>>> >>>> >>>> On Thu, May 21, 2026 at 9:30 AM Pedro Andres Aranda Gutierrez < >>>> [email protected]> wrote: >>>> >>>>> Hi Derek, >>>>> >>>>> the ox-latex.el part can be simplified as >>>>> >>>>> (not (string-match "\\\\usepackage\\[\\(.*?\\)\\]{babel}" header))) >>>>> >>>>> That will make the regex stop before the ']' and is easier to read (at >>>>> least for me-TM), >>>>> >>>>> Best, >>>>> /PA >>>>> ox-latex.el maintainer >>>>> >>>>> >>>>> On Thu, 21 May 2026 at 15:30, Derek Chen-Becker <[email protected]> >>>>> wrote: >>>>> >>>>>> Confirmed, against d34e34f3e. >>>>>> >>>>>> The replacement text of "utf8]{inputenc} \\usepackage[french, >>>>>> english" makes it appear that the regex patterns used in >>>>>> `org-latex-guess-babel-language' aren't sufficiently constrained. >>>>>> Checking >>>>>> the regex, it's using "\\[.*\\]", which is why you're only seeing this >>>>>> when >>>>>> you have more than one extra header (with only one, there's only one set >>>>>> of >>>>>> braces). >>>>>> >>>>>> I took a look and think I have a fix but I want a second opinion. The >>>>>> attached patch fixes the regex by changing the greedy match for the >>>>>> language to one that only captures what's between the "[...]". I tried >>>>>> using a non-greedy qualifier (".*?") and that didn't work, but I feel >>>>>> like >>>>>> I always get tripped up by Elisp regex patterns. If someone has a better >>>>>> suggestion for the regex I'm open to changing it. >>>>>> >>>>>> Owned. >>>>>> >>>>>> Cheers, >>>>>> >>>>>> Derek >>>>>> >>>>>> On Wed, May 20, 2026 at 11:41 AM <[email protected]> wrote: >>>>>> >>>>>>> >>>>>>> With the following Org file >>>>>>> >>>>>>> ---------------------- >>>>>>> # >>>>>>> * subtree >>>>>>> :PROPERTIES: >>>>>>> :EXPORT_LATEX_HEADER: \usepackage[utf8]{inputenc} >>>>>>> :EXPORT_LATEX_HEADER+: \usepackage[french]{babel} >>>>>>> :END: >>>>>>> >>>>>>> bak >>>>>>> ---------------------- >>>>>>> >>>>>>> upon subtree export (C-c C-e C-s lp), I get an error, the beginning >>>>>>> of the >>>>>>> backtrace of which is >>>>>>> >>>>>>> Debugger entered--Lisp error: (error "Invalid use of ‘\\’ in >>>>>>> replacement >>>>>>> text") >>>>>>> >>>>>>> org-latex-guess-babel-language("\\documentclass[11pt]{article}\n\n\n\\usepackage[utf8]{inputenc} >>>>>>> \\usepackage[french]{babel}\n" (:export-options (subtree) :back-end >>>>>>> #s(org-export-backend :name latex :parent nil :transcoders (... >>>>>>> ... ... . >>>>>>> >>>>>>> >>>>>>> This occurs with >>>>>>> >>>>>>> GNU Emacs 30.2 (build 1, x86_64-redhat-linux-gnu, GTK+ Version >>>>>>> 3.24.43, >>>>>>> cairo version 1.18.2) of 2025-08-18 >>>>>>> >>>>>>> with either >>>>>>> >>>>>>> - a void .emacs and >>>>>>> >>>>>>> Org mode version 9.8.4 (9.8.4-2f6959 @ >>>>>>> /home/cochard/.emacs.d/elpa/org-9.8.2/) >>>>>>> >>>>>>> - a void .emacs and >>>>>>> >>>>>>> Org mode version 9.8.2 (9.8.2-2ef390 @ >>>>>>> /home/cochard/.emacs.d/elpa/org-9.8.2/) >>>>>>> >>>>>>> - emacs -Q and >>>>>>> >>>>>>> Org mode version 9.7.11 (release_9.7.11 @ >>>>>>> /usr/share/emacs/30.2/lisp/org/) >>>>>>> >>>>>>> For what it's worth: (1) the problem does not show up for every >>>>>>> combination >>>>>>> of >>>>>>> >>>>>>> :EXPORT_LATEX_HEADER: >>>>>>> :EXPORT_LATEX_HEADER+: >>>>>>> >>>>>>> (2) I did not succeed in exhibiting the problem with a single >>>>>>> >>>>>>> :EXPORT_LATEX_HEADER: >>>>>>> >>>>>>> -- >>>>>>> EOST (École et Observatoire des Sciences de la Terre) >>>>>>> ITE (Institut Terre & Environnement) | [email protected] >>>>>>> 5 rue René Descartes | Phone: +33 (0)3 68 85 50 44 >>>>>>> F-67084 Strasbourg Cedex, France | bureau 110, ancien bât. >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> +---------------------------------------------------------------+ >>>>>> | Derek Chen-Becker | >>>>>> | GPG Key available at https://keybase.io/dchenbecker and | >>>>>> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >>>>>> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >>>>>> +---------------------------------------------------------------+ >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Fragen sind nicht da, um beantwortet zu werden, >>>>> Fragen sind da um gestellt zu werden >>>>> Georg Kreisler >>>>> >>>>> "Sagen's Paradeiser" (ORF: Als Radiohören gefährlich war) => write BE! >>>>> Year 2 of the New Koprocracy >>>>> >>>>> >>>> >>>> -- >>>> +---------------------------------------------------------------+ >>>> | Derek Chen-Becker | >>>> | GPG Key available at https://keybase.io/dchenbecker and | >>>> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >>>> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >>>> +---------------------------------------------------------------+ >>>> >>>> >>> >>> -- >>> Fragen sind nicht da, um beantwortet zu werden, >>> Fragen sind da um gestellt zu werden >>> Georg Kreisler >>> >>> "Sagen's Paradeiser" (ORF: Als Radiohören gefährlich war) => write BE! >>> Year 2 of the New Koprocracy >>> >>> >> >> -- >> +---------------------------------------------------------------+ >> | Derek Chen-Becker | >> | GPG Key available at https://keybase.io/dchenbecker and | >> | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | >> | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | >> +---------------------------------------------------------------+ >> >> > > -- > Fragen sind nicht da, um beantwortet zu werden, > Fragen sind da um gestellt zu werden > Georg Kreisler > > "Sagen's Paradeiser" (ORF: Als Radiohören gefährlich war) => write BE! > Year 2 of the New Koprocracy > > -- Fragen sind nicht da, um beantwortet zu werden, Fragen sind da um gestellt zu werden Georg Kreisler "Sagen's Paradeiser" (ORF: Als Radiohören gefährlich war) => write BE! Year 2 of the New Koprocracy
