[Risolto] Indici parziali con ‘titletoc’

  • Creatore
    Topic
  • #110359
    MatteoF
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno,
      vorrei creare degli indici parziali all’inizio di ogni capitolo, tramite il pacchetto ‘titletoc’.

      Di seguito un EMC, perfettamente funzionante…
      `% !TEX encoding = UTF-8 Unicode
      % !TEX TS-program = lualatex

      \documentclass[a4paper,11pt]{book}
      \usepackage{fontspec}
      \usepackage{polyglossia}
      \setmainlanguage[babelshorthands]{italian}
      \usepackage{microtype}
      \usepackage[clearempty]{titlesec}
      \usepackage{titletoc}
      \usepackage{lipsum}

      % impostazioni di titlesec e titletoc
      \titleformat{\chapter}[hang]{\bfseries\LARGE}{\thechapter}{1em}{}%
      [\startcontents\printcontents{pt}{1}{}]

      \titlecontents*{ptsection}[0em]{\normalsize\mdseries\itshape}{\thecontentslabel\ }{}{}[ \textbullet\ ][.]
      \titlecontents*{ptsubsection}[0em]{\normalsize\mdseries\upshape}{\thecontentslabel\ }{}{}[ (][; ][)]

      \begin{document}
      \frontmatter

      \tableofcontents

      \chapter{Introduzione}
      \lipsum[1]

      \mainmatter

      \chapter{La teoria A}

      \lipsum[1]

      \section{Caratteristiche della teoria A}
      \lipsum[1]

      \section{Critiche alla teoria A}
      \lipsum[1]

      \subsection{Critiche avanzate da Tizio}
      \lipsum[1]

      \subsection{Critiche avanzate da Caio}
      \lipsum[1]

      \section{Limiti della teoria A}
      \lipsum[1]

      \chapter{La teoria B}
      \lipsum[1]

      \section{Caratteristiche della teoria B}
      \lipsum[1]

      \section{Critiche alla teoria B}
      \lipsum[1]

      \subsection{Critiche avanzate da Tizio}
      \lipsum[1]

      \subsection{Critiche avanzate da Caio}
      \lipsum[1]

      \section{Limiti della teoria B}
      \lipsum[1]

      \backmatter

      \chapter{Conclusioni}
      \lipsum[1]

      \end{document}`
      Il mio problema è il seguente: a differenza dell’indice generale, vorrei che nell’indice parziale compaia solamente l’elenco dei paragrafi (section), e non dei sottoparagrafi (subsection)…

      Come suggerito nella documentazione del pacchetto, ho modificato il comando \printcontents nel modo seguente:
      `\titleformat{\chapter}[hang]{\bfseries\LARGE}{\thechapter}{1em}{}%
      [\startcontents\printcontents{pt}{1}{\setcounter{tocdepth}{1}}]`
      ma, agendo sul contatore ‘tocdepth’, inevitabilmente si modifica anche l’indice generale…

      È possibile che i sottoparagrafi compaiano solamente nell’indice generale e non in quelli parziali?

      Grazie
      Matteo

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #110360
        claudio
        Partecipante
          Up
          0
          Down
          ::


          scusa ma minitoc l’hai preso in considerazione?
          claudio

        • #110361
          MatteoF
          Partecipante
            Up
            0
            Down
            ::


            Ciao Claudio,
            usando ‘titlesec’ per la modifica di alcuni elementi di stile delle pagine, l’utilizzo di ‘titletoc’ veniva da sé…

            Intanto prendo confidenza con ‘minitoc’ e le sue 637 pagine di documentazione… 😯

          • #110362
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Leggi nella pagina 17 della documentazione di titlesec/titledoc che cosa dice a proposito del comando \ptintcontents, il cui ultimo argomento espressamente viene indicato come il punto migliore per cambiare livello fino a cui arrivare con l’indice parziale.

              Devo dirti che io ho avuto pessime esperienze con gli indici parziali eseguiti con quei due pacchetti e benché la documentazione di minitoc dica che sono incompatibili sono riuscito ad eseguire i miei indici parziali cono minitoc che mi consentono di urare uno stile chemi piace di più. i due pacchetti collaborano bene se non si tira troppo la corda.

            • #110363
              MatteoF
              Partecipante
                Up
                0
                Down
                ::

                OldClaudio” post=110604Leggi nella pagina 17 della documentazione di titlesec/titledoc che cosa dice a proposito del comando \ptintcontents, il cui ultimo argomento espressamente viene indicato come il punto migliore per cambiare livello fino a cui arrivare con l’indice parziale.

                Ciao Claudio,
                come puoi vedere da ciò che ho già postato, avevo fatto esattamente quello che riporta la documentazione del pacchetto a pagina 17, ovvero modificare l’ultimo argomento (⟨toc-code⟩) del comando \printcontents.

                La documentazione indica che

                ⟨toc-code⟩ is local code for the current toc; it may be used to change the tocdepth value or \contentsmargin, for instance.

                Pertanto avevo modificato il comando nel modo seguente:`\printcontents{pt}{1}{\setcounter{tocdepth}{1}}` ma comunque, il contatore ‘tocdepth’ continua ad agire a livello generale e non a livello degli indici parziali.

                Confused…

              • #110364
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Lo so che è difficile, tant’è che anch’io ho rinunciato a creare mini indici con titletoc.
                  Ma hai provato ad usare anche section come name dell’indice parziale?.

                  Nota bene: nella cartella texmf-dist/doc/latex/titlesex c’è il sorgente della documentazione titlesec.tex: che cosa ha scritto l’autore per creare i mini indici della sua stessa documentazione? Non ha scritto niente, perché la documentazione ha solo l’indice generale, dove però a livello di indice delle sezioni egli usa uno stile a pacchetto, invece che a lista.
                  Che anche l’autore, non ostante tutto quello che ha documentato, non è in grado di produrre mini indici? Attenzione, egli usa la classe ltxguide, che si basa su article; quindi per lui il livello più alto si sezionamento è section (colendo part, ma non ha diviso la documentazione in parti). Quindi ci manca un esempio concreto, oltre alla spiegazione che a quanto pare non è sufficiente.

                  ———————– Contrordine ! —————————

                  Finalmente mi è venuto in mente perché la cosa non ti funziona; mi sono finalmente ricordato che il comando \setcounter esegue una assegnazione globale, quaindi quando scrivi \setcounter{tocdepth}{1} il valore vale sia per l’indice generale sia per quello locale.

                  Bisogna aggirare il problema con una assegnazione locale; ma tocdepth non è il nome del contatore a basso livello, lo è solo ad alto livello, quello di LaTeX; il ocntaotre vero si chiama \c@tocdepth e il carattere @ rompe le scatole.

                  Allora siccome lavori con lualatex, il pacchetto etoolbox è già stato caricato e quindi basta usare il codice seguente:
                  `\titleformat{\chapter}[hang]{\bfseries\LARGE}{\thechapter}{1em}{}%
                  [\startcontents\printcontents{pt}{1}{\csuse{c@tocdepth}=1}]`e vedrai che la cosa funziona perfettamante; io l’ho provato sul tuo EMC e te lo garantisco.

                  Ovviamante la definizione`\titlecontents*{ptsubsection}[0em]{\normalsize\mdseries\upshape}{\thecontentslabel\ }{}{}[ (][; ][)]` non serve più e la puoi cancellare o commentare.

                • #110365
                  MatteoF
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Grazie Claudio, ora funziona 🙂

                    OldClaudio” post=110612
                    Ovviamante la definizione`\titlecontents*{ptsubsection}[0em]{\normalsize\mdseries\upshape}{\thecontentslabel\ }{}{}[ (][; ][)]` non serve più e la puoi cancellare o commentare.

                    Cancellando/commentando tale definizione si crea un’anomalia grafica strana, ovvero viene lasciato un ulteriore spazio vuoto tra quei paragrafi in cui prima si “annidavano” i sottoparagrafi (come ad esempio tra il par. 2.2 e 2.3; v. sotto). Ciò succede sia con lualatex che pdflatex…

                    [attachment=1882]emc.png[/attachment]
                    Benché non sia un gran problema (basta mantenere tale porzione di codice) sarebbe comunque curioso capirne il motivo…

                    Intanto possiamo considerare [Risolta] la questione!

                    Grazie a tutti
                    Matteo

                    Attachments:
                    You must be logged in to view attached files.
                Visualizzazione 5 filoni di risposte
                • Devi essere connesso per rispondere a questo topic.

                Go to top