indici multipli senza interruzione di pagina

  • Creatore
    Topic
  • #110414
    Up
    0
    Down
    ::


    Uso il pacchetto imakeidx e ho creato due indici ognuno su due colonne. Vorrei che non ci fosse un’interruzione di colonna e di pagina tra i due indici ma non riesco a capire dal manuale se è possibile e nel caso lo fosse quali comandi dare.

Visualizzazione 19 filoni di risposte
  • Autore
    Risposte
    • #110415
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Specifica a imakeidx che li vuoi come sezioni di un capitolo “Indici analitici”. È raccontato nella documentazione.

      • #110416
        Up
        0
        Down
        ::


        Ho cercato nel manuale “The package imakeidx” di Enrico Gregorio come configurare gli indici come sezioni ma nonostante tutti i tentativi non ci riesco. Allego un esempio semplificato nella speranza che, se riesco a capire perché non funziona, possa estenderlo al testo vero che non ho messo perché il preambolo è lungo e complicato. S
        Il codice è il seguente. Compilo in PDFLAtex. Con piccole modifiche è l’esempio preso dal manuale:
        `
        \documentclass[a4paper,11pt]{book}
        \usepackage{imakeidx}
        \makeindex[name=A,title=Indice A]
        \makeindex[name=B,title=Indice B]
        \makeindex
        \indexsetup{level=\section*,toclevel=section,noclearpage}
        \usepackage[T1]{fontenc}
        \usepackage{lmodern}
        \usepackage[italian,english]{babel}
        \usepackage[utf8]{inputenc}
        \usepackage{geometry}

        \begin{document}
        In this way the index is typeset\index[A]{typeset} as a “section”\index[A]{section}, not as a “chapter”\index{chpater}, in one column mode within the two column\index[A]{column} document\index[A]{document} style; the indicated prologue\index{prologue} is typeset between the index title “Index of places” and the start of the index proper.
        \printindex
        \printindex[A]
        \printindex
        \end{document}
        `
        Grazie dell’aiuto.

      • #110417
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Compila questo EMC:`% !TEX encoding = UTF-8 Unicode
          % !TEX TS-program = pdflatex

          \documentclass[a4paper,11pt]{book}
          \usepackage[T1]{fontenc}
          \usepackage{lmodern}
          \usepackage[italian,english]{babel}
          \usepackage[utf8]{inputenc}

          \usepackage{imakeidx}
          \makeindex[name=A,title=Indice A]
          \makeindex[name=B,title=Indice B]
          \makeindex
          \indexsetup{level=\section*,toclevel=section,noclearpage}
          \usepackage{geometry}

          \begin{document}
          In this way the index is typeset\index[A]{typeset} as a
          “section”\index[A]{section}, not as a “chapter”\index{chpater},
          in one column mode within the two column\index[A]{column}
          document\index[A]{document} style; the indicated
          prologue\index{prologue} is typeset between the index title
          “Index of places” and the start of the index proper.

          % Gli indici analitici vanno nella back matter

          \backmatter
          \chapter{Indices}
          \printindex[A]
          \printindex
          \end{document}`

          Il fatto che abbia spostato alcune righe più in alto è una mia fisima, ma non guasta dire al programma che cosa comporre, e in particolare con che codifica è scritto il file sorgente e con quali font vuoi comporre, e in quali lingue componi; poi specifichi come vuoi comporre. Spesso l’ordine di queste istruzioni non è importante, ma talvolta lo è.

          La cosa vera, invece è che ho sostituito il tuo promo \printindex con un titolo di capitolo nella back matter; tale titolo non viene numerato nella back matter, ma se avessi composto l’indice generale, vedresti che vi compare anche il capitolo Indices.

          Testa questo EMC e vedrai che il risultato è quello che la documentazione di imakeidx promette di realizzare.

        • #110418
          Up
          0
          Down
          ::


          Il tuo codice funziona perfettamente. Da solo non ci sarei mai arrivato. Ora cercherò di esportarlo nel mio file. Spero che non sorgano problemi. Grazie mille.

        • #110419
          Up
          0
          Down
          ::


          Ho esportato il tuo codice nel mio file e funziona benissimo: il secondo indice scorre immediatamente dopo la fine del primo indice così come desideravo.
          Ora debbo risolvere alcuni problemi:
          1) eliminare il titolo del secondo indice e ci sono riuscito inserendo `\renewcommand{\indexname}{}` prima del secondo indice;
          2) Nella prima pagina del primo indice l’header è vuoto mentre nelle pagine successive compare quanto avevo previsto inserendo i comandi `\fancyhead[RE,LO]{Indice} ` e `\fancyhead[RO,LE]{\thepage}`
          3) Vorrei che l’header della pagina nella quale inizia il secondo indice fosse uguale a quello delle pagine precedenti. Ho inserito `\fancyhead[RE,LO]{Indice} ` e `\fancyhead[RO,LE]{\thepage}` anche in testa al secondo indice ma non funziona.
          Temo che il problema sia di `\documentclass[twoside,11pt,a4paper,]{book}` che prevede di default che nella prima pagina l’leader sia vuoto. Ammesso che questa sia la ragione c’è la possibilità di intervenire?
          Grazie

        • #110420
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Se hai due indici distinti e consecutivi, non capisco perché togli il titolo al secondo.
            Siccome [tt]\chapter{Indici][/tt] inserisce la testaina solo nelle pagine pari, dopo questo comando inserisci [tt]\markboth{Indici}{Indici}[/tt] e tutte la pagine verranno intestate con la parola Indice, tranne quella dove inizia il capitolo Indici.

            Non usare i fancyhdr per cambiare le testatine.

          • #110421
            Up
            0
            Down
            ::


            Purtroppo non funziona, ma è possibile che io non sia stato chiaro. Nella testatina delle pagine degli indici compaiono a destra e a sinistra, “numero di pagina” e “Indice”, tranne che nella prima pagina e nella pagina dove comincia il secondo indice dove le testatine sono vuote. Io vorrei che nella prima pagina del secondo indice comparissero “numero di pagina” e “Indice”.
            Mi consigli di non usare fancyhdr e, in effetti, non sono molto soddisfatto. Cosa consigli? \mark… {…}{…}? A me non ha funzionato. Se lo uso debbo cancellare fancyhdr. E funziona con `\documentclass[twoside,11pt,a4paper,]{book}`. Grazie

          • #110422
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Credevo di essere stato chiaro: non usare fancyhdr.
              \markboth fa tutto quello che occorre, con qualunque classe; ovviamente anche con la classe book.

            • #110423
              Up
              0
              Down
              ::


              Ho provato con \markboth invece di fancyhdr ma evidentemente mi sfugge qualcosa sul funzionamento di \markboth. Ho letto anche il messaggio che avevi inserito 4 anni fa in risposta a una richiesta ma non ne vengo a capo.
              Quando, seguendo la tua indicazione metto insieme due indici (senza interruzione di colonna e di pagina), nella pagina dove inizia il secondo indice la testatina è vuota e invece vorrei che essa fosse identica a tutte la altre testatine dell’indice.
              Ho provato a inserire \markboth … ma il comando viene ignorato.
              Cercherò di aggirare il problema in qualche modo.

            • #110424
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Sto cercando di crearmi un esempio minimo compilabile, con molte voci distinte di indice, perché mi sembra di notare delle incongruenze.

                Una cosa è certa: certe impostazioni di setup per imakeidx non si possono fare quando si usa fancyhdr. Non è detto che questo abbia a che fare con il tuo problema. Io però sto cercando di usare solo la classe book, senza personalizzazioni di nessun genere, tranne quelle che servno per trovarti una soluzione.

              • #110425
                Up
                0
                Down
                ::


                Ho bisogno di un po’ di tempo per preparare un esempio minimo compilabile estraendolo dal mio file che è molto lungo e ha oltre 2000 indicizzazioni distribuite su due indici. E anche il preamble un po’ per mia inesperienza e un po’ per la complessità del testo è molto lungo e sicuramente ridondante. Appena pronto te le invio.

              • #110426
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  No, non ti preoccupare di mettere insieme tutto il tuo preambolo e tutti i tuoi indici.

                  Abbi solo un po di pazienza perché mi occorre del tempo per analizzare i problema; l’ho già replicato, quindi so in che cosa consiste. Non ho ancora trovato la causa. Ho il sospetto che imakeidx ci metta del suo, ma non ne sono affatto sicuro.
                  Se davvero imakeidx ci mettesse del suo, non credo che sarà semplice trovare la terapia.

                • #110427
                  Up
                  0
                  Down
                  ::


                  Grazie.

                • #110428
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Grosso problema.

                    Si ottiene il risultato voluto se fra le opzioni del \indexsetup si inserisce`\indexsetup{level=\section*,
                    toclevel=section,
                    noclearpage,
                    firstpagestyle=headings,
                    headers={Indici analitici}{Indici analitici}%
                    }`
                    In sostanza questo EMC funziona correttamente come vorresti tu (più o meno).`% !TEX encoding = UTF-8 Unicode
                    % !TEX TS-program = pdflatex

                    \documentclass[a4paper,11pt]{book}
                    \usepackage[T1]{fontenc}
                    \usepackage{lmodern}
                    \usepackage[english,italian]{babel}
                    \usepackage[utf8]{inputenc}

                    \usepackage{kantlipsum}

                    \usepackage{imakeidx}
                    \makeindex[name=A,title=Indice A]
                    \makeindex[name=B,title=Indice B]
                    \makeindex
                    \indexsetup{level=\section*,
                    toclevel=section,
                    noclearpage,
                    firstpagestyle=headings,
                    headers={Indici analitici}{Indici analitici}%
                    }

                    \usepackage{geometry}

                    \begin{document}
                    \frontmatter
                    \tableofcontents

                    \mainmatter
                    \chapter{Riempimento kantiano}
                    \section{Sezione A}
                    \index[A]{colonna} \index[A]{sezione}
                    \index[A]{documento} \index[A]{stampare}
                    \kant[10-11]

                    \section{Sezione B}
                    \index{capitolo}\index{prologo}
                    \kant[12-13]

                    \backmatter

                    \chapter{Indici analitici}
                    \markboth{Indici analitici}{Indici analitici}
                    \printindex[A]
                    \section*{Riempitivo}
                    \kant[1-3]
                    \printindex
                    \section*{Altro riempitivo}
                    \kant[4-10]
                    \end{document}`

                    Ma il problema è un altro; l’opzione firstpagestyle viene disabilitata se nel documento viene usato il pacchetto fancyhdr.

                    Temo che tu sia in un vicolo cieco, nel senso che sarebbe necessario ridefinire un buon numero di macro interne di imakeidx al fine di evitare quella “disabilitazione” e/o di inserire nel corpo delle definizioni dell’ambiente theindex (quello che effettivamente viene usato da LaTeX per comporre l’indice analitico) il comando \thispagestyle che è attivo anche quando l’indice è composto a livello di section. In sostanza bisognerebbe fare tali e tanti cambiamenti nell’intero pacchetto, che ne verrebbe fuori un pacchetto nuovo.

                    Se l’autore del pacchetto lo vuole fare, potrebbe lui stesso disabilitare quel “theispagestyle{imki@firstpagestyle}” quando il livello dell’indice è quello della sezione. Usare il pacchetto xpatch per eseguire questa modifica solo loclamente forse sarebbe un metodo, ma molto delicato.

                    Per ora ti ho detto qual è il problema e qual è la causa; la soluzione del rpoblema sarebbe semplice se non usassi fancyhdr.
                    Io provo a vedere che cosa riesco a fare con xpatch o etoolbox; se riesco ad ottenere qualche risultato te lo faccio sapere.

                  • #110429
                    Up
                    0
                    Down
                    ::


                    Grazie del tuo impegno a risolvere il problema. Come dici è per me troppo rischioso rinunciare a fancyhdr. Essendo poco esperto rischierei di trovarmi di fronte a difficoltà troppo grandi. Se trovi qualcosa di più semplice fammelo sapere. Nel frattempo io sto pensando a qualche artificio editoriale, ma dovrei intervenire dall’esterno sul pdf e la cosa non mi piace per niente.

                  • #110430
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Soluzione trovata.

                      Non c’è da fare nulla perché l’opzione firstpagestyle funziona anche con fancyhdr; semplicemente la documentazione dice che è disabilitata, ma di fatto non lo è.

                    • #110431
                      Up
                      0
                      Down
                      ::


                      Grazie mille. In effetti il tuo esempio con il tuo codice funziona perfettamente e ho fatto male a non provarlo prima.
                      Dovrò comunque lavorarci su per inserirlo nel mio file. A un primo tentativo, dopo aver disabilitato i comandi di \fancyhdr, ho il solito problema con \markboth che non va mentre funziona perfettamente con il tuo esempio. Debbo un po’ studiarci su.
                      Un’ultima domanda il tuo codice si applica alla prima pagina di tutti i capitoli? Come posso fare se voglio applicarlo solo a un capitolo?

                    • #110432
                      OldClaudio
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        No, il mio codice è stato pensato solo per il capitolo degli indici analitici. Può dard=si che sia applicabile ad altri capitoli, ma sostanzialmente, direi, solo a quelli della backmatter, come il capitolo della bibliografia. Ovviamante “mutatis mutandis”.
                        Per i capitoli della main matter, dovrebbero essere sufficienti le impostazioni che hai già fatto con il pacchetto fancyhdr.

                      • #110433
                        Up
                        0
                        Down
                        ::


                        OK. Appena posso cerco di capire perché \markboth non mi funziona. Probabilmente va in conflitto con altro pacchetto. Disabiliterò uno alla volta i pacchetti per capire con quale va in conflitto (ammettendo che questo sia il problema). Ti faccio sapere l’esito.

                      • #110434
                        OldClaudio
                        Partecipante
                          Up
                          0
                          Down
                          ::


                          Togli \markboth dopo il comando \chapter{Indici analitici} perché non serve a nulla; ogni volta che compini un indice (a livello di sezione) esso imposta le testatine con l’opzione di headers={…}{…}.

                          Il codice modificato da imakeidx dell’ambiente theindex emette lui stesso un \markboth che sovrascrive l’eventuale impostazione del tuo \markboth.

                          Tieni presente che \markboth non va in conflitto con niente; è l’ambiente theindex che rende vano il comando che l’utente dà, perché, come ho detto, ne sovrascrive le impostazioni.

                          Forse ci sarebbe da domandarsi che cosa succede a definire i sotto indici come \section, invece di \section*. Certamnte in questo caso i titoli dei singoli idici parziali andrebbero nell’indice generale, ma non so se è questo quello che vuoi.

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

                      Go to top