On 24/09/2010 07:15, Arno Trautmann wrote:
> Hi all,
>
> again, a question about xparse, still hoping this is the right list for
> that.
> I want to do something like
>
> \NewDocumentCommand\mycommand{O{#2}m}{#1 and #2.}
>
> which should give the same result for \mycommand[a]{a} and
> \mycommand{a}, i.e. “#1 is equal to #2 if #1 is not given“. Is there a
> simple way to do this to avoid an if-construct:
>
> \IfNoValue{#1}{\def\temp{#2}}{\def\temp{#1}}
>
> and then use \temp instead of #1? If not, would this be possible (and
> wanted) to be implemented?

Well, \IfNoValue is expandable so you can carry through

{\IfNoValueTF{#1}{#2}{#1}}

to further stages without any issues (i.e. without needing the \def).
That's probably not quite what you want, though.