On 31/03/2019 10:22, Benjamin Berg wrote:
> Hi,
>
> I created an environment where I override the & character to be active
> and use it as a macro (rather than an alignment character). I am now
> running into the issue, that theoretically the user might not pass an
> optional argument and also use the & token as the first character
> inside the environment. In that case the token is interpreted as an
> alignment character.
>
> The environment in question is currently defined with:
>     \NewDocumentEnvironment { sdapsarray } { o }
>
> Now, this is a very rare corner case for me, and I am happy to simply
> document the limitation. But, I do wonder whether this may be
> considered a bug in the optional argument parser.
>
> Benjamin
>
> PS:
> This is in my custom SDAPS array environment (which is weird in a
> number of regards)
> https://sdaps.org/class-doc/sdapsarray.html#\sdaps_array_newline%3a
> shows the example with a workaround (last one on the page)
>
> Failing code is:
>   \begin{sdapsarray}
>      & col 1 & col 2 \\
>     row header 1 & cell1 & cell 2
>   \end{sdapsarray}
>
> while either:
>   \begin{sdapsarray}[]
>      & col 1 & col 2 \\
>     row header 1 & cell1 & cell 2
>   \end{sdapsarray}
>
> or
>   \begin{sdapsarray}
>     {} & col 1 & col 2 \\
>     row header 1 & cell1 & cell 2
>   \end{sdapsarray}
>
> works fine.
>

you should (or at least could) define sdapsarray to just switch the
catcode of & and then call an inner macro that does the optional
argument parsing.

David

Disclaimer

The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses and malware, and may have been automatically archived by Mimecast Ltd, an innovator in Software as a Service (SaaS) for business.