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