On 5/23/2018 3:39 PM, Christoph Reller wrote:
Hi,
What is the right way to define a command with both mandatory and
optional arguments, e.g:
\MyCommand[optional][mandatory]
Consider the following MWE:
\unexpanded\def\MyCommand[#1]{
\dosingleempty{\doMyCommand[#1]}}
\def\doMyCommand[#1][#2]{
\doifsomething{#1}{number 1: #1\par}
\doifsomething{#2}{number 2: #2}\blank[big]}
\starttext
\MyCommand[A][B]
\MyCommand[A]
\stoptext
In last year's versions of ConTeXt the output was
number 1: A
number 2: B
number 1: A
In the latest version of ConTeXt the output is
number 1: A
number 2: B
number 2: A
Is this behavior intended? How can I make a definition whose behavior
does not change in new versions of ConTeXt?
i'm not sure wht happens at your end but this is the best way:
\unexpanded\def\MyCommand
{\dodoubleempty\doMyCommand}
\def\doMyCommand[#1][#2]%
{\iffirstargument
number 1: #1%
\par
\fi
\ifsecondargument
number 2: #2%
\fi
\blank[big]}
\starttext
\MyCommand[A][B]
\MyCommand[A]
\stoptext
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : [email protected] / 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
___________________________________________________________________________________