Che ne dici di farlo diventare un pacchetto?
Vedrò. Intanto godetevi la versione che supporta numeri fino a 999:
`\makeatletter
\def\numeroinparole#1{\expandafter\@numeroinparole\csname c@#1\endcsname}
\def\@numeroinparole#1{%
\ifnum#1=0 zero% Eccezione
\else
\ifnum#1=3 tre% Eccezione
\else
\np@numeroinparole{#1}{}%
\fi\fi}
\def\np@numeroinparole#1#2{%
\ifnum#1>999
\@ctrerr
\else
\ifnum#1>99
\expandafter\np@hundred\number#1\np@del
\else
\ifnum#1<30
\np@small{#1}{#2}\else\expandafter\np@large\number#1{#2}%
\fi\fi\fi}
\def\np@small#1#2{#2\ifcase#1\or
uno\or due\or tr\'e\or quattro\or cinque\or
sei\or sette\or otto\or nove\or dieci\or
undici\or dodici\or tredici\or quattordici\or quindici\or
sedici\or diciassette\or diciotto\or diciannove\or venti\or
ventuno\or ventidue\or ventitr\'e\or ventiquattro\or venticinque\or
ventisei\or ventisette\or ventotto\or ventinove\fi}
\def\np@large#1#2#3{%
\ifcase#1\or\or\or #3trent\or #3quarant\or #3cinquant\or
#3sessant\or #3settant\or ottant\or #3novant\fi
\ifcase#2a\or uno\or adue\or atr\'e\or aquattro\or
acinque\or asei\or asette\or otto\or anove\fi}
\def\np@hundred#1#2\np@del{%
\ifcase#1\or\or due\or tre\or quattro\or cinque\or
sei\or sette\or otto\or nove\fi cent%
\ifnum#2=0 o\else\np@numeroinparole{#2}{o}\fi}
\makeatother`
Il problema del “…tré” accentato in tutti i numeri che finiscono per 3, maggiori di 3, è stato risolto mettendo un’eccezione iniziale, come suggerito da Gino Favero ieri sera in treno (50 minuti di ritardo :evil:) che però mi ha segnalato anche il problema del “centosettantanove-centottanta” (vedete che una “o” va mangiata?). 🙄
Risolto scrivendo la macro \np@hundred, che si occupa della cifra delle centinaia, facendo chiamare alla fine \np@numeroinparole (è una ricorsione) con secondo argomento “o” (se il numero non è un multiplo di cento). La macro \np@large è stata riscritta con la possibilità di aggiungere il secondo argomento (che può essere vuoto o una “o”) davanti ai frammenti che ne hanno bisogno.
Adesso cerco aiuto dagli analisti numerici per una implementazione e-TeX (cioè con \numexpr).
Ciao
Enrico
PS: Chi è Gino Favero? Ecco qui 😀