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
___________________________________________________________________________________

Reply via email to