Am 28.01.2011 um 23:24 schrieb Florian Wobbe:

> Hi,
> 
> please consider the following minimal example:
> 
> \def\before{\dodoubleempty\dobefore}%
> \def\dobefore[#1][#2]{before}
> 
> \starttext
> \before[] after (should be: \before[]\ after without explicit \type{\ })\par
> \before[]after\par
> \before[][] after\par % this works
> \before[][]after\par
> \stoptext
> 
> How can I prevent gobbling the following space, when the second optional 
> argument is not given (i.e. first line). The macro itself should not insert 
> space if the command is followed by any other character (2nd and 4th line).


What do you want to achieve, maybe there is already something available.

% \one, \one[…] and \one[…][…] (no spaces between “[][]” allowed)

\def\one
  {\strictdoifnextoptionalelse\doone\noone}

\def\noone{[]}

\def\doone[#1]%
  {\strictdoifnextoptionalelse{\dodoone[#1]}{\nodoone[#1]}}

\def\dodoone[#1][#2]%
  {[#1:#2]}

\def\nodoone[#1]%
  {[#1]}

% \two, \two{…} and \two{…} (no spaces between “{}{}” allowed)

\def\two
  {\dodoublegroupempty\dotwo}

\def\dotwo#1#2%
  {\ifsecondargument
     [#1:#2]%
   \else\iffirstargument
     [#1]%
   \else
     []%
   \fi\fi}

\starttext
\startlines
\one text
\one[1] text
\one[1][2] text
\two text
\two{1} text
\two{1}{2} text
\stoplines
\stoptext

Wolfgang

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to