L’arte di fare un indice analitico con imakeidx

  • Creatore
    Topic
  • #109175
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Carissimi, sto facendo qualche prova con makeidx. Questo codice
      `\documentclass{article}
      \usepackage[T1]{fontenc}
      \usepackage[applemac]{inputenc}
      \usepackage[italian]{babel}
      \usepackage{imakeidx}

      %\indexsetup{level=\section*,toclevel=section,noclearpage}

      \makeindex[title=Indice dei concetti]
      \makeindex[name=persone,title=Indice dei nomi,columns=3]

      \begin{document}

      …relatività\index{relatività}…


      Einstein\index[persone]{Einstein, Albert}…

      E questa è la fine della storia.

      \printindex

      \indexprologue{\small In questo indice si trovano solo nomi di persone famose.}

      \printindex[persone]
      \end{document}`
      funziona perfettamente, ma se decommento la riga con \indexsetup gli indici non vengono più prodotti!

      Perché?

    Visualizzazione 14 filoni di risposte
    • Autore
      Risposte
      • #109176
        Up
        0
        Down
        ::


        Ciao Lorenzo,

        sono l’ultima persona che ti può aiutare. Figurarsi che il pacchetto l’ha scritto Enrico, ti manderà sicuramente le istruzioni più dettagliate possibile.
        Io posso solo darti riscontro del fatto che da me compila correttamente l’esempio che segue, e spero tu ne possa trarre qualche indicazione:

        `
        \documentclass{article}
        \usepackage[T1]{fontenc}
        \usepackage[applemac]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{imakeidx}
        \indexsetup{level=\section*,toclevel=section,noclearpage}
        \usepackage{xpatch}
        \makeindex
        \makeatletter
        \xpatchcmd{\imki@putindex}
        {\immediate}
        {\ifimki@disableautomatic\else\immediate}
        {}{}
        \xpatchcmd{\imki@putindex}
        {\endcsname}
        {\endcsname\fi}
        {}{}
        \makeatother
        \begin{document}
        \tableofcontents
        \section{F}
        a\index{first}
        b\index{second}
        \section{G}
        c\index{third}
        d\index{four}
        \printindex
        \end{document}
        `

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

          marco_stara” post=109358Ciao Lorenzo,

          sono l’ultima persona che ti può aiutare. Figurarsi che il pacchetto l’ha scritto Enrico, ti manderà sicuramente le istruzioni più dettagliate possibile.
          Io posso solo darti riscontro del fatto che da me compila correttamente l’esempio che segue, e spero tu ne possa trarre qualche indicazione:

          `
          \documentclass{article}
          \usepackage[T1]{fontenc}
          \usepackage[applemac]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{imakeidx}
          \indexsetup{level=\section*,toclevel=section,noclearpage}
          \usepackage{xpatch}
          \makeindex
          \makeatletter
          \xpatchcmd{\imki@putindex}
          {\immediate}
          {\ifimki@disableautomatic\else\immediate}
          {}{}
          \xpatchcmd{\imki@putindex}
          {\endcsname}
          {\endcsname\fi}
          {}{}
          \makeatother
          \begin{document}
          \tableofcontents
          \section{F}
          a\index{first}
          b\index{second}
          \section{G}
          c\index{third}
          d\index{four}
          \printindex
          \end{document}
          `

          Ciao Marco!

          1. Anche a me il tuo codice dà un risultato corretto.

          2. È però molto “sporco”: davvero sono necessarie tutte quelle patch?

          3. imakeidx è una figata, facile e potente: ogni pacchetto per LaTeX dovrebbe essere così. Non lo conoscevo perché non ho mai dovuto scrivere indici multipli. Ma è una funzione che può servire, eccome!

          4. http://www.guitex.org/home/it/forum/5-tex-e-latex/109242-latexpedia-il-presente-della-documentazione-su-latex

          Aspetto, come al solito, le tue correzioni! 😉

          P.S. Com’è noto, uso una vecchia distribuzione di LaTeX, ma i miei problemi non dovrebbero dipendere da quello: “noclearpage” è descritto dalla doc. del pacchetto che posso consultare sulla mia macchina.

        • #109178
          Up
          0
          Down
          ::


          Non credo dipenda dalla tua installazione di Latex. Io uso l’ultima Texlive 2016 e il tuo esempio non compila nemmeno da me.

          Riporto:

          “nonewpage inhibits the new page command to be issued when using an article type document class and multiple indices are being typeset. We don’t see why someone would use multiple indices in an article (except possibly for package documentations, which usually provide a macro index and a list of changes). (egreg 2013, imakeidx documentation)”

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

            marco_stara” post=109361
            “nonewpage inhibits the new page command to be issued when using an article type document class and multiple indices are being typeset. We don’t see why someone would use multiple indices in an article (except possibly for package documentations, which usually provide a macro index and a list of changes). (egreg 2013, imakeidx documentation)”

            1. L’opzione (del pacchetto imakeidx) [tt]nonewpage[/tt] mi funziona benissimo. Il problema ce l’ho con la chiave (di \indexsetup) noclearpage: non fa quello che mi promette la documentazione.

            2. Mi viene in mente (almeno) un altro esempio d’uso di “nonewpage” (con cui, ripeto, non ho problemi): un tizio che stia scrivendo un articolo su imakeidx e che vuole mostrare ai propri lettori il risultato di un sorgente di prova con due indici analitici, può volere che il risultato stia su una sola pagina (per includerla nel suo articolo) e non su tre! 😉

            http://www.lorenzopantieri.net/LaTeX_files/LaTeXpedia.pdf

            Come vedi, qui ho aggirato il problema descrivendo a parole quello che fa il codice (pagina 242). E ti dirò: il risultato non mi dispiace!

          • #109180
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Ho provato con noclearpage e non funziona correttamente nemmeno a me. Mentre nonewpage funziona benissimo.
              Siccome in altre circostanze, avendo usato nonnewpage e noclearpage assieme, le cose andavano bene, non saprei dire che cosa apparentemente intralci i due comandi.
              Avendo confrontato l’esempio minimo compilabile, che avevo preparato per controllare quello che dicevi, con il file originale dove l’accoppiata dei due funzionava, non sono riuscito a trovare dove stia il baco, nel mio esempio minimo.

              Ci vorrebbe l’intervento di Enrico.

            • #109181
              Up
              0
              Down
              ::


              Credo comunque che il problema sia già stato notato anche da Enrico. Sono certo che interverrà.

              Marco

            • #109182
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::

                OldClaudio” post=109382Ho provato con noclearpage e non funziona correttamente nemmeno a me. Mentre nonewpage funziona benissimo.
                Siccome in altre circostanze, avendo usato nonnewpage e noclearpage assieme, le cose andavano bene, non saprei dire che cosa apparentemente intralci i due comandi.
                Avendo confrontato l’esempio minimo compilabile, che avevo preparato per controllare quello che dicevi, con il file originale dove l’accoppiata dei due funzionava, non sono riuscito a trovare dove stia il baco, nel mio esempio minimo.

                Ci vorrebbe l’intervento di Enrico.

                Dopo aver letto il messaggio di MArco_Stara, ho capito perché il mio EMC e il mio precedente file si comportavano diversaeante; in particolare nel mio uso precedente avevo specificato l’opzione splitindex, mentre nell’EMC mi basavo sulla compilazione automatica dei vari indici analitici.

                Tuttavia devo ancora verificare se il patch indicato da Enrico in TeXStackExchange funzioni ance quando non si specifichi splitindex. Work in progress!

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

                  OldClaudio” post=109386Tuttavia devo ancora verificare se il patch indicato da Enrico in TeXStackExchange funzioni ance quando non si specifichi splitindex. Work in progress!

                  Sarebbe cosa buona e giusta che la patch venisse incorporata direttamente nel codice di imakeidx.

                  Nel frattempo, forse dovrei togliere quelle righe da LaTeXpedia: ora come ora fanno delle promesse che non vengono mantenute….

                  P.S. Aspetto di sapere che ne pensi: quel capitolo l’ho riscritto dietro tuo espresso input. ❗

                • #109184
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Con calma, perché sono fuori sede.
                    Comunque volevo segnalarti che hai scritto nella pagina 241 \index[nome][voce], mentre voce va fra graffe.

                    Per il resto va bene, ma non citerei per niente nonewpage, perché serve solo quando usi l’opzione splitindex (questa opzione fa si che i comandi vadano in un solo file idx, e poi un programmino esterno, splitindex, spezza il file in tanti file parziali e li alfabetizza eseguendo lui stesso makeindex con lo stile e le opzioni che hai specificato a \makeindex[opzioni]).
                    Siccome è rarissimo di dover fare tanti indici analitici da saturare il massimo numero di canali di scrittura (massimo 16, almeno per pdflatex e xelatex, sembra che non ci siano limiti per lualatex), è rarissimo che si deba ricorrere a spliindex.
                    Quindi per mantenere semplice il capitoletto, vediamo se la cosa va a finite nel file di Enrico, oppure se bisogna aspettare, finché Enrico non lo fa; in realtà temo che quel patch non funzioni con una moltitudine di indici; posso sbagliarmi, ovviamamente, ma sicuramante solo Enrico può aggiustare il suo codice in modo che funzioni sempre.

                  • #109185
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      La soluzione al problema sollevato qui e su TeXExchange, credo di averla trovata, ma non sono sicuro che vada bene nel 100% dei casi. Perciò l’ho inviata a Enrico, e lui vedrà se adottarla o se scartarla.
                      Non è un semplice patch del codice, ma una modifica abbastanza importante che riguarda quasi una decina di righe del codice originale. Non posso indicala qui, anche perché non ha ancora l’approvazione di Enrico.

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

                        OldClaudio” post=109388Con calma, perché sono fuori sede.

                        Ok, ci conto.

                        OldClaudio” post=109388Comunque volevo segnalarti che hai scritto nella pagina 241 \index[nome][voce], mentre voce va fra graffe.

                        Ops. Corretto.

                        OldClaudio” post=109388Per il resto va bene, ma non citerei per niente nonewpage […]

                        Non ho mai citato “nonewpage”, per semplicità. Cit(av)o invece “noclearpage”. Ora ho tolto anche quel riferimento: lo rimetterò quando imakeidx sarà stato corretto!

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


                          Ora che ci ho pensato meglio, ho fatto fuori tutto il paragrafo su \indexsetup, in cui spiegavo level, toclevel e headers. È roba troppo pro per il mio lettore. Sì, anche per il lettore di LaTeXpedia. 😉

                          Quindi per me il problema è risolto.

                          Spero comunque che il pacchetto venga corretto presto: merita.

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


                            Ho appena aggiornato il capitolo sul’indice analitco dell’Arte e l’Impaziente. Alè.

                          • #109189
                            Up
                            0
                            Down
                            ::

                            lorenzo.pantieri” post=109392… È roba troppo pro per il mio lettore. Sì, anche per il lettore di LaTeXpedia. 😉

                            Potresti sempre creare tre versioni di LaTeXpedia: Basic, Pro ed Enterprise.

                            😀

                            Scherzo eh….! 🙂

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

                              marco_stara” post=109394

                              Potresti sempre creare tre versioni di LaTeXpedia: Basic, Pro ed Enterprise.

                              😀 😀 😀

                              Oddio, in effetti con l’Impaziente, l’Arte e LaTeXpedia ci vado vicino… 😉

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

                          Go to top