Manuel Pégourié-Gonnard wrote: > Maybe I confused pre/post in my previous message. I always meant post-grabbing > and pre-actual-function-call processing :-) I guessed that was the case: just wanted to be 100 % clear. >> (2) + for \long, upper-case for defaults on optional arguments: >> >> \DeclareDocumentCommand \foo { o >\MakeHarmless +m } >> \DeclareDocumentCommand \foo { O{default} >\MakeHarmless +m } >> \DeclareDocumentCommand \foo { +o >\MakeHarmless +m } >> \DeclareDocumentCommand \foo { +O{default} >\MakeHarmless +m } [snip] > I'm in favour of option 2. It looks more "extensible", if extensions are ever > needed in the future. I think this is the consensus view: I'm going to look at doing this (really pretty close to what xparse has anyway). > OTOH, as you mentioned in another message, it would be very interesting to > detect trivial cases like only 'm' arguments and use the trivial (hence purely > expandable) parser in this case with DeclareDocumentCommand. I'm viewing "only m" as a rather special case, as there is clearly no need for extra processing. The only place this shows up, I think, is as you point out when TeX is looking for an \omit. -- Joseph Wright