Will Robertson wrote: > Considering that the things that \ExplSyntaxXYZ do are not expandable, I > think it would be correct to define them \protected. > > Speaking generally, however, I'm not sure how much expansion we should > be restricting. Lars in particular, recently, has been advocating > keeping things expandable (and LuaTeX should broaden the applicability > of what can be done there) but at this stage I've got nothing much to > say :) I perhaps should have suggested two general cases: 1) Design functions which clearly are expandable (such as \IfBooleanTF or the version of \IfNoValue in xparse-alt): these should left alone as they will behave "nicely". 2) Design functions which are not expandable (at least under pdfTeX or XeTeX: LuaTeX raises lots of issues, I suspect). This includes \ExplSyntaxOn/Off, \DeclareDocumentCommand and so on. I'd suggest that these should be \protected. I'm not saying it's likely that \edef-ing things like \DeclareDocumentCommand is likely, but that it seems more consistent. -- Joseph Wright