Rik Kabel schrieb am 08.06.2021 um 18:14:

Hello all,

Odd issue with LMTX (works fine with --luatex). \doifelsemode causes a failure if it is used to set a simple value such as on, off, yes, no, ..., but works with a dimension. Perhaps better illustrated by an example:

\definemode        [aaa]
                   [keep]
\setuplayout       [
                    marking=\doifmodeelse{aaa}{off}{on},
%                   marking=on,
                    grid=\doifmodeelse{aaa}{yes}{no},
%                   grid=yes,
                    bottom=\doifmodeelse{aaa}{10mm}{20mm},
                   ]
\starttext
   This is only a test.
\stoptext

The problem occurs whether or not the mode is enabled. In the example, it fails with the mode test in the either the marking= or grid= keys, but has no problem with it in the bottom= key.

The error message says:

The control sequence marked <to be read again> should not appear between \csname and \endcsname.

pointing to the enabled \doifmodeelse line.

The same issue occurs with the following, using \doifmode:

\definemode        [aaa]
                   [keep]
\setuplayout       [
                    marking=on,
                    marking=\doifmode{aaa}{off},
                   ]
\starttext
   This is only a test.
\stoptext

This did work without complaint a few months ago.


You can never be sure if these combinations (\doifXXX within \setupXXX) work without problems. The only reliable method in this case is:

% default setup

\setuplayout
    [marking=on]

% mode dependent setup

\startmode[aaa]

    \setuplayout
        [marking=off]

\stopmode


Wolfgang