![](https://secure.gravatar.com/avatar/46562c7d27388490d62e8d7a5bc960dd.jpg?s=120&d=mm&r=g)
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 -----------------------------------------------------------------