On 09/08/2009, at 5:00 PM, Joseph Wright wrote: > That leads to calls which look like: > > \DeclareDocumentCommand \foo { o m } > \DeclareDocumentCommand \foo { o +m } > \DeclareDocumentCommand \foo { O{default} m } > \DeclareDocumentCommand \foo { d() l m } > \DeclareDocumentCommand \foo { u{\bar} t+ +m } > \DeclareDocumentCommand \foo { s D<>{default} b o +m } > > This does not seem too bad to me: what do other people think? Comparing this back to the original xparse, the changes here are: - >{P} replaced by + - >{W} dropped, since it is applied automatically when necessary (final optional argument) - c dropped, replaced by 'd()' - d** and D**{} added - u* and U*{} added Personally, I still prefer the simpler 'o'/'o{}' syntax, but if we feel that the disambiguation of 'o'/'O{}' is more straightforward I'm happy with your proposal above. Regarding Lars' ideas in doc2l3, I do quite like the idea of his argument pre-processing stage. But let's discuss that afterwards. We can always add it with another letter! Will