[RISOLTO] Stranezza \newcommand+imakeidx

  • Creatore
    Topic
  • #91584
    Up
    0
    Down
    ::


    Buon 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.

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #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

    • #91586
      Up
      0
      Down
      ::


      il problema è il pacchetto amsmath

      nel mio esempio minimo

      caricando amsmat e inserendo <$\simb{\prod}$>, la produttoria non compare nell’indice, senza amsmath compare.
      La voce nel simboli.idx che da l’errore è sempre la stessa:

      `\indexentry{$\DOTSB \prod@ \slimits@ $}{1}
      `

      riporto comunque l’esempio NON funzionante

      `\documentclass{article}
      \usepackage{amsmath}
      \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. Quanto segue a dimostrazione di come tale costruzione non sia estendibile a una famiglia di spazi $\simb{\prod_i} X_i$,
      \printindex[simboli]
      \end{document}`

    • #91587
      Up
      0
      Down
      ::


      Grazie mille Enrico, ma

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

      \begin{document}
      Prendiamo un sottoinsieme dello spazio di base $A\simb{\subseteq}X$ mettendo al contempo il simbolo nell'indice. Quanto segue a dimostrazione di come tale costruzione non sia estendibile a una famiglia di spazi $\simb{\prod_i} X_i$,
      \printindex[simboli]
      \end{document}

      `

      ancora non funziona nemmeno nel mio esempio minimo non funzionante. (Nota che ho messo il comando dentro i dollari e non viceversa perché mi sembrava meglio…ma non funziona comunque nemmeno mettendo i dollari dentro)

      Uscendo un po’ dall’argomento principale… sono solo simboli… come ordino una lista di simboli? Un’idea carina che avevo visto su un libro era metterli in ordine di apparizione, scritti uno a fianco all’altro su un unica riga nel caso comparissero (inserendo ovviamente solo la prima comparsa di ogni simbolo) nella stessa pagina (quindi ogni pagina appare una sola volta, se appare) ma non saprei come fare e quindi ho lasciato che li ordini (dal mio punto di vista) a caso senza nemmeno pensare a un eventuale ordine “alfabetico” (per ora…)…ma non essendomi mai posto il problema…sono tutt’orecchi

      Parlando di ordinamento invece, non so se ricordi, mi avevi corretto pochi giorni fa il problema dei backref sulle pagine romane. Inserimenti nell’indice analitico a voci situate su pagine romane le rifiuta (non è un problema grosso visto che per ora non ne ho e non credo ne metterò…ma mi sono accorto e magari ti interessa…in caso apro un argomento nuovo)

    • #91588
      Up
      0
      Down
      ::


      Ho trovato qui la risposta.

      il codice:

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

      \begin{document}
      Prendiamo un sottoinsieme dello spazio di base $A\simb{\subseteq}X$ mettendo al contempo il simbolo nell'indice. Quanto segue a dimostrazione di come tale costruzione non sia estendibile a una famiglia di spazi $\simb{\prod_i} X_i$,
      \printindex[simboli]
      \end{document}`

      funziona correttamente.

Visualizzazione 3 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top