Ordinamento nell’indice analitico

  • Creatore
    Topic
  • #75453
    Up
    0
    Down
    ::


    Ciao a tutti,

    volendo realizzare l’indice analitico, mi sono trovato di fronte a un problema. Lo spiego con un esempio. Ho bisogno di inserire delle voci come queste:
    `\index{11:12}
    \index{11:7}
    \index{7:12}
    \index{7:2}`
    e vorrei che venissero ordinate in questo modo:
    `7:2
    7:12
    11:7
    11:12`
    I numeri prima e dopo i due punti vorrei che fossero letti “per intero”; nell’esempio: undici, dodici, sette e due. È possibile fare questo?

    Grazie e buon weekend,
    Marco.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #75454
      lorenzo.pantieri
      Partecipante
        Up
        0
        Down
        ::

        `\index{11:12}
        \index{11:7}
        \index{7:12}
        \index{7:2}
        `

        Qualcosa come
        `\index{11:12}
        \index{11:07@{11:7}}
        \index{07:12@{7:12}}
        \index{07:02@{7:2}}
        `
        dovrebbe funzionare.

        Avevo un problema analogo con i papi: “Pio VI” viene messo dopo “Pio IX” perché la “V” viene dopo la “I”. Ho risolto con
        `\index{Pio06@{Pio~VI}}
        \index{Pio09@{Pio~IX}}
        `
        Guarda il capitolo sull’indice analitico nell’Arte.

      • #75455
        Up
        0
        Down
        ::


        Ciao Lorenzo,

        grazie mille! 🙂 Per vedere come fare l’indice analitico avevo letto il capitolo dell’Arte, solo che non sapevo di quell’uso dello zero.

        Grazie ancora e buona giornata,
        Marco.

      • #75456
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Marco87″ post=74601Per vedere come fare l’indice analitico avevo letto il capitolo dell’Arte, solo che non sapevo di quell’uso dello zero.

          In realtà, usare zero a un altro carattere non ha importanza. Se scrivi
          `\index{abaco@{zuzzurellone}}`
          nell’indice analitico finale compare “zuzzurellone” al posto alfabetico che occuperebbe “abaco”. Il resto è una conseguenza.

          Ciao,
          L.

        • #75457
          Up
          0
          Down
          ::

          lorenzo.pantieri” post=74603

          Per vedere come fare l’indice analitico avevo letto il capitolo dell’Arte, solo che non sapevo di quell’uso dello zero.

          In realtà, usare zero a un altro carattere non ha importanza. Se scrivi
          `\index{abaco@{zuzzurellone}}`
          nell’indice analitico finale compare “zuzzurellone” al posto alfabetico che occuperebbe “abaco”. Il resto è una conseguenza.

          Ciao,
          L.

          Vero, hai ragione. Era una cosa a cui potevo arrivarci ragionando…

          Grazie ancora e ciao,
          Marco.

        • #75458
          Up
          0
          Down
          ::

          lorenzo.pantieri” post=74603

          Per vedere come fare l’indice analitico avevo letto il capitolo dell’Arte, solo che non sapevo di quell’uso dello zero.

          In realtà, usare zero a un altro carattere non ha importanza. Se scrivi
          `\index{abaco@{zuzzurellone}}`
          nell’indice analitico finale compare “zuzzurellone” al posto alfabetico che occuperebbe “abaco”. Il resto è una conseguenza.

          Perché quelle graffe in più? 🙂 Questo va più che bene:
          `\index{abaco@zuzzurellone}`

          Ciao
          Enrico

        • #75459
          Up
          0
          Down
          ::

          Marco87″ post=74598Ciao a tutti,

          volendo realizzare l’indice analitico, mi sono trovato di fronte a un problema. Lo spiego con un esempio. Ho bisogno di inserire delle voci come queste:
          `\index{11:12}
          \index{11:7}
          \index{7:12}
          \index{7:2}`
          e vorrei che venissero ordinate in questo modo:
          `7:2
          7:12
          11:7
          11:12`
          I numeri prima e dopo i due punti vorrei che fossero letti “per intero”; nell’esempio: undici, dodici, sette e due. È possibile fare questo?

          Grazie e buon weekend,
          Marco.

          `\documentclass{book}
          \usepackage{xparse,imakeidx}
          \makeindex

          \NewDocumentCommand\numindex{>{\SplitArgument{1}{:}}m}{\donumindex #1}
          \ExplSyntaxOn
          \NewDocumentCommand{\donumindex}{mm}
          {
          \marco_donumindex:nn{#1}{#2}
          }

          \cs_new_protected:Npn \marco_donumindex:nn #1 #2
          {
          \index{ \marco_pad:n { #1 } : \marco_pad:n { #2 } @ #1 : #2 }
          }
          \cs_generate_variant:Nn \marco_donumindex:nn { xx }

          \cs_new:Npn \marco_pad:n #1
          {
          \int_compare:nT { #1 < 100 } { 0 } \int_compare:nT { #1 < 10 } { 0 } #1 } \ExplSyntaxOff \begin{document} abc \numindex{11:12} \numindex{11:7} \numindex{7:12} \numindex{7:2} \printindex \end{document}` Per stare sul sicuro aggiungo zeri fino ad arrivare a tre cifre. Spiegazione. 1. \numindex richiede un argomento della forma {:}
          2. L’argomento viene passato a \donumindex nella forma {}{}
          3. \marco_donumindex:nn è la versione interna del comando di prima; il suo compito è di emettere il corretto comando \index
          4. I due argomenti sono passati a \marco_pad:n che aggiunge uno zero se il numero è minore di 100 e un altro se il numero è minore di 10

          Così \numindex{7:2} esegue alla fine \index{007:002@7:2}

          Ciao
          Enrico

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

      Go to top