[NTG-context] special macro problem again...

Taco Hoekwater taco at elvenkind.com
Thu Mar 17 20:13:03 CET 2005


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
> 



More information about the ntg-context mailing list