Re: indice analitico

#39142
Up
0
Down
::

Io uso questo (va nel preambolo, ci vuole anche il pacchetto listings):
`\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}%
\index{#1@\texttt{\hspace*{-1.2ex}\textbackslash#1}}}`
Nel documento, poi, basta scrivere
`Ecco il comando \comando{documentclass}.`
Così il comando viene stampato nel font giusto e fatto precedere dalla barra. Nell’indice analitico, inoltre, l’incolonnamento viene fatto non con la barra, ma con la prima lettera del comando: guarda l’indice analitico dell’Arte o dell’Impaziente per un esempio.

Invece di uno spazio calcolato “a occhio” forse sarebbe meglio rientrare di quanto è occupato davvero dalla barra rovescia:
`\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}%
\index{#1@\texttt{\makebox[0pt][r]{\textbackslash}#1}}}`
Il complicato codice \makebox[0pt][r]{\textbackslash} può essere sostituito dal meno pesante (in termini di espansione) \llap{\textbackslash}.

Tanto per curiosità, ecco che succede quando si espande \makebox[0pt][r]{a}:
`\makebox ->\leavevmode \@ifnextchar (\@makepicbox {\@ifnextchar [\@makebox \mbox }

\leavevmode ->\unhbox \voidb@x

\@ifnextchar #1#2#3->\let \reserved@d =#1\def \reserved@a {#2}\def \reserved@b
{#3}\futurelet \@let@token \@ifnch
#1<-( #2<-\@makepicbox #3<-\@ifnextchar [\@makebox \mbox \@ifnch ->\ifx \@let@token \@sptoken \let \reserved@c \@xifnch \else \ifx
\@let@token \reserved@d \let \reserved@c \reserved@a \else \let \reserved@c
\reserved@b \fi \fi \reserved@c

\reserved@c ->\@ifnextchar [\@makebox \mbox

\@ifnextchar #1#2#3->\let \reserved@d =#1\def \reserved@a {#2}\def \reserved@b
{#3}\futurelet \@let@token \@ifnch
#1<-[ #2<-\@makebox #3<-\mbox \@ifnch ->\ifx \@let@token \@sptoken \let \reserved@c \@xifnch \else \ifx
\@let@token \reserved@d \let \reserved@c \reserved@a \else \let \reserved@c
\reserved@b \fi \fi \reserved@c

\reserved@c ->\@makebox

\@makebox [#1]->\@ifnextchar [{\@imakebox [#1]}{\@imakebox [#1][c]}
#1<-0pt \@ifnextchar #1#2#3->\let \reserved@d =#1\def \reserved@a {#2}\def \reserved@b
{#3}\futurelet \@let@token \@ifnch
#1<-[ #2<-\@imakebox [0pt] #3<-\@imakebox [0pt][c] \@ifnch ->\ifx \@let@token \@sptoken \let \reserved@c \@xifnch \else \ifx
\@let@token \reserved@d \let \reserved@c \reserved@a \else \let \reserved@c
\reserved@b \fi \fi \reserved@c

\reserved@c ->\@imakebox [0pt]

\@imakebox [#1][#2]#3->\@begin@tempboxa \hbox {#3}\setlength \@tempdima {#1}
\hb@xt@ \@tempdima {\csname bm@#2\endcsname }\@end@tempboxa
#1<-0pt #2<-r #3<-a \@begin@tempboxa #1#2->\begingroup \setbox \@tempboxa #1{\color@begingroup
#2\color@endgroup }\def \width {\wd \@tempboxa }\def \height {\ht \@tempboxa }
\def \depth {\dp \@tempboxa }\let \totalheight \@ovri \totalheight \height \advance
\totalheight \depth
#1<-\hbox #2<-a \height ->\ht \@tempboxa

\depth ->\dp \@tempboxa

\setlength #1#2->#1#2\relax
#1<-\@tempdima #2<-0pt \hb@xt@ ->\hbox to

\bm@r ->\hss \unhbox \@tempboxa `
Ecco invece che succede quando si espande \llap{a}:
`\llap #1->\hb@xt@ \z@ {\hss #1}
#1<-a \hb@xt@ ->\hbox to`
Naturalmente bisogna stare attenti a quello che si fa quando si usa un comando non ufficialmente appartenente a LaTeX; per esempio non cambiare colore nell’argomento di \llap e altre piccole avvertenze. Nel caso in esame non ci dovrebbero essere problemi.

Ciao
Enrico

Go to top