On 1/10/2025 12:55 PM, Henning Hraban Ramm wrote:
Hi, I just recognized that I’m not sure how to define a macro with optional and mandatory arguments the best way.

E.g. (oldfashioned)

\def\doMyMacro[#1]#2%
{Do something ... \iffirstargument #1\fi #2}

\def\MyMacro%
{\dosingleargument\doMyMacro}

\tolerant\def\MyMacro[#1]#:#2%
  {\ifparameter#1\or
     (#1)
   \fi
   /#2/}

\MyMacro[one]{two}

\MyMacro{two}

Is this still the way to do it?
Does it also work with \define?

I have more questions like that:

From Wolfgang’s presentation (article in progress…) I know all the cool stuff for modules (namespaces, setup helpers…), I also know the Lua way of interface.implement, but how to combine those?

When should I use brackets or other characters in a definition, when not?

optionals normally have []

Which docs should I read?

how about lowlevel-macros .. but haven't you read all of them by now ?

Hans

-----------------------------------------------------------------
                                          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 / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to