Hello all, I'm taking a look at how to begin on siunitx in expl3, and I've already found something I'm stuck with. The code I have at present is essentially: \def\example#1{ \begingroup \makeatletter \@makeother{\,}% \@makeother{\.}% \@makeother{\+}% \@makeother{\-}% \def~{}% \def\,{}% \catcode`\~=\active\relax \catcode`\^=\active\relax \catcode`\_=\active\relax \everyeof{\noexpand}% \endlinechar\m@ne \protected@xdef\storage{\scantokens{#1}}% \endgroup } which results in \storage containing an expanded copy of #1, with any hard spaces (~ and \,) removed. This may not be the best way, but it works. (In siunitx, see \si@num for the context of this). In expl3, I can only find \scantokens, \everyeof and \endlinechar in the :D range, so these are out. I'm guessing that I should do things a different way, but could do with enlightenment. Does no-one want \scantokens? -- Joseph Wright