>> 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.

Wolfgang, thank you very much! Recursion is really an elegant way. I wanted a 
wrapper around \cite with the same functionality like natbib's \citep[][]{} and 
\citet[][]{}, which saves a lot of typing. Especially if you start writing a 
text and at a later point decide to have a citation in parenthesis instead of 
textual. And of cause, if you switch between both styles in the same text.

Following your example, I came up with this now:

\def\citep[#1]%
 {\strictdoifnextoptionalelse{\docitep[#1]}{\nocitep[#1]}}

\def\docitep[#1][#2]%
 {\strictdoifnextoptionalelse{\dodocitep[#1][#2]}{\nodocitep[#1][#2]}}

\def\dodocitep[#1][#2][#3]%
 {\cite[alternative=authoryears, left={(#1 }, extras={#2}][#3]}

\def\nodocitep[#1][#2]%
 {\cite[alternative=authoryears, extras={#1}][#2]}

\def\nocitep[#1]%
 {\cite[alternative=authoryears][#1]}

\setuppublications[state=start,refcommand=authoryear]
\setupbibtex[database=sample]

\starttext
\startlines
%\cite[hh2010a] % commenting this out does not work
\stoplines
\citep[, p.\ 1][hh2010a].\par
\citep[, p.\ 1][hh2010a] more text.\par
\citep[see][, p.\ 1][hh2010a].\par
\citep[see][][hh2010a] more text.\par
\startlines
\cite[hh2010a] % this is ok at the end
\stoplines
\stoptext

I noticed there is this error: using the first cite in \startlines...\stoplines 
does not work.

Florian

___________________________________________________________________________________
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