Perdonami, ma non ho capito la tua risposta. Che c’entra [tt]\cs_new…[/tt]?
Io con questo codice riesco a compilare. Non uso arogomenti espandibili, quindi non ho la certezza che tutto funzioni a dovere, Roberto ci dirà. Ho aggiunto #1#2#3 e #1#2 nella definizione date con [tt]\cs_new_protected:Npn[/tt] (Sono indispensabili vero?)`\documentclass{article}
\usepackage{xparse,expl3}
\usepackage{siunitx}
\ExplSyntaxOn
\NewDocumentCommand{\numx}{ O{} m o }
{
\IfNoValueTF{#3}
{ \robitex_numx:nx { #1 } { #2 } }
{ \robitex_numx:nxn { #1 } { #2 } { #3 } }
}
\cs_new_protected:Npn \robitex_numx:nx #1#2{ \num[#1]{#2} }
\cs_new_protected:Npn \robitex_numx:nxn #1#2#3 { \SI[#1]{#2}{#3} }
%\cs_generate_variant:Nn \robitex_numx:nn { nx }
%\cs_generate_variant:Nn \robitex_numx:nnn { nx }
\ExplSyntaxOff
\begin{document}
\noindent un numero \numx{120.12}\\
un numero con opzioni \numx[output-decimal-marker = {,}]{120.123}\\
un numero con unità di misura \numx{12.56}[km\per s]\\
un numero con unità di misura e opzioni \numx[output-decimal-marker = {,}]{12.124}[\percent]
\end{document}`
Fran