titletoc e part

  • Creatore
    Topic
  • #75713
    Up
    0
    Down
    ::


    Ciao a tutti,

    sto provando a replicare con LaTeX un layout che mi è stato fornito. Non riesco però a ottenere ciò che voglio con il pacchetto titletoc per quanto riguarda le “parti”.
    Io vorrei ottenere nell’indice (in maiuscoletto e allineato a sinistra):
    `Parte I — titolo della parte`

    Mi pare di aver capito che il comando \part è sempre considerato “numberless” quindi il quarto argomento di titlecontents viene sempre ignorato.
    Pertanto similmente a quanto fatto per le altre sezioni del documento ho scritto (lo so il codice è pessimo ma non sapevo cos’altro fare!)
    `\titlecontents{part}
    [0mm]
    {\vspace{1.5mm}\normalfont\linespread{1}\fontsize{10}{14}\selectfont\scshape\partname\ }
    {}
    {}
    {\hfill\normalfont\selectfont\small\contentspage}[\vspace{1mm}]`

    Quello che mi pare di capire è che nel titolo è già compreso il numero della parte. Quindi non posso usare titletoc per inserire il trattino tra Part I e il titolo.

    Come posso risolvere il problema?

    Grazie mille.

    Ciao ciao.
    Fra

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #75714
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Io ridefinirei il comando \part, con ‘titleformat{part} invece di ridefinire il comando per scrivere la “parte” nell’indice.
        Per lo meno curerei che le due definizioni vadano d’accordo.

        Bisogna tenere conto che \part, tra le altre cose, manda della roba all’indice mediante un comando \addtocontents e starei bene attento a che cosa viene inviato all’indice; magari il trattino va messo lì, non nella formattazione della riga.

        Ecco perché, benché l’uso dei pacchetti come titletoc e titlesec siano molto comodi, quando scrivo una classe io preferisco gestirmi da solo tutto quanto, invece di appoggiarmi a pacchetti esterni, che, benché comodissimi e agilisssimi, sono precostituiti e non sgarrano da quanto sono stati programmati per fare. Tra l’alto i comandi relativi alla formattazione del titolo della parte e di come questo titolo compare nell’indice sono abbastanza semplici, quindi non è difficile ottenere quello che desideri. Con \chapter e con \section, oltre ai comandi di sezionamento inferiori, le cose sono più complesse.

        Apri book.cls, eventualmente anche book10.clo (o una delle sue consorelle), e cerca le definizioni per realizzare \part e \part*; guarda che cosa fanno e agisci di conseguenza. Scusa ma sto scappando.

      • #75715
        Up
        0
        Down
        ::


        Grazie dei suggerimenti Claudio. In effetti anch’io non amo molto usare questi pacchetti preconfezionati, soprattutto nella preparazione di una classe. Però non mi sento ancora molto in grado di fare modifiche affidabili. Soprattutto lo stile con cui viene composto l’indice è completamente ignoto per me.

        Alla fine ho risolto con questo “semplice” codice

        `\renewcommand\part{%
        \if@openright
        \cleardoublepage
        \else
        \clearpage
        \fi
        \thispagestyle{plain}%
        \if@twocolumn
        \onecolumn
        \@tempswatrue
        \else
        \@tempswafalse
        \fi
        \null\vspace*{42.3mm}
        \secdef\@part\@spart}

        \def\@part[#1]#2{%
        \ifnum \c@secnumdepth >-2\relax
        \refstepcounter{part}%
        \addcontentsline{toc}{part}{\partname\hspace{1ex}\thepart\hspace{1ex}–\hspace{1ex}#1}%
        \else
        \addcontentsline{toc}{part}{#1}%
        \fi
        \markboth{}{}%
        {\centering
        \interlinepenalty \@M
        \normalfont
        \ifnum \c@secnumdepth >-2\relax
        \linespread{1}\fontsize{12}{15}\selectfont\scshape \partname\nobreakspace\thepart
        \par
        \vskip 14\p@
        \fi
        \fontsize{14}{17}\selectfont\scshape #2\par}%
        \@endpart}
        \def\@spart#1{%
        {\centering
        \interlinepenalty \@M
        \normalfont
        \fontsize{14}{17}\selectfont\scshape #1\par}%
        \@endpart}
        `

        Ho dovuto mantenere però le righe di titletoc per la formattazione dell’indice perché ancora non sono capace di toglierle…!
        `\titlecontents{part}[0mm]{\vspace{1.5mm}\normalfont\linespread{1}\fontsize{10}{14}\selectfont\scshape}{}{}{}[\vspace{1mm}]`

        Devo consegnare la classe entro lunedì e quindi per ora mi accontento, però appena ho tempo chiederò di nuovo aiuto perché vorrei riuscire a non caricare titlesec e titletoc!

        Grazie di nuovo.
        Ciao ciao.
        Fra

      • #75716
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          La riga per l’inserzione della parte nell’indice si chiama \l@part; cercane la definzione nella classe book o nelle .clo di corpo; alla peggio nel nucleo di latex, contenuto nel file latex.ltx nella cartella texmf-distr/tex/latex/base/

        • #75717
          gianluca
          Amministratore del forum
            Up
            0
            Down
            ::


            Ciao. Perdonatemi la mia assenza dal forum.
            Mentre cercavo un hint per l’articolo che sto scrivendo proprio su titletoc mi sono imbattuto nella domanda di Francesco. So di essere in estremo ritardo, però spero che la soluzione possa andar bene lo stesso, sebbene il suggerimento di Claudio sia da manuale.
            \titlecontents{part}[0pc]
            {Parte \thecontentslabel — }
            {}
            {}
            {\hfill\thecontentspage}
            Con questo codice ottieni esattamente quanto ti proponevi, a meno dei maiuscoletti che puoi ottenere mettendo \scshape sia nelle due parentesi vuote (nel caso tu voglia i titoli in maiuscoletto), sia nelle altre due. La prima parentesi è quella relatva al codice da eseguire *prima* di comporre le entry vere e proprie, l’ultima è quella relativa al codice da eseguire *dopo* (in questo caso aggiunge il numero di pagina alla fine della riga. Fa’ attenzione: se usi \thecontentspage il numero sarà allineato all’estremo della riga, se usi \contentspage il numero sporgerà un po’ all’esterno perché viene composto in un box messo alla fine. Infine, se il numero di pagina non ti serve basta cancellare il contenuto dell’ultima parentesi.
            Spero tu possa utilizzare questo codice in altre occasioni.

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

        Go to top