titoli capitoli nelle liste

  • Creatore
    Topic
  • #20747
    Up
    0
    Down
    ::


    Ciao a tutti.
    Vorrei inserire nella lista delle figure/tabelle il numero ed il titolo del capitolo seguito dalle figure/tabelle presenti nello stesso, del tipo:

    Lista delle figure

    1 Primo capitolo
    Prima figura…………………………………pag. 5
    Seconda figura…………………………………pag. 8

    2 Secondo capitolo
    Terza figura…………………………………pag. 11
    Quarta figura…………………………………pag. 14


    eccetera. Ho cercato sul forum ma nn sono riuscito a trovare niente di utile (sono nuovo quindi eventualmente perdonatemi qualche svista); ho provato anche ad utilizzare pacchetti tipo tocloft ma nn riesco a cavarne nulla. Qualcuno saprebbe aiutarmi?

    PS: Nella mia ignoranza ho provato addirittura a modificare (con il blocco note!) i file .lof e .lot generati da pdfLaTeX ma ovviamente nn è servito a nulla se non a perdere i suddetti files! Tra l’altro pdfLaTeX non me li rigenera sebbene riesca comunque a compilarmi nuove modifiche: dove vengono “scritte” tali modifiche se non vengono rigenerati i files .lof e .lot?

Visualizzazione 10 filoni di risposte
  • Autore
    Risposte
    • #20748
      Up
      0
      Down
      ::

      Ciao a tutti.
      Vorrei inserire nella lista delle figure/tabelle il numero ed il titolo del capitolo seguito dalle figure/tabelle presenti nello stesso, del tipo:

      Lista delle figure

      1 Primo capitolo
      Prima figura…………………………………pag. 5
      Seconda figura…………………………………pag. 8

      2 Secondo capitolo
      Terza figura…………………………………pag. 11
      Quarta figura…………………………………pag. 14


      eccetera. Ho cercato sul forum ma nn sono riuscito a trovare niente di utile (sono nuovo quindi eventualmente perdonatemi qualche svista); ho provato anche ad utilizzare pacchetti tipo tocloft ma nn riesco a cavarne nulla. Qualcuno saprebbe aiutarmi?

      PS: Nella mia ignoranza ho provato addirittura a modificare (con il blocco note!) i file .lof e .lot generati da pdfLaTeX ma ovviamente nn è servito a nulla se non a perdere i suddetti files! Tra l’altro pdfLaTeX non me li rigenera sebbene riesca comunque a compilarmi nuove modifiche: dove vengono “scritte” tali modifiche se non vengono rigenerati i files .lof e .lot?

      Non si capisce molto bene l’ultima parte. A ogni compilazione viene scritta una nuova versione dei file .lof e .lot. Prima di cancellarli, LaTeX li legge per comporre gli elenchi.

      Quanto al tuo problema, credo che l’unico modo sia di fare un po’ di chirurgia al comando che crea i capitoli. Suppongo qui che tu usi la classe book.
      `\makeatletter
      \def\addchaptertoloft#1#2{%
      \addtocontents{#1}{%
      \protect\contentsline{chapter}{\protect\numberline{}\thechapter\ #2}{}}}
      \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
      \if@mainmatter
      \refstepcounter{chapter}%
      \typeout{\@chapapp\space\thechapter.}%
      \addcontentsline{toc}{chapter}%
      {\protect\numberline{\thechapter}#1}%
      \else
      \addcontentsline{toc}{chapter}{#1}%
      \fi
      \else
      \addcontentsline{toc}{chapter}{#1}%
      \fi
      \chaptermark{#1}%
      \addchaptertoloft{lof}{#1}%
      \addchaptertoloft{lot}{#1}%
      \if@twocolumn
      \@topnewpage[\@makechapterhead{#2}]%
      \else
      \@makechapterhead{#2}%
      \@afterheading
      \fi}
      \makeatother`
      Tuttavia c’è un problema: se per caso in un capitolo non hai figure o tabelle, avresti la riga senza nulla sotto, che sarebbe bruttina. Secondo me non c’è bisogno di aggiungere i titoli dei capitoli.

      Non badare se il codice sembra complicato: lo è. 😀 Ma non c’è niente da capire, è il codice della classe book modificato in due righe, più un nuovo comando per fare quelle modifiche. Metti quella roba nel tuo preambolo oppure te la copi in un file “searain.sty” (senza \makeatletter e \makeatother) che terrai nella stessa cartella del documento principale e in questo scriverai \usepackage{searain}.

      Suppongo che il titolo degli elenchi sia “Elenco delle figure (tabelle)”. 🙂

      Ciao
      Enrico

    • #20749
      Up
      0
      Down
      ::

      Tuttavia c’è un problema: se per caso in un capitolo non hai figure o tabelle, avresti la riga senza nulla sotto, che sarebbe bruttina. Secondo me non c’è bisogno di aggiungere i titoli dei capitoli.

      E non si puo’ modificare il codice perché controlli se ce ne sono e nel caso in cui non ce ne siano non scriva nemmeno il titolo del capitolo?

    • #20750
      Up
      0
      Down
      ::

      Tuttavia c’è un problema: se per caso in un capitolo non hai figure o tabelle, avresti la riga senza nulla sotto, che sarebbe bruttina. Secondo me non c’è bisogno di aggiungere i titoli dei capitoli.

      E non si puo’ modificare il codice perché controlli se ce ne sono e nel caso in cui non ce ne siano non scriva nemmeno il titolo del capitolo?

      Sostituisci le prime tre righe del codice precedente con questo:
      `\def\addchaptertoloft#1#2{%
      \addtocontents{#1}{%
      \protect\xcontentsline{chapter}{\protect\numberline{}\thechapter\ #2}{}}}
      \def\xcontentsline#1#2#3{\@ifnextchar\contentsline{\contentsline{#1}{#2}{#3}}{}}`
      A ogni inizio di capitolo faccio scrivere sui file lof e lot il titolo del capitolo, ma come argomento a \xcontentsline e non più a \contentsline. Questo nuovo comando equivale a \contentsline solo se è seguito da \contentsline (cioè quando nel capitolo c’è almeno una figura o una tabella, rispettivamente per .lof e .lot).

      Occorre però evitare con cura di inserire altre cose in questi file con \addtocontents.

      Rimango dell’opinione che sia del tutto inutile: già i numeri di figure e tabelle dicono in quale capitolo si trovino. Riportare i titoli dei capitoli è una ripetizione noiosa.

      Ciao
      Enrico

    • #20751
      DMW
        Up
        0
        Down
        ::


        Prof.,

        il primo codice l’ho capito, non c’è nulla di complicato, hai aggiunto due righe e hai definito un comando seplice..

        Ora però mi devi spiegare questo pezzo.

        `\def\xcontentsline#1#2#3{\@ifnextchar\contentsline{\contentsline{#1}{#2}{#3}}{}}`

        Che fa \@ifnextchar in questo caso?

        Ho solo capito che se il prossimo è \contentsline lo mette altrimenti no.
        Non ho capito una cosa, ma \contentsline viene generato quando si inserisce una figura/tabella oppure la faccenda è diversa?

        Ciao

        Andrea

      • #20752
        Up
        0
        Down
        ::

        Prof.,

        il primo codice l’ho capito, non c’è nulla di complicato, hai aggiunto due righe e hai definito un comando seplice..

        Ora però mi devi spiegare questo pezzo.

        `\def\xcontentsline#1#2#3{\@ifnextchar\contentsline{\contentsline{#1}{#2}{#3}}{}}`

        Che fa \@ifnextchar in questo caso?

        Ho solo capito che se il prossimo è \contentsline lo mette altrimenti no.
        Non ho capito una cosa, ma \contentsline viene generato quando si inserisce una figura/tabella oppure la faccenda è diversa?

        \@ifnextchar guarda il token che segue senza “toccarlo”. Di solito lo si usa per vedere se quel token è [ oppure *, ma si può usare per qualsiasi altro token.

        La sintassi è \@ifnextchar{}{}; naturalmente non c’è nella definizione in cui si usa \@ifnextchar, sarà quindi quello che segue. Se = l’espansione sarà , altrimenti sarà .

        Il rimane al suo posto. Per questo esiste \@ifstar{}{} che funziona quasi allo stesso modo, ma rimuove l’asterisco dalla lista di token.

        Ogni figura o tabella genera una riga \contentsline nel rispettivo file per l’elenco. Vediamo che succede. Primo capitolo, il codice modificato scrive sul .lof la riga
        `\xcontentsline{chapter}{\numberline{}1 titolo}{}`
        Se c’è una figura nel capitolo, verrà scritta una riga del tipo
        `\contentsline{figure}{\numberline{1.1}Didascalia}{2}`
        Al momento di compilare l’elenco delle figure, \xcontentsline prima di tutto immagazzina i suoi tre argomenti (l’ultimo è sempre vuoto, ma meglio tenerlo per eventuali estensioni del comando), poi usa \@ifnextchar per vedere ciò che segue. Il fine riga è irrilevante, perché equivale a uno spazio che non viene mai valutato in questi casi. Siccome c’è \contentsline, viene usato il l; una volta esaurita questa fase, si va alla riga successiva e si trova \contentsline che si espande al modo solito.

        Se nel capitolo non ci fosse stata alcuna figura, il token sulla riga successiva sarebbe stato \xcontentsline, con l’effetto che entrerebbe in azione il , che è vuoto.

        E all’ultimo capitolo? Be’, qui ci si ricorda che alla fine di ogni file che viene letto tramite \input (o anche tramite \read) TeX aggiunge un token \par “implicito”.

        Ricapitolando: \@ifnextchar ha quattro argomenti, ma nelle definizioni che lo usano se ne specificano solo tre e questo comando, con questi tre argomenti deve essere alla fine del testo della definizione, in modo che il quarto sia proprio il token (non spazio) immediatamente seguente.

        Ciao
        Enrico

      • #20753
        DMW
          Up
          0
          Down
          ::


          Chiarissimo.

          Grazie,

          Andrea

        • #20754
          Up
          0
          Down
          ::


          Scusate il ritardo e cmq grazie a egreg9 per la risposta: funziona alla grande! Se è possibile però vi rompo ancora un pò. Una volta apportate le modifiche agli elenchi ( ho mutuato liste dall’inglese! :wink:) come posso modificarne il layout? Vorrei ad esempio aumentare la dimensione dei font dei Titoli dei Capitoli (TdC), aumentare la spaziatura tra la riga del TdC e l’inizio dell’elenco vero e proprio delle figure/tabelle, far “rientrare” l’elenco delle figure/tabelle rispetto al margine sinistro della riga del TdC (come nell’indice).

          Infine un’ultima domanda che credo sia comunque in relazione a quanto detto prima: esiste un modo per cambiare i font ad esempio nell’indice o negli elenchi in modo indipendente dai font usati nel testo? Ve lo chiedo perchè utilizzando il pacchetto titlesec sono riuscito a realizzare i TdC nel testo con font abbastanza particolari, però ovviamente nell’indice vengono mantenuti i font di default, che io vorrei cambiare e rendere diversi sia da quelli di default appunto (troppo “brutti” per il tipo di lavoro) sia da quelli usati nel testo (troppo “particolari” per essere usati nell’indice). Lo so, posso sembrare un pazzo scatenato ma ho scoperto da un pò LaTeX e mi diverto a misurarne le potenzialità! (indipendentemente dall’effettiva resa grafica) 😀

        • #20755
          Up
          0
          Down
          ::

          Scusate il ritardo e cmq grazie a egreg9 per la risposta: funziona alla grande! Se è possibile però vi rompo ancora un pò. Una volta apportate le modifiche agli elenchi ( ho mutuato liste dall’inglese! :wink:) come posso modificarne il layout? Vorrei ad esempio aumentare la dimensione dei font dei Titoli dei Capitoli (TdC), aumentare la spaziatura tra la riga del TdC e l’inizio dell’elenco vero e proprio delle figure/tabelle, far “rientrare” l’elenco delle figure/tabelle rispetto al margine sinistro della riga del TdC (come nell’indice).

          Perché vorresti questi aggiustamenti così poco gradevoli?

          Infine un’ultima domanda che credo sia comunque in relazione a quanto detto prima: esiste un modo per cambiare i font ad esempio nell’indice o negli elenchi in modo indipendente dai font usati nel testo? Ve lo chiedo perchè utilizzando il pacchetto titlesec sono riuscito a realizzare i TdC nel testo con font abbastanza particolari, però ovviamente nell’indice vengono mantenuti i font di default, che io vorrei cambiare e rendere diversi sia da quelli di default appunto (troppo “brutti” per il tipo di lavoro) sia da quelli usati nel testo (troppo “particolari” per essere usati nell’indice). Lo so, posso sembrare un pazzo scatenato ma ho scoperto da un pò LaTeX e mi diverto a misurarne le potenzialità! (indipendentemente dall’effettiva resa grafica) 😀

          Su questo non sono disponibile ad aiutarti: non ha alcun senso usare caratteri diversi per gli indici e per il testo normale. Quando poi leggo che i Computer Modern sono “brutti” mi viene l’orticaria. Se in più parli anche di tipi di carattere “particolari” l’allergia esplode perché mi viene subito in mente qualcosa come “Comic Sans”.

          Di che tipo di lavoro si tratta? Solo se ce lo dici possiamo suggerirti qualche scelta opportuna dei caratteri da impiegare.

          Puoi consultare la documentazione del pacchetto tocloft (ma ti assicuro che non è semplice da leggere :))

          Ciao
          Enrico

        • #20756
          Up
          0
          Down
          ::


          😀 😀 😀 😀 😀 😀 😀 😀 😀 😀 😀
          Scusa per l’orticaria egreg9: non lo faccio più!
          A parte gli scherzi, mi è venuto quel dubbio ed ho chiesto ma accetto più che volientieri i consigli “dissuasivi”! 😀
          Cmq, ad essere sincero non sto lavorando ad un vero e proprio testo, semplicemente come dicevo ho scoperto da poco LaTeX e probabilmente sono ancora nella fase “bulimica” dello smanettare! Mi sto divertendo ad apportare modifiche alle impostazioni di default per acquisire un pò di esperienza, che mi servirà sicuramente molto presto per qualcosa di serio.
          Ovviamente nn volevo affato offendere i Computer Modern….non potrei mai!!! 😉 😀
          Semplicemente nel testo (uso la classe scrrprt e carico il pacchetto palatino) ho realizzato i titoli dei capitoli con font tipo palatino, molto grandi e per questo colorati in grigio (tutto questo tramite il pacchetto titlesec), mentre di default il pacchetto palatino imposta il font helvetica per i titoli dei capitoli nell’indice. Mi piacerebbe ad esempio che anche i titoli dei capitoli nell’indice fossero in palatino. Tutto qui.
          Non sono molto esperto, quindi ci sta che spari delle #######, ma perchè far rientrare leggermente gli elenchi rispetto ai titoli dei capitoli, come del resto avviene nell’indice, sarebbe sgradevole? Grazie in anticipo

        • #20757
          Up
          0
          Down
          ::

          Semplicemente nel testo (uso la classe scrrprt e carico il pacchetto palatino) ho realizzato i titoli dei capitoli con font tipo palatino, molto grandi e per questo colorati in grigio (tutto questo tramite il pacchetto titlesec), mentre di default il pacchetto palatino imposta il font helvetica per i titoli dei capitoli nell’indice. Mi piacerebbe ad esempio che anche i titoli dei capitoli nell’indice fossero in palatino. Tutto qui.

          La scelta di KoMa Script di usare un carattere diverso per le intestazioni dei capitoli non è peregrina (del resto l’ho usata anch’io nel mio ultimo libro :)). Forse Helvetica non è proprio il meglio come carattere senza grazie, accostato a Palatino. Non è che ci siano molte alternative “free”.

          Non sono molto esperto, quindi ci sta che spari delle #######, ma perchè far rientrare leggermente gli elenchi rispetto ai titoli dei capitoli, come del resto avviene nell’indice, sarebbe sgradevole?

          Avevo capito il contrario. Cambia
          `\protect\numberline{}\thechapter\ #1`
          in
          `\protect\numberline{\thechapter}#1`
          Un’altra volta di’ quale classe usi. E scrivi “po’” con l’apostrofo, come “di’” imperativo di dire. 🙂 L’uso attuale della tipografia italiana è anche di usare l’accento acuto in “perché” e simili. Con il grave si scrivono “tè”, “caffè”, “è”, “cioè”, “piè”, “Mosè” e poche altre parole.

          Ciao
          Enrico

        • #20758
          Up
          0
          Down
          ::


          OK grazie tante per il codice e per i consigli.
          Alla prossima
          😉

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

      Go to top