Re: Estrazione iniziale da una parola

#15021
Up
0
Down
::

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 Italia

e 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

Go to top