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
___________________________________________________________________________________