2 questi su fancyhdr

  • Creatore
    Topic
  • #93406
    samiel
    Partecipante
      Up
      0
      Down
      ::


      Mi sto perdendo assai verosimilmente in un bicchier d’acqua, ma:

      1. i due codici che seguono producono lo stesso risultato, non capisco dove stia
      la differenza e se uno dei due è corretto e l’altro no:
      `\renewcommand{\sectionmark}[1]{\markright{\footnotesize\textsc{{#1}{}}}}
      \renewcommand{\sectionmark}[1]{\markright{\footnotesize\textsc{#1}}}`

      2. per ottenere allo stesso modo i titolo del cpaitolo senz anumerazione, l’analogo codice
      `\renewcommand{\chaptermark}[1]{\markboth{\footnotesize\textsc{#1}}}`
      produce un errore di compiilazione:
      `Capitolo 1.
      ! Argument of \addtocontents has an extra }.

      \par
      l.337 \chapter{Introduzione}`

      grazie
      m

    Visualizzazione 6 filoni di risposte
    • Autore
      Risposte
      • #93407
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          \markright richiede un solo argomento, l’unico argomento nesessario epr la testata di destra.
          \markboth richiede due argomenti, uno per la testata di sinistra e uno per quella di destra.

          Vedi la guida tematica Il LaTeX reference Manual commentato a pagina 31.

        • #93408
          samiel
          Partecipante
            Up
            0
            Down
            ::


            Giusto, così funziona:
            `\renewcommand{\chaptermark}[1]{\markboth{\footnotesize\textsc{#1}}{\footnotesize\textsc{#1}}}
            \renewcommand{\sectionmark}[1]{\markright{\footnotesize\textsc{#1}}}`
            devo dedurre che
            `%\renewcommand{\sectionmark}[1]{\markright{\footnotesize\textsc{{#1}{}}}}`
            contiene un {} di troppo?

            C’è solo un nuovo intoppo:
            l’indice finale dei nomi continua a ereditare la testatina
            del capitolo precedente, e infatti riporta “BIBILIOGRAFIA”.
            Il preambolo è quello riportato qui
            http://www.guitex.org/home/en/forum/5-tex-e-latex/92905-font-ebraico-e-imakeidx-relazioni-pericolose

            m

          • #93409
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Sì, contiene un {} di troppo.

              Per la testatina che contiua quella della sezione precedente è normale se non cambi le testaitne, Imakeindix dovrebbe farlo e per quel che mi riuslta lo fa; nel file che ti ho mandato epr farti vedere le varie modifiche, d ame dava le testatine giuste. Comunque, tanto per usare la cintura e le bretelle, puoi fare così:`%\renewcommand{\indexname}{Indice dei nomi}
              \clearpage %oppure \cleardoublepage, ma non è veramente importante.
              \markboth{}{}
              \printindex
              `
              Ma se hai introdotto nel preambolo TUTTE le modifiche che ti ho detto, non dovrebbe essere necessario.

            • #93410
              samiel
              Partecipante
                Up
                0
                Down
                ::


                Sì. ho controllato di aver inserito tutte le modifiche, mi sono però ricordato di aver modificato
                il codice per le testatine come segue:
                versione originale
                `\renewcommand{\chaptermark}[1]{\markboth{\textsc{\footnotesize\thechapter. #1}}{\footnotesize\textsc{\thechapter. #1}}}
                \renewcommand{\sectionmark}[1]{\markright{footnotesize\textsc\{\thesection\quad #1}}}
                `
                versione modificata
                `\renewcommand{\chaptermark}[1]{\markboth{\footnotesize\textsc{#1}}{\footnotesize\textsc{#1}}}
                \renewcommand{\sectionmark}[1]{\markright{\footnotesize\textsc{#1}}}`
                Forse ci ho infilato qualcosa che non va…
                Comunque col codice \markboth{}{} la testina presenta solo il numero della pagina,
                dovrei inserire manualmente il testo nella forma
                `\markboth{\scshape indice dei nomi}{\scshape indice dei nomi}`
                m

                PS Nel file di esempio l’indice era di una sola pagina, ho provato ad allungarlo per prova
                e in effetti la testatina risulta sbagliata

              • #93411
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Mmmm…

                  Vedo che non è facile impostare le testatine come si vuole con imakeidx, ma c’è una strada non documentata nella documentazione di imakeidx; in realtà si tratta di una strada usabile sempre, indipendentemente da imakeidix, o quasi.

                  Il problema nasce dal fatto che di default \printindex (che si usi makeindx o imakeidx non fa differenza} manda in lettura e in composizione il file dell’indice analitico .ind elaborato da makeindex (o da xindiy), cioè fa leggere un file dove le voci dell’indice analitico appiano dentro l’ambiente theindex.
                  Questo per sua natura usa il comando \chapter* con “tutte” le classi per le quali è definito il livello di sezionamento \chapter, e usa \section* per article e le altre classi per le quali \chapter non è definito.

                  Tu usi la classe report per la quale \chapter è definito, ma non sono definiti i comandi di “sezionamento” a livello più alto, cioè \frontmatter, \mainmatter e \backmatter; quindi bisogna arrangiarsi con una procedura prevista dal markup di LaTeX ma usata raramente.

                  Prima di stampare la tua bibliografie e l’indice analitico inserisci il comando`\setcounter{secnumdepth}{-1}`
                  Poi nel argomento di \indexsetup scrivi`\indexsetup{level=\chapter, othercode=\footnotesize}
                  \makeindex[%intoc=true,
                  title=Indice dei nomi]`ricordandoti di commentare o di togliere del tutto la stringa [tt]intoc=true[/tt], come vedi fatto qui sopra.

                  A questo punto il comando che verrà eseguito dentro l’ambiente theindex, come ridefinito da imakeidx, sarà \chapter, ma grazie all’impostazione del contatore secnumdepth, questo capitolo non viene numerato e riceverà solo il titolo indicato come opzione a \makeindex. Questo titolo però andrà a finire anche nelle testatine e nell’indice generale, perché il contatore tocdepth non è stato modificato.
                  Il tuo problema delle testatine dell’indice analitico così è risolto.

                • #93412
                  samiel
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Grazie per la soluzione! Decisamente più complessa della mia, molto artigianale,
                    consistente appunto nell’aggiunta del codice
                    `\markboth{\scshape indice dei nomi}{\scshape indice dei nomi}`
                    In ogni caso, anche adottando la classe book, con o senza l’opzione openany,
                    le testatine dell’indice continuavano ad essere sbaglaite.
                    Che vantaggi o comunque maggiore correttezza rappresenta la soluzione
                    che mi suggerisci rispetto a quella “”casereccia” che avevo adottato?

                    grazie
                    m

                  • #93413
                    OldClaudio
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Semplicemente a me quella soluzione artigianale non funzionava, al punto che ho esaminato in modo dinamico il significato del comando \theindex, quello che apre l’ambiente dentro il quale viene composto l’indice analitico; ho esaminato anche il significato dei tre malrk \topmark, \firtmark e \botmark per vedere che cosa succedeva dando e non dando il comando \markboth in varie posizioni, prima, o dopo il comando \printindex.

                      La conclusione a cui sono arrivato non è certo l’uovo di Colombo; con la classe book invece del comando \setcounter{secnumdepth}{-1} (o meglio, oltre a quel comando) se ne danno degli altri; ma quel comando, che funziona anche con la classe report, è quello che risolve la situazione inseme al fatto che imakeidx usa il comando di sezionamento senza l’asterisco grazie all’impostazione level=\chapter; e quindi tutto funziona come dovrebbe.

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

                  Go to top