Aggiungo alla risposta precedente. C’è una soluzione, più lenta, al problema più generale di trattare una lista di token della forma
`
oppure
`
ed ottenere solo i
`\def\@@taglia#1{\def\@collect@taglia{}\@@@taglia #1\@nil}
\def\@@@taglia{%
\futurelet\@taglia@next\@do@taglia}
\def\@do@taglia#1{%
\ifx\@taglia@next\@nil
\let\next\relax
\else
\ifcat\noexpand\@taglia@next\bgroup
\let\next\@gobble
\else
\ifcat\noexpand\@taglia@next\relax
\let\next\@gobbletwo
\else
\edef\@collect@taglia{\@collect@taglia #1}%
\let\next\@@@taglia
\fi\fi\fi
\next}`
Dopo \@@taglia{xxx{1}} oppure \@@taglia{xxx\hbox{1}}, la stringa xxx si troverà nella macro \@collect@taglia.
Adesso puoi definire l’azione che desideri. Per esempio, per stampare la stringa, puoi dire
`\def\@taglia#1{\@@taglia{#1}\@collect@taglia}`
passando la lista di token originale a \@taglia come argomento.
Ciao
Enrico