illinguista1972″ post=61862
Esempio?
Ciao
EnricoPronti. Il comando è
`\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}\index{#1@\texttt{\makebox[0pt][r]{\textbackslash}#1}}}`
e si usa con \comando{textsf} per ottenere dopo la composizione “\textsf”. Dopo aver eseguito MakeIndex mi trovo \textsf anche nell’indice analitico.
Fantastico. Ma ci sono, appunto, alcuni caratteri come @ che non vengono mandati nell’indice analitico. Scrivendo \comando{@} mi trovo “\@” nel testo, ma solo “\” o addirittura niente nell’analitico (ci sono però i riferimenti alle pagine). Insomma: alcuni caratteri danno problemi. E sono @, la barra rovescia, le graffe. Forse sono proprio i caratteri particolari di LaTeX, perché un segno di punteggiatura (pensiamo a \; non dà questi problemi).Può bastare come esempio?
Certo. La documentazione di MakeIndex mette in chiaro che nell’argomento di \index le graffe devono essere bilanciate e che, a questo proposito, \{ e \} contano. Inoltre i caratteri speciali di MakeIndex devono essere “protetti”. I caratteri speciali sono !, |, @ e “. L’ultimo è speciale perché serve appunto a proteggere gli altri tre e infatti \” non dà problemi.
Per i quattro caratteri speciali puoi usare
`\DeclareRobustCommand*{\comandox}[1]{\mbox{\lstinline$\\#1$}%
\index{“#1@\texttt{\protect\makebox[0pt][r]{\textbackslash}”#1}}}`
e così \comandox{@}, \comandox{“}, \comandox{!} e \comandox{|} daranno il corretto risultato. Per \{ e \} è un poco più complicato. Ti do un codice completo:
`\DeclareRobustCommand*{\zwbs}{\makebox[0pt][r]{\textbackslash}}
\DeclareRobustCommand*{\comando}[1]{\mbox{\lstinline!\\#1!}%
\index{#1@\texttt{\zwbs#1}}}
\DeclareRobustCommand*{\comandox}[1]{\mbox{\lstinline$\\#1$}%
\index{“#1@\texttt{\zwbs”#1}}}
\newcommand\gobble[1]{}
\newcommand\ilbrace{\texttt{\textbackslash\{}\index{\{\gobble\}@\texttt{\zwbs\{\gobble\}}}}
\newcommand\irbrace{\texttt{\textbackslash\}}\index{\gobble\{\}@\texttt{\zwbs\gobble\{\}}}}`
Per indicizzare e scrivere \{ o \} userai \ilbrace e \irbrace rispettivamente.
Ciao
Enrico