Grazie ancora.
Approfitto delle tue capacità mistiche.
Per prima cosa, si possono modificare, rispettivamente, le macro precedenti in modo da estrarre e togliere le prime n lettere?Inoltre, ti chiedo se c’è un modo per trasformare le parole come segue.
Vorrei mettere in risalto le prime tre lettere della parola
da Italia a Italia, oppure, ancora meglio, vorrei una macro che esalti le prime n lettere.
Esempio:
`
\esaltaprime[5]{Italia}
`
mi deve dare Italiae un’altra macro che esalti le ultime n.
Esempio
`
\esaltaultime[4]{Italia}
`
mi dere fornire Italia
`\documentclass[a4paper]{article}
\makeatletter
\newcount\split@count
\def\@split#1#2{\split@count=#1\relax
\def\split@start{}%
\edef\split@end{#2}%
\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
\else
\advance\split@count-1
\fi
\repeat}
\def\@reverse#1{%
\edef\@temp{#1}%
\def\@esrever{}%
\loop\unless\ifx\@temp\empty
\edef\@esrever{\expandafter\@car\@temp\@nil\@esrever}%
\edef\@temp{\expandafter\@cdr\@temp\@nil}%
\repeat}
\newcommand{\esaltaprime}[2][0]{%
\@split{#1}{#2}%
\textbf{\split@start}{\split@end}}
\newcommand{\esaltaultime}[2][0]{%
\@reverse{#2}\@split{#1}{\@esrever}%
\@reverse{\split@end}\@esrever%
\@reverse{\split@start}\textbf{\@esrever}}
\makeatother
\def\parola{Italia}
\begin{document}
\esaltaprime[3]{\parola}
\esaltaprime[7]{\parola}
\esaltaprime[7]{Cercopiteco}
\esaltaprime{Italia}
\esaltaultime[4]{Cercopiteco}
\end{document}`
Limitazioni: il secondo argomento deve essere una stringa di caratteri ASCII a 7 bit oppure un comando la cui espansione sia tale.
Sto lavorandoci su per eliminare la limitazione e accettare input a 8 bit
Ciao
Enrico