[NTG-context] nesting commands with optional arguments

Daniel Schopper daniel.schopper at aon.at
Wed Mar 28 16:49:12 CEST 2012


Dear list,
I have a question concerning nesting commands with optional arguments.

I'm trying to put a command with an optional argument inside the 
optional argument of another one … For sure this is just a simple 
expansion problem but I have no clue how to handle this …

Thanks for any hints! 	
Daniel


Please consider the following minimal example:

\def\one{\dosingleempty\doOne}

\def\doOne[#1]{%
	in 1st: \doifsomethingelse{#1}{#1}{no arg}\par%
}

\def\two{\dosingleempty\doTwo}

\def\doTwo[#1]{%
	in 2nd: \doifsomethingelse{#1}{#1}{no arg}\par%
}

\def\three#1{in 3rd: #1\par}

\starttext
\one\two
\blank
\one[\three{myArg}]
\blank
\one[\two[Argument]]
\stoptext




This is what I get:


! Use of \doOne doesn't match its definition.

system          > tex > error on line 18 in file testOpt.tex: Use of  ...


\doifnextoptionalelse ...xt_optional_command_yes {
                                                   #1}\def 
\next_optional_com...
<argument> \two
                 [Argument
\doifsomethingelse #1->\edef \!!stringa {#1
                                            }\ifx \!!stringa \empty 
\expandaf...
\doOne [#1]->in 1st: \doifsomethingelse {#1}
                                             {#1}{no arg}\par
l.18 \one[\two[Argument]
                         ]


More information about the ntg-context mailing list