Re: Stranezza \newcommand+imakeidx

#91585
Up
0
Down
::

Dork” post=91128Buon pomeriggio, anche oggi una stranezza…mah

Non so ancora cosa sia pertinente quindi intanto espongo il problema poi in caso, se servono info ulteriori, ve le passo.

Usando imakeidx ho creato un indice “simboli”
ho dunque fatto un semplicissimo comando per inserire in automatico le voci man mano che le scrivo nel testo:

`\newcommand{\simb}[1]{#1\index[simboli]{$#1$}} %simboli
`

da usare, ad esempio così:

`\documentclass[a4paper]{article}
\usepackage{imakeidx}
\makeindex[name=simboli, title=Indice dei simboli, columns=3]%indice dei simboli
\newcommand{\simb}[1]{#1\index[simboli]{$#1$}} %simboli

\begin{document}
Prendiamo un sottoinsieme dello spazio di base $A\simb{\subseteq}X$ mettendo al contempo il simbolo nell'indice.
\printindex[simboli]
\end{document}`

Tutto funziona, e bene. Quasi sempre 🙂

il fatto è che mi sono imbattuto in una produttoria che fa un gioco strano, ovvero:

`\index[simboli]{$\prod$}`

funziona

`$\simb{\prod}$`

non funziona

e non me la visualizza nell’indice dicendo che me la rifiuta…mah…ecco i log

simboli.ilg
`This is makeindex, version 2.15 [TeX Live 2013] (kpathsea + Thai support).
Scanning input file simboli.idx….
!! Input index error (file = simboli.idx, line = 3):
— Extra `@' at position 24 of first argument.
done (7 entries accepted, 1 rejected).
Sorting entries….done (19 comparisons).
Generating output file simboli.ind….done (11 lines written, 0 warnings).
Output written in simboli.ind.
Transcript written in simboli.ilg.
`

simboli.idx
`\indexentry{$\mathcal {P}$|hyperpage}{1}
\indexentry{$\overline {S}$|hyperpage}{1}
\indexentry{$\DOTSB \prod@ \slimits@ _i$|hyperpage}{2}
\indexentry{$\BS {\alpha }$|hyperpage}{7}
\indexentry{$\BP {\alpha }$|hyperpage}{7}
\indexentry{$\BD {\alpha }$|hyperpage}{7}
\indexentry{$G_\delta$|hyperpage}{8}
\indexentry{$F_\sigma$|hyperpage}{9}
`

ecco..perché caspita in questo caso decide di aggiungere quello strano \DOTSB \prod@ \slimits@_i
…che ovviamente sballa tutto? cioè non capisco perché il comando usato le altre volte funziona, l’inserimento esplicito di <\prod> (esattamente come dovrebbe fare il comando) funziona ma no.. (e nemmeno <\simb{\bigoplus}> funziona).

ora..provando nel mio stesso esempio minimo a inserire `$\simb{\prod}$` da qualche parte…non da alcun problema fa tutto (come ci si aspetta) correttamente.
Ma allora, cosa potrebbe interferire e come mai tali aggiunte?..e come mai solo usando il mio comando…

(so che non ha senso ma ho provato a cancellare anche tutti i file ausiliari e a ricompilare..nulla, il problema resta.)

prima di cominciare a eliminare una riga di preambolo alla volta alla ricerca del problema, magari voi sapete da cosa può dipendere…

Grazie mille 🙂 un abbraccio,

Corrado.

Il problema è che un comando
`\index[simboli]{\prod}`
riesce a non eseguire l’espansione di [tt]\prod[/tt], ma se dai [tt]\simb{$\prod$}[/tt] il meccanismo non può funzionare. Puoi usare questa definizione:
`\newcommand{\simb}[1]{#1\index[simboli]{\unexpanded{$#1$}}} %simboli`
ma c’è sicuramente qualcosa che dovrai correggere se vuoi un ordinamento alfabetico ragionevole.

Ciao
Enrico

Go to top