Re: Estrazione iniziale da una parola

#15029
Up
0
Down
::

Riprendo questo topic perché mi servono altre funzioni.

\esaltacarattere che si comporti in questo modo:
`\esaltacarattere[3]{Italia}`
mi deve dare It\textbf{a}lia. Cioè identico a \esaltaprime ma deve esaltare sono il carattere numero 3, cioè la a.

E poi \estraicarattere
`\estraicarattere[3]{Italia}`
che mi deve dare a cioè la lettera numero 3.

Lo dico sempre che non ti applichi! 😀
`\newcommand\esaltacarattere[2][1]{%
\count@=#1\relax
\advance\count@-1\relax
\@split{\the\count@}{#2}%
\split@start\esaltaprime[1]{\split@end}}

\newcommand\estraicarattere[2][1]{%
\count@=#1\relax
\advance\count@-1\relax
\@split{\the\count@}{#2}%
\estraiprime[1]{\split@end}}`
Ovviamente danno errore se cerchi di eseguire le operazioni su una lettera oltre il termine della parola. Puoi curare questo modificando la definizione di \@split:
`\def\@split#1#2{\split@count=#1\relax
\def\split@start{}%
\edef\split@end{\detokenize\expandafter{#2}\noexpand\empty}%
\loop\ifnum\split@count>0
\edef\split@start{\split@start\expandafter\@car\split@end\@nil}%
\edef\split@end{\expandafter\@cdr\split@end\@nil}%
\ifx\split@end\empty
\split@count=0
\GenericError{\space\space\space\@spaces\@spaces\@spaces}
{Splitting error}
{You probably went beyond the string length.}
{The number you gave is too big for the requested operation}%
\else
\advance\split@count-1
\fi
\repeat}`
Naturalmente anche \esaltaprime[7]{Italia} darà errore, adesso.

Ciao
Enrico

Go to top