Joseph Wright skrev: > Lars Hellström wrote: >> Since it was a while ago I'm not so sure, but I think I arrived at the >> unified processor model only after I started coding. The seemingly less >> complex idea of a separate processing stage turned out to be more >> complex once you got down to do it. > > This partly depends on your point of view! In this case, my point of view was that of _implementing_ an xparse with argument processing. > In most cases, > post-processing is not needed, so under any of the xparse-like > implementations you end you with an arg spec. which doesn't look too > intimidating: > > { O{default} m o m } > > or similar. I'd say that something like: > > { >{ \preprocessora \preprocessorb }O{default} m o m } > > is not too bad in comparison to > > { @{ \preprocessora \preprocessorb O{default} } @{} @{o} @{} } For the record, the syntax I'd currently prefer (with one argspec per line, for clarity) for that is { @{ @{\preprocessorb} @{\preprocessora} O{default} } m o m } It was *always* the intention that m, o, s, etc. should be available as argspecs! Back in 2008, I just /hadn't gotten around to/ do that in xdoc2l3, so I used the functionally equivalent @{}, @{o}, @{S{*}}, etc. in examples. Lars Hellström