On 5/24/2018 11:21 AM, Christoph Reller wrote:
On Wed, 23 May 2018 16:01:05 +0200, Hans Hagen <j.ha...@xs4all.nl> wrote:
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
Thank you Hans for this information. My question is rather about error
handling. I want:
\MyCommand[A][B] % <- succeeds with #1->A, #2->B
\MyCommand[A] % <- succeeds with #1->A
\MyCommand % <- fails with "! Use of \MyCommand doesn't match its definition"
I just wanted to ask whether there is a standard way to achieve this
with \do<whatever>empty. If not, then this is also okay.
just use \dodoubleempty instead
-----------------------------------------------------------------
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 : ntg-context@ntg.nl / 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
___________________________________________________________________________________