TeX e LaTeX.
Lo stile di pagina

LaTeX mette a disposizione quattro tipi di stili di pagina: empty, plain, headings e myheadings. Per passare da uno all'altro bisogna usare il comando \pagestyle{...} oppure \thispagestyle{...} per cambiare lo stile di una singola pagina.

Quando si vogliono fare cose più complesse o che in genarale non rientrono negli stili precedenti la scelta obbligata è usare il pacchetto fancyhdr. Se però usate la classe memoir avete a disposizione ulteriori stili di pagini predefiniti (principalmente ruled e Ruled). Inoltre memoir stessa permette di modificare lo stile di pagina senza usare fancyhdr. Per la documentazione su questo aspetto di memoir, consultate la guida ufficiale e questo articolo in cui vengono mostrati tutti gli stili predefiniti a disposizione e dove viene spiegato semplicemente come creare il proprio stile personalizzato.

Ora (2011) esiste anche il pacchetto titleps, a mio parere migliore di fancyhdr e più facile da usare oltre che più potente.

Il pacchetto fancyhdr

Ogni classe ha uno stile di pagina predefinito che può cambiare in automatico in qualche particolare circostanza, per esempio la classe book ha come stile di pagina di default lo stile headings ma le pagine dove comincia un capitolo hanno lo stile plain.

fancyhdr definisce un nuovo stile chiamato fancy completamente personalizzabile. Di default questo stile ha il seguente aspetto, dove n è il numero della pagina, notare l'orribile 0 nei capitoli non numerati (chapter* o frontematter). La colpa però è delle classi standard, non di fancyhdr.

%%% pagine destre %%%
CHAPTER 0.   PROVA                          0.1.   PROVETTA
-----------------------------------------------------------

testo...

-----------------------------------------------------------
                            n
							
							
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
							
							
%%% pagine sinistre %%%
0.1.   PROVETTA                          CHAPTER 0.   PROVA
-----------------------------------------------------------

testo...

-----------------------------------------------------------
                            n
							

Con il seguente codice si otterrà quindi il layout visto sopra per tutte quelle pagine senza uno stile speciale. Le pagine di inizio capitolo continueranno ad avere lo stile plain e la pagina del titolo lo stile empty, stili che vengono lasciati inalterati da fancyhdr.

\documentclass{...}
...
\usepackage{fancyhdr}
\pagestyle{fancy}
...
\begin{document}
...
\end{document}

Se si vuole modificare lo stile fancy, e solitamente è così, bisogna usare tutta una serie di comandi appositi DOPO che è stato dato il comando \pagestyle{fancy}, altrimenti le nostre impostazioni verranno sovrascritte da quelle di default richiamate dal comando \pagestyle{fancy}.

Per definire altri stili di pagina il pacchetto fancyhdr mette a disposizione il comando fancypagestyle per creare degli stili personalizzati. Per funzionare correttamente in alcune circostanze, è altamente raccomandato di caricare lo stile fancy di base sui cui poi si faranno le modifiche. Esempio:

\fancypagestyle{pippo}{%
\pagestyle{fancy}
% caratteristiche dello stile pippo
...
}

Per richiamare lo stile così definito, bisogna usare il solito comando \pagestyle{pippo}. Il comando fancypagestyle può anche essere usato per ridefinire gli stili di pagina già esistenti, a parte lo stile fancy.

Comandi di fancyhdr: \fancyhead[...]{...}, \fancyfoot[...]{...} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt}. Even (E), Odd (O), Left field (L), Center field (C), Rigth field (R).

Questo lo stile di default:

\fancyhead[LE,RO]{\slshape\rightmark}
\fancyhead[LO,RE]{\slshape\leftmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}

Larghezza testatine è regolata dai comandi \fancyheadoffset[place]{lunghezza}, \fancyfootoffset[place]{lunghezza} e \fancyhfoffset[place]{lunghezza}. Su può usare solo E, O, L, R. Questi comandi sono utile per esempio se si vuole mettere il numero di pagina delle testatine fuori la linea esterna della colonna del testo.

Per controllare lo stile delle pagine fatte solamente da oggetti mobili si ha a disposizione il comando \iffloatpage{valueforfloatpage}{valueforotherpages} da usarsi dentro i comandi \fancyhead e \fancyfoot o dentro i renewcommand per settare, per esempio, la spessore della linea della testatina a zero per le pagine flottanti.

Per ulteriori dettagli vedere il manuale di fancyhdr.

Anche in fancyhdr quando si definisce lo stile per un documento fronte retro e poi si usa lo stesso stile per un documento solo fronte, lo stile di pagina usato è quello delle pagine destre, cioè quelle dispari che contengono il nome della sezione più elevata in grado.

In LaTeX

Marcatori a livello TeX
\firstmark mark di inizio pagina
\topmark è uguale al botmark della pagina precedente
\botmark mark di fine pagina
contengono il titolo breve dei comandi chapter e section oppure
section e subsection.


Macro a livello LaTeX interno
\@oddhead (contenuto delle testatine di destra, dispari)
\@evenhead (contenuto delle testatine di sinistra, pari)
Queste due macro usano \rightmark, \leftmark, \thepage, ecc...
\@oddhead viene usato per tutte le pagine quando si stampa solo fronte


Marcatori a livello LaTeX
\leftmark (higher level, solitamente contiene solo il nome del capitolo o sezione)
\rightmark (lower level, solitamente contiene solo il nome della sezione o sottosezione)
\markboth{leftmark}{rightmark}
\markright{rightmark}
I comandi markboth e markright servono per settare leftmark e rightmark e
vengono chiamati automaticamente dai comandi di sezionamento (in realtà
vengono richiamati dai comandi \chaptermark, \sectionmark e \subsectionmark).
Si possono anche chiamare esplicitamente.


\thechapter contiene il numero del capitolo
\chaptername contiene la parola "Capitolo" (o simili)
\chaptermark comando "wrapper" che viene usato solamente per richiamare
             markboth. Accetta come unico argomento il titolo del capitolo
             che solitamente gli viene passato dai comandi di sezionamento.
             
\thesection contiene il numero della sezione
\sectionname contiene la parola "Sezione" (o simili)
\sectionmark comando "wrapper" che viene usato solamente per richiamare
             markboth o markright. Accetta come unico argomento il titolo della
             sezione che solitamente gli viene passato dai comandi di
             sezionamento.
            
\thesubsection contiene il numero della sottosezione
\sectionname contiene la parola "Sottosezione" (o simili)
\subsectionmark comando "wrapper" che viene usato solamente per richiamare
             markright. Accetta come unico argomento il titolo della sottosezione
             che solitamente gli viene passato dai comandi di sezionamento.
            

Il pacchetto titleps

Il pacchetto titleps ha lo stesso campo di applicazionedi fancyhdr anche se ha una sintassi più chiara e funzionale. È una "costola" del pacchetto titlesec.

\usepackage{titleps}

\newpagestyle{main}[\small\bfseries]{%
\sethead[\thepage][][\thesection\ \sectiontitle]
{\thechapter.\ \chaptertitle}{}{\thepage}
\headrule}

\pagestyle{main}