On 2024-10-16 17:48, Wolfgang Schuster wrote: > Rik Kabel schrieb am 16.10.2024 um 23:18: >> > > When you have argument after square brackets you have to use #: to > continues scanning for arguments of the command. For the mandatory > argument you should just use #2 and keep #= for the optional arguments > which are only used when text enclosed in curly braces appears. The #* > between the third and fourth argument allows spaces between them. > > %%%% begin example > \tolerant\protected\def\Bi[#1]#:#2#*#=#*#=% >   {(1=#1)% >    (2=#2)% >    (3=#3)% >    (4=#4)} > > \starttext > > [\Bi[one]{two}{three}{four}] > > [\Bi [one] {two} {three} {four}] > > [\Bi [one] {two} {three}] > > [\Bi [one] {two}] > > [\Bi {two}] > > [\Bi [one] {two}] > > \stoptext > %%%% end example > > To check whether a argument is empty or not you can use the > \ifparameter command with the parameter to check (i.e. #1) as argument > (don't forget the \or) but \doifempty etc. work as well. > > %%%% begin example > \tolerant\protected\def\Bi[#1]#:#2#*#=#*#=% >   {\ifparameter#1\or >      First argument is used. >    \else >      First argument is missing or empty. >    \fi} > > \starttext > > \Bi {bar} > > \Bi [] {bar} > > \Bi [foo] {bar} > > \stoptext > %%%% end example > > Wolfgang > ___________________________________________________________________________________ > > 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 > ___________________________________________________________________________________ > Excellent, and thank you for the explanation. I guess #? is still available. (I had tried with #:, but not in combination with [#1] and #= for the last parameter). -- Rik