[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [AUCTeX-devel] Regex best practice
From: |
Mosè Giordano |
Subject: |
Re: [AUCTeX-devel] Regex best practice |
Date: |
Sun, 22 Nov 2015 12:32:18 +0100 |
Hi Arash,
2015-11-21 23:20 GMT+01:00 Arash Esbati <address@hidden>:
> Hi Mosè,
>
> Mosè Giordano <address@hidden> writes:
>
>> 2015-11-19 20:58 GMT+01:00 Arash Esbati <address@hidden>:
>
>>> looking at some packages, the optional arguments for some commands are
>>> getting more and more complex, e.g.
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> \declaresomething[%
>>> key = value ,
>>> name = {[Optional]Value} ,
>>> anothername = {valu-es[]}]{} ,
>>> colframe = red!75!black ,
>>> fonttitle = \bfseries ,
>>> enhanced ,
>>> attach boxed = {yshift=-2mm} ,
>>> title = #2
>>> ]
>>> {
>>> some1thing
>>> }
>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> I was thinking about a general regex-solution how to add these kind of
>>> beasts to AUCTeX parser. My solution is currently:
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> \\\\declaresomething[ \t\n\r%]*\\(?:\\[\\(?:[\t\n\r[:print:]]*\\)\\]\\)?[
>>> \t\n\r%]*{[ \t\n\r%]*\\([[:print:]]+\\)[ \t\n\r%]*}
>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> Any comments? Admittedly, the last two `[ \t\n\r%]' are excessive, but
>>> you never know.
>>
>> Ehm, sorry but I didn't get what you want to match (re-builder
>> highlights "some1thing") and where you want to add this regex.
>
> My apologies for being brief and not clear. Please consider the
> following MWE:
>
> --8<---------------cut here---------------start------------->8---
> \documentclass[a4paper,10pt]{article}
>
> \usepackage{amsthm}
> \usepackage{thmtools}
>
> \declaretheoremstyle[%
> spaceabove = 6pt ,
> spacebelow = 6pt ,
> headfont = \normalfont\bfseries ,
> notefont = \mdseries\scshape ,
> notebraces = {[}{]} ,
> bodyfont = \normalfont\itshape ,
> postheadspace = 1em ,
> qed = \qedsymbol
> ]{mystyle}
>
> \declaretheorem[style=mystyle]{styledtheorem}
>
> \begin{document}
>
> \begin{styledtheorem}[Euclid]
> For every prime $p$\dots
> \end{styledtheorem}
>
> \end{document}
> --8<---------------cut here---------------end--------------->8---
>
> Suppose I want to write a `thmtools.el'. If I want to catch and process
> user defined styles (in this case "mystyle"), I would currently do:
>
> --8<---------------cut here---------------start------------->8---
> (defvar LaTeX-thmtools-declaretheoremstyle-regexp
> `(,(concat "\\\\declaretheoremstyle[ \t\n\r%]*"
> "\\(?:\\[\\(?:[\t\n\r[:print:]]*\\)\\]\\)?"
> "[ \t\n\r%]*"
> "{"
> "[ \t\n\r%]*\\([[:print:]]+\\)[ \t\n\r%]*"
> "}")))
>
> (TeX-auto-add-type "thmtools-declaretheoremstyle" "LaTeX")
>
> (TeX-add-style-hook
> "thmtools"
> (lambda ()
> (TeX-auto-add-regexp LaTeX-thmtools-declaretheoremstyle-regexp)
> ...))
> --8<---------------cut here---------------end--------------->8---
>
> My question is: Is there any other, better solution for this regexp? I
> am looking a general solution to handle this kind of cases. I hope it
> is more clear now.
Probably yes: so you want to match the whole \declaretheoremstyle
macro, but saving only the mandatory argument, right?
Bye,
Mosè