fancyhdr – funzionamento \markright \markboth

  • Creatore
    Topic
  • #79521
    Up
    0
    Down
    ::


    Buongiorno, sono sempre sotto con la mia tesi e sto lavorando ad un’intestazione di pagina personalizzata con il pacchetto fancyhdr
    Quello che vorrei realizzare è di avere sulla pagina di sinistra (even) nella parte alta da un lato il capitolo e dall’altra la sezione. Mentre nella pagina di destra solo la sezione.
    Naturalmente nelle pagine even vuote andrebbe lasciato tutti bianco.
    Ho provato e riprovato, ma non mi viene… o meglio… viene ma certi capitoli non mostrano la parte riguardante il capitolo altri invece si.
    Credo di non capire bene il funzionamento di \markboth \markright e di alcuni elementi del comando \renewcommand
    Questa è la parte riguardante il preambolo…
    `
    \documentclass[12pt,a4paper,twoside]{report}
    \linespread{1.5}

    % Title Page
    \title{***}
    \author{***}

    \usepackage{algorithmicx}
    \usepackage{algorithm}
    \usepackage{algpseudocode}
    \usepackage{amsmath}
    \usepackage{textcomp}
    \usepackage{epstopdf}
    \usepackage{graphicx}
    \DeclareGraphicsExtensions{.pdf,.eps,.png}
    \usepackage{listings}
    \lstset{language=C++,showtabs=false,basicstyle=\scriptsize,showstringspaces=false,frame=lines,tabsize=1}
    \lstnewenvironment{MatlabEnv}[1][]
    {\lstset{language=Matlab,showtabs=false,basicstyle=\scriptsize,showstringspaces=false,frame=lines,tabsize=1,#1}}{}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
    \renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{}}
    %\fancyhf{}
    \fancyfoot[C]{\thepage}
    \fancyhead[RE]{\bfseries\chaptermark}
    \fancyhead[LO,RE]{\bfseries\sectionmark}
    `
    Con questo codice vedo solo la linea nera sopra… mhm 😕 😕 😕
    La cosa strana è che basta cambiare in \fancyhead[] alcuni argomenti… invertendo per esempio RE con LE per far apparire la parte riguardante la sezione, il capitolo però non si vede…
    Ho letto il pdf di speigazioni, ma continua a non essermi molto chiara la logica di uso dei comandi…
    Ringrazio in anticio chiunque mi vorrà aiutare

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


        Nella sezione ArsTeXnica (qui sopra) in uno dei fascicoli di due o tre anni fa c’è un articolo intitolato I mark, questi sconosciuti. Non lo dico per mettere il dito nella piaga, ma effettivamente il meccanismo dei mark è poco conosciuto e oggettivamente non è così semplice.

        In realtà \markboth e \markright servono per generare die mark interni divisi in due testi a graffe bilanciate, quello di sinistra caricato dal primo argomento di \markboth e quello di destra caricato dal secondo argomento di \markboth e dall’UNICO argomento di \markright (scrivere [tt]\markright{…}{}[/tt] è concettualmente errato anche se il secondo argomento, costituisce un gruppo vuoto che generalmente non dà nessun fastidio). In generale \chaptermark ricorre a \markboth usando solo il primo argomento per mettere il titolo e il numero del capitolo nella parte di sinistra del mark corrente; il comando \sectionmark mette il suo unico argomento nella parte di destra del mark corrente.

        I mark interni sono sostanzialmente tre: \topmark, \firstmark, e \botmark; ma l’utente finale non se ne accorge perché non li scrive direttamente. L’articolo suddetto spiega la loro funzione.

        Nelle testatine si usano invece i comandi \rightmark e \leftmark i quali sono definiti per prendere rispettivamente la seconda e la prima parte dei mark interni.

        Quindi se tu volessi mettere capitolo e sezione nella testatina di sinistra e la sola sezione nella testatina di destra (a che scopo? lo sai solo tu, e non entro nel merito), nella testatina di sinistra dovresti mettere qualcosa come [tt]\fancyhead[EL]{\leftmark}\fancyhead[ER]{\rightmark}[/tt] e nella testatina di destra [tt]\fancyhead[OC]{\rightmark}[/tt].

        Ma non pensare che sia così semplice; in ogni pagina i mark da dove \rightmark e \leftmark prelevano le loro informazioni non sono gli stessi; quindi la sezione indicata nella testatina di sinistra potrebbe essere diversa da quella indicata nella testatina di destra.

        I problemi che incontrerai se insisti a volere capitolo e sezione nella testatine di sinistra, saranno causati dalla lunghezza dei loro titoli; probabilmente le due informazioni si sovrapporranno assai spesso e il risultato sarà pessimo.

      • #79523
        Up
        0
        Down
        ::

        ned112″ post=78669Buongiorno, sono sempre sotto con la mia tesi e sto lavorando ad un’intestazione di pagina personalizzata con il pacchetto fancyhdr
        Quello che vorrei realizzare è di avere sulla pagina di sinistra (even) nella parte alta da un lato il capitolo e dall’altra la sezione. Mentre nella pagina di destra solo la sezione.
        Naturalmente nelle pagine even vuote andrebbe lasciato tutti bianco.
        Ho provato e riprovato, ma non mi viene… o meglio… viene ma certi capitoli non mostrano la parte riguardante il capitolo altri invece si.
        Credo di non capire bene il funzionamento di \markboth \markright e di alcuni elementi del comando \renewcommand
        Questa è la parte riguardante il preambolo…
        `
        \documentclass[12pt,a4paper,twoside]{report}
        \linespread{1.5}

        % Title Page
        \title{***}
        \author{***}

        \usepackage{algorithmicx}
        \usepackage{algorithm}
        \usepackage{algpseudocode}
        \usepackage{amsmath}
        \usepackage{textcomp}
        \usepackage{epstopdf}
        \usepackage{graphicx}
        \DeclareGraphicsExtensions{.pdf,.eps,.png}
        \usepackage{listings}
        \lstset{language=C++,showtabs=false,basicstyle=\scriptsize,showstringspaces=false,frame=lines,tabsize=1}
        \lstnewenvironment{MatlabEnv}[1][]
        {\lstset{language=Matlab,showtabs=false,basicstyle=\scriptsize,showstringspaces=false,frame=lines,tabsize=1,#1}}{}
        \usepackage{fancyhdr}
        \pagestyle{fancy}
        \renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
        \renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{}}
        %\fancyhf{}
        \fancyfoot[C]{\thepage}
        \fancyhead[RE]{\bfseries\chaptermark}
        \fancyhead[LO,RE]{\bfseries\sectionmark}
        `
        Con questo codice vedo solo la linea nera sopra… mhm 😕 😕 😕
        La cosa strana è che basta cambiare in \fancyhead[] alcuni argomenti… invertendo per esempio RE con LE per far apparire la parte riguardante la sezione, il capitolo però non si vede…
        Ho letto il pdf di speigazioni, ma continua a non essermi molto chiara la logica di uso dei comandi…
        Ringrazio in anticio chiunque mi vorrà aiutare

        Ovviamente nelle testatine non vanno né [tt]\chaptermark[/tt] né [tt]\sectionmark[/tt] di cui sai che sono comandi con un argomento!
        `\documentclass[12pt,a4paper,twoside]{report}

        \usepackage{fancyhdr}
        \pagestyle{fancy}
        \renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}}
        \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
        \fancyhf{}
        \fancyfoot[C]{\thepage}
        \fancyhead[R]{\bfseries\rightmark}
        \fancyhead[LE]{\bfseries\leftmark}
        \setlength{\headheight}{14.5pt}

        \usepackage{emptypage} % le pagine vuote sono vuote
        \usepackage{kantlipsum} % per scrivere un po' di pagine

        \begin{document}
        \chapter{Il mio titolo ha un certo numero di parole}
        \section{Questo titolo, invece ne ha qualcuna}
        \kant[2-8]
        \end{document}`
        Questa impostazione rispetta le tue richieste: nel settore di destra della testatina scrivo sempre il titolo della sezione, mentre solo nelle pagine pari scrivo, nel settore di sinistra, il titolo del capitolo.

        Compila l’esempio e vedrai il piccolo problemino. 🙂

        Direi che
        `\fancyhf{}
        \fancyfoot[C]{\thepage}
        \fancyhead[CO]{\bfseries\rightmark}
        \fancyhead[CE]{\bfseries\leftmark}`
        è la soluzione che cerchi. Oppure
        `\fancyhf{}
        \fancyfoot[C]{\thepage}
        \fancyhead[LO]{\bfseries\rightmark}
        \fancyhead[LE]{\bfseries\leftmark}`
        Eviterei invece
        `\fancyhf{}
        \fancyfoot[C]{\thepage}
        \fancyhead[RO]{\bfseries\rightmark}
        \fancyhead[LE]{\bfseries\leftmark}`
        perché lasceresti bianco in mezzo. Il modo più tradizionale, naturalmente, è
        `\fancyhf{}
        \fancyhead[LE,RO]{\thepage}
        \fancyhead[LO]{\bfseries\rightmark}
        \fancyhead[RE]{\bfseries\leftmark}`

        Non dimenticare di impostare [tt]\headheight[/tt] e il pacchetto emptypage

        Ciao
        Enrico

      • #79524
        Up
        0
        Down
        ::


        Il problema sembra essere che a volta mettendo capitolo e sezione sulla stessa pagina le due scritte si sovrappongono.
        In più si ripete l’indicazione del capitolo dato che appare tipo chapter 1 e 1.1 section.
        Io volevo quello schema perché mi piacerebbe che ci sia sempre in vista il capitolo, basta un ogni due pagine, e su ogni pagina sia indicata la sezione. Non so se è insensato, non sono esattamente un esperto di arte tipografica ed impaginatoria!
        Domanda: cos’è \kantlipsum? lo tengo? lo tolgo?
        Per metodo tradizionale intendi quello tradizionalmente usato nelle tesi? Anche a carattere tecnico (ingegneria)?

      • #79525
        Up
        0
        Down
        ::

        ned112″ post=78676Il problema sembra essere che a volta mettendo capitolo e sezione sulla stessa pagina le due scritte si sovrappongono.

        Appunto.

        ned112″ post=78676In più si ripete l’indicazione del capitolo dato che appare tipo chapter 1 e 1.1 section.

        😕

        ned112″ post=78676Io volevo quello schema perché mi piacerebbe che ci sia sempre in vista il capitolo, basta un ogni due pagine, e su ogni pagina sia indicata la sezione. Non so se è insensato, non sono esattamente un esperto di arte tipografica ed impaginatoria!

        Quanti elefanti entrano in una Cinquecento?

        Se non c’è spazio, non c’è.

        ned112″ post=78676Domanda: cos’è \kantlipsum? lo tengo? lo tolgo?

        Serve solo per produrre il testo fittizio. Suppongo che per una tesi non sia così utile. 🙂 Anche se … 🙂

        ned112″ post=78676Per metodo tradizionale intendi quello tradizionalmente usato nelle tesi? Anche a carattere tecnico (ingegneria)?

        È comune in molti manuali e testi tecnici.

        Ciao
        Enrico

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

    Go to top