On Fri, 19 Mar 2021, Christoph Reller wrote:

> Hi,
> 
> Consider the following MWE:
> 
> \definetyping[T]
> \definemode[mode][yes]
> \starttext
> \doifmode{mode}{%
>   \startT
>     Bla
>   \stopT}
> \stoptext
> 
> Compilation with the currently latest ConTeXt LMTX (ver: 2021.03.17 17:46
> LMTX  fmt: 2021.3.18) fails with:
> 
> tex error       > runaway error: end of file encountered
> mtx-context     | fatal error: return code: 1
> 
> Compilation is successful if I replace doifmode{mode}{...} by
> \startmode[mode]...\stopmode.
> 
> Is there anything I'm missing? (This could be a bug.)

Has to be with how tex works. The argument of any macro (\doifmode{mode}{...} 
in this case) is scanned under the current catcode regime. So, any environment 
(like typing) which changes catcodes does work inside the argument to another 
macro. 

So, either use the environment version of \doifmode (which doesn't _capture_ it 
content):

\definetyping[T]
\definemode[mode][yes]
\starttext
\startmode[mode]
  \startT
    Bla
  \stopT
\stopmode
\stoptext

Or use buffers (to avoid catcode all together):

\definetyping[T]
\definemode[mode][yes]
\starttext
\startbuffer[code]
\startT
    Bla
\stopT
\stopbuffer

\doifmode{mode}{\getbuffer[code]}
\stoptext

or (note type**T**buffer so that the output is formatting according to the 
options of \definetyping[T])

\definetyping[T]
\definemode[mode][yes]
\starttext
\startbuffer[code]
    Bla
\stopbuffer

\doifmode{mode}{\typeTbuffer[code]}
\stoptext

Perhaps this should be added to the FAQ on the wiki.

Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to