Peter Münster wrote:
It's a repost. Does anybody have an idea to solve this problem? If not, I'm going to buy the TeXbook...
This particular problem can be solved thus: \unexpanded\def\MyNumber#1#2#3{% \doifmode{aaa}{#1}\doifmode{bbb}{#2}\doifmode{ccc}{#3}} There are some other syntactical possibilities, but the general algorithm is always the same: making sure that the \expanded within \MyMacro doesn't expand \doifmode, since \doifmode breaks under pressure like that. You were not expected to know about that (because this is undocumented), so you do not have to feel badly about not owning a copy of the TeXbook. :-) However, the TeXbook does explain the basic underlying problem, and since the LaTeX Companion is not very helpful to ConTeXt users <cough>, it is absolutely *the* book to buy. Greetings, Taco
I try to expose the problem a bit clearer:
\newcount\MyVersion \def\MyMacro#1{% This macro is somewhere in an environment file. \getgparameters[XXX][#1] \global\advance\MyVersion by 1 \bTR \expanded{\bTD \the\MyVersion \eTD} \expanded{\bTD \XXXNumber \eTD}\eTR }
\def\MyNumber#1#2#3{% This macro is a special one for the document. \doifmode{aaa}{#1}\doifmode{bbb}{#2}\doifmode{ccc}{#3}}
\enablemode[bbb]
\starttext \bTABLE \bTR \bTD Version \eTD \bTD Number \eTD \eTR \MyMacro{Number=123} \MyMacro{Number=\MyNumber{111}{222}{333}} % error: Incomplete \iffalse \MyMacro{Number=456} \eTABLE \stoptext
Greetings, Peter