fancyhdr: testatine di opera collettanea

  • Creatore
    Topic
  • #23668
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti.

      Ho a che fare con un’opera collettanea suddivisa il capitoli (classe report, opzioni twoside e openright). Ogni capitolo è di un autore diverso ed è seguito dalla relativa bibliografia, ottenuta con l’ambiente thebibliography.

      1. Vorrei personalizzare le testatine con fancyhdr in modo che sulle pagine pari ci sia il nome dell’autore (andrà inserito manualmente per ciascun capitolo), e su quelle dispari il titolo del capitolo corrente preceduto dal numero puntato.

      2. Vorrei anche che le testatine di ogni bibliografia mantengano le testatine del titolo corrente, definite al punto precedente.

      Grazie anticipate,
      Lorenzo

      P.S. Visto che ci sono: come fare in modo di evitare che le varie bibliografie inizino sempre in una pagina destra, ma inizino invece in una nuova pagina (destra o sinistra che sia)?

    Visualizzazione 4 filoni di risposte
    • Autore
      Risposte
      • #23669
        Up
        0
        Down
        ::


        Questo codice funziona, anche se non è molto pulito… 🙁 il problema sta a mantenere le testatine nella bibliografia e farle cominciare anche a sinistra.

        Forse qualcuno può darti un codice migliore, comunque fammi sapere.

        `
        \documentclass[twoside, a4paper, openany]{report}

        \usepackage{fancyhdr}
        \pagestyle{fancy}

        \newcommand{\autoreattuale}{}
        \newcommand{\capitoloattuale}{}
        \newcommand{\autorecapitolo}[1]{\renewcommand{\autoreattuale}{#1}}

        \usepackage{lipsum}

        \fancyhead{}
        \fancyhead[OR]{\thechapter. \capitoloattuale}
        \fancyhead[EL]{\autoreattuale}

        \makeatletter
        \newcommand{\my@chapter}{}
        \let\my@chapter\chapter
        \newcommand{\@scapitolo}[1]{\my@chapter*{#1}}
        \newcommand{\@capitolo}[2][]{\cleardoublepage\renewcommand{\capitoloattuale}{#2}\my@chapter[#1]{#2}}
        \renewcommand{\chapter}{\@ifstar{\@scapitolo}{\@capitolo}}
        \makeatother

        \begin{document}
        \chapter{a}\autorecapitolo{autore1}
        \lipsum
        \lipsum

        \chapter{b}\autorecapitolo{autore2}
        \lipsum
        \lipsum

        \begin{thebibliography}{a}
        \bibitem{a} a
        \bibitem{b} \lipsum\lipsum
        \end{thebibliography}

        \chapter{c}\autorecapitolo{autore3}
        \lipsum\lipsum
        \end{document}
        `

      • #23670
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Ciao Daniele, quel codice non funziona. Ci sono molti problemi (a me nell’indice non scompaiono addirittura i titoli dei capitoli, poi le testatine nelle bibligrafie non ci sono e le testatine nell’indice non ci sono dalla seconda pagina in poi).

          In realtà sono io che mi sono spiegato male.
          `\makeatletter
          \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
          \hbox{}
          \vspace*{\fill}
          \vspace{\fill}
          \thispagestyle{empty}
          \newpage
          \if@twocolumn\hbox{}\newpage\fi\fi\fi}
          \makeatother

          \pagestyle{fancy}
          \renewcommand{\chaptermark}[1]{\markboth{#1}{}}
          \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
          \fancyhf{}
          \fancyhead[LE,RO]{\scshape\thepage}
          \fancyhead[LO]{\bfseries\footnotesize\nouppercase{\rightmark}}
          \fancyhead[RE]{\bfseries\footnotesize\nouppercase{\leftmark}}
          %\renewcommand{\headrulewidth}{0.5pt}
          %\renewcommand{\footrulewidth}{0pt}
          %\addtolength{\headheight}{1.6pt}`
          Ho sempre usato questo codice per produrre le tesatine con le classi standard. Ora però non mi va bene. Come lo si può modificare?

          Mi piacerebbe poter definire manualmente il contenuto delle testatine, visto che ho l’acqua alla gola e ho pochissimo tempo per consegnare il lavoro. Solo che se scrivo
          `\chapter{Prova}
          \markboth{Autore}{Prova}`
          non funziona.

          Sono talmente nel panico che accetteri anche di scrivere qualcosa come
          `\markboth{Autore}{5. Prova}`
          con i numeri messi a mano (in attesa di trovare una soluzione adeguata…). Se solo funzionasse…

          Aiuto!

          Grazie mille,
          Lorenzo

        • #23671
          DMW
            Up
            0
            Down
            ::


            Ridefinire quei comandi dei capitoli mi sembra un po’ una porcata. Basta usare leftmark e rightmark.
            Questo codice funziona sia con bibtex sia con thebibliography, però non ho provato con l’indice analitico.
            `\documentclass[twoside, a4paper, openany]{report}

            \usepackage{fancyhdr}
            \usepackage{lipsum}

            \makeatletter
            \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
            \hbox{}
            \vspace*{\fill}
            \vspace{\fill}
            \thispagestyle{empty}
            \newpage
            \if@twocolumn\hbox{}\newpage\fi\fi\fi}
            \makeatother

            \newcommand{\autoreattuale}{}
            \newcommand{\autorecapitolo}[1]{
            \if!#1!
            \let\autoreattuale\rightmark
            \else
            \renewcommand{\autoreattuale}{#1}
            \fi}

            \pagestyle{fancy}
            \renewcommand{\chaptermark}[1]{\markboth{\thechapter. #1}{}}
            \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
            \fancyhf{}
            \fancyhead[LE,RO]{\scshape\thepage}
            \fancyhead[LO]{\bfseries\footnotesize\nouppercase{\autoreattuale}}
            \fancyhead[RE]{\bfseries\footnotesize\nouppercase{\leftmark}}
            %\renewcommand{\headrulewidth}{0.5pt}
            %\renewcommand{\footrulewidth}{0pt}
            %\addtolength{\headheight}{1.6pt}

            \makeatletter
            \renewenvironment{thebibliography}[1]
            {\chapter*{\bibname}\autorecapitolo{}%
            \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
            \list{\@biblabel{\@arabic\c@enumiv}}%
            {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
            \sloppy
            \clubpenalty4000
            \@clubpenalty \clubpenalty
            \widowpenalty4000%
            \sfcode`\.\@m}
            {\def\@noitemerr
            {\@latex@warning{Empty `thebibliography' environment}}%
            \endlist}
            \makeatother

            \begin{document}
            \tableofcontents
            \chapter{a}\autorecapitolo{Lorenzo Pantieri}
            \lipsum
            \lipsum

            \chapter{b}\autorecapitolo{Daniele Ferone}
            \lipsum
            \lipsum

            \begin{thebibliography}{a}
            \bibitem{a} a
            \bibitem{b} \lipsum\lipsum
            \end{thebibliography}

            \chapter{c}\autorecapitolo{Andrea Tonelli}
            \lipsum\lipsum

            \chapter{d}\autorecapitolo{}
            \section{titolo}
            \lipsum\lipsum

            \end{document}`

            ho messo l’autore al posto di \rightmark, quindi nella pagina dispari in alto a sinistra (LO) c’è lautore, mentre in quella pari in alto a destra (RE) c’è la marca del capitolo.
            Se l’autore è vuoto, compare automaticamente il \leftmark originale, che hai definito in alto.
            Prova a vedere l’ultimo capitolo.
            Se vuoi posso modificare la definizione di chapter in modo tale da evitare di scrivere
            `\autorecapitolo{}`
            dopo \chapter, nel caso in cui non ci sia bisogno di specificare l’autore.

            Ciao

            Andrea

          • #23672
            Up
            0
            Down
            ::

            Ciao Daniele, quel codice non funziona. Ci sono molti problemi (a me nell’indice non scompaiono addirittura i titoli dei capitoli, poi le testatine nelle bibligrafie non ci sono e le testatine nell’indice non ci sono dalla seconda pagina in poi).

            Hai ragione… sorry :(.

          • #23673
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              Ridefinire quei comandi dei capitoli mi sembra un po’ una porcata.Basta usare leftmark e rightmark.

              Hai proprio ragione, su tutta la linea! 😉

              Un mega ringraziamento a te e a Daniele!

              A presto,
              Lorenzo

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

          Go to top