Chapter 10 Hauts et bas de pages
Une jolie mise en page passe par la réalisation des entêtes
et des pieds de pages. On peut y intégrer les numéros de pages, des
informations concernant l'auteur, un renvoi du titre du chapitre ...
bref tout ce qui donne un aspect professionnel à votre document.
10.1 Comment définir les hauts et bas de page ?
-
Remarque :
- lorsque le haut ou bas de page défini est trop grand
on voit apparaître des messages d'erreur du style "Overfull
\vbox". Il faut alors redimensionner la longueur
correspondante.
- Exemple
- (dans le préambule) :
-
\addtolength{\headheight}{1.5pt}
%%%% fin exemple %%%%
Par défaut, LATEX offre la numérotation des pages en bas de page
(style plain). Mais, il propose également 3 autres styles de mise
en page. Il s'agit des styles :
-
empty (hauts et bas de pages vides),
- headings(la numérotation des pages apparaît en haut ainsi que différentes
informations suivant la classe de document), et
- myheadings (les commandes \markboth et \markright
permettent de définir les informations qui devront apparaître dans
le haut de page. \markboth{entête gauche}{entête
droite} s'utilise pour un document recto-verso alors que \markright{entête}
s'applique à toutes les pages d'un document en simple recto).
L'appel d'un style pour tout le document se fait via la commande \pagestyle{style}.
La commande \thispagestyle{} permet d'appeler un
style sur une page particulière.
-
Remarque :
- malgré une déclaration globale de style de page, il se
peut que des déclarations locales de style soient également nécessaires,
puisque certaines commandes LATEX réinitialisent le style de la
page sur laquelle elles apparaissent.
Le package 'fancyheadings', de P. van Oostrum, est disponible sur
ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/fancyheadings/.
Il est compatible LATEX2.09 et LATEX 2e. Il permet de définir
des entêtes et des pieds de page relativement facilement. La définition
des pages spéciales se fait par : \thispagestyle{xxx}
ou xxx peut être fancy (utilise les définitions ci-dessous sur une
page en respectant le style plain pour les autres ), plain (style
TeX) ou fancyplain(permet de redéfinir le style plain et donc de
disposer de deux styles : fancy et plain). L'application d'un style
à toutes les pages d'un document s'obtient par \pagestyle{nom_style}.
Les macros principales sont :
-
pour les entêtes
-
\lhead[paire gauche]{impaire gauche}
- \rhead[paire droit]{impaire droit}
- \chead{centre}
- pour les pieds de page
-
\lfoot[paire gauche]{impaire gauche}
- \rfoot[paire droit]{impaire droit}
- \cfoot{centre}
On distingue les styles fancy et plain par :
-
\lhead[\fancyplain{paire gauche plain}{paire gauche fancy}]
{\fancyplain{paire gauche plain}{paire gauche fancy}}
Le style par défaut est alors plain.
Ce package définit quatre nouvelles longueurs :
-
\headrulewidth
- \footrulewidth
- \plainheadrulewidth
- \plainfootrulewidth
-
Exemple :
-
-
\documentclass{article}
\usepackage{fancyheadings}
\pagestyle{fancy}
\usepackage{graphicx}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rfoot{\leftmark\\\rightmark}
\lhead{\includegraphics[width=0.5cm]{foobar.ps}}
\begin{document}
\section{Première section.}
Intro.
\subsection{Sous-section.}
Texte.
\end{document}
%%%% fin exemple %%%%
-
Remarque :
- sur certaines pages où le style de page est réinitialisé
par certaines commandes (telles que \tableofcontents),
il faut repréciser le style voulu via la commande \thispagestyle.
- Exemple :
-
-
\addtocontents{toc}{\protect\thispagestyle{fancyplain}}
%%%% fin exemple %%%%
Le package 'fancyhdr' est le successeur du package 'fancyheadings'
pour LATEX 2e. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fancyhdr/.
10.2 Comment obtenir une note de bas de page ?
La commande \footnote{texte} permet très
facilement d'obtenir des notes de bas de page sans se préoccuper de
leur mise en page.
Le package 'ftn' disponible sur CTAN dans ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/
permet d'étendre la commande footnote à tous les environnements
non flottants.
10.3 Comment mettre les notes de bas de page en fin de document ?
Le package 'endnotes', de J. Lavagnino, disponible sur CTAN permet
de faire cela.
10.4 Comment réduire les rappels de titres dans un haut ou bas de page
?
Pour éviter que des titres trop longs n'apparaissent dans les entêtes
ou les pieds de pages, il suffit de passer un titre plus court en
option des commandes de structuration de document.
-
Remarque :
- dans ce cas, ce sont les titres courts qui apparaîtront
dans la table des matières.
- Exemple :
-
-
\documentclass{article}
\usepackage{fancyheadings}
\pagestyle{fancy}
\usepackage{graphicx}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rfoot{\leftmark\\\rightmark}
\lhead{\includegraphics[width=0.5cm]{foobar.ps}}
\begin{document}
\section[Titre résumé.]{Un titre trop long pour les rappels.}
Intro.
\subsection{Sous-section.}
Texte.
\end{document}
%%%% fin exemple %%%%
10.5 Comment référencer une note de bas de page ?
Il suffit simplement de définir un label à l'intérieur de la commande
\footnote et de la référencer par \ref.
-
Exemple :
-
-
bla bla bla\footnote{Notons que ce bla l\`a est diff\'erent des
pr\'ec\'edents\label{footnote-bla}}...
[...]
..., comme l'indique la note\ref{footnote-bla}, ...
%%%% fin exemple %%%%
10.6 Comment supprimer la numérotation des pages ?
Pour supprimer la numérotation des pages, il faut utiliser la commande
\pagestyle{empty}. Si elle ne suffit pas, il faut
en plus utiliser \thispagestyle{empty} sur les pages
où la numérotation subsiste. Ce comportement se justifie par le fait
que certaines commandes comme \tableofcontents ou \chapter
réinitialisent le style de page sur laquelle ils apparaissent.
On peut également redéfinir le style plain à empty \let\ps@plain=\ps@empty.
Le package 'nopageno' de D. Carlisle, disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/carlisle/,
de supprimer la numérotation de toutes les pages même celles qui réinitialisent
le style de page.
10.7 Comment numéroter les pages par rapport à la dernière ?
Pour pouvoir référencer les pages d'un document par rapport à la dernière
page (e.g. page 54/345), il faut utiliser le package 'lastpage' (disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/lastpage/).
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\usepackage{lastpage}
\makeatletter
\renewcommand{\@evenfoot}%
{\hfil \upshape page {\thepage} de \pageref{LastPage}}
\renewcommand{\@oddfoot}{\@evenfoot}
\makeatother
\begin{document}
Texte.
\end{document}
%%%% fin exemple %%%%
Si l'on ne dispose pas du package 'lastpage', on peut définir ce label
"à la main" en ajoutant \label{LastPage}
juste avant \end{document} ou encore en utilisant
la commande \AtEndDocument{\label{LastPage}}
dans le préambule du document.
10.8 Comment supprimer le trait de séparation des notes de bas de page
?
Il suffit de mettre dans le préambule :
-
\renewcommand{\footnoterule}{}
10.9 Comment modifier la numérotation des pages ?
Il faut modifier la commande \thepage.
-
Exemple (P. van Oostrum) :
-
-
\documentclass{report}
\usepackage{french}
\makeatletter
\renewcommand{\thepage}{\thechapter-\arabic{page}}
% chapter-page numbering
\@addtoreset{page}{chapter}
% reset page number when chapter is stepped
% The next magic makes the page counter be reset to one rather
% than zero
\def\@stpelt#1{\global\csname c@#1\endcsname
\expandafter\ifx \csname#1\endcsname \page
\@ne
\else
\z@ \fi}
\makeatother
\begin{document}
\chapter{Introduction}
Texte.
\end{document}
%%%% fin exemple %%%%
Il existe également le package ci-dessous de A. Kielhorn.
-
%%%% debut macro %%%%
%%
%% This is page-per-chapter-package
%% version 2.0
%%
%% Don't use it with refrep!
%% Refrep has these commands already implemented
%%
%% This version forces openright!!
%%
%% Index-commands should work in chapters and appedices,
%% they will not work as expected in the preface when the
%% pagenumbering is not arabic. (MakeIndex can't sort roman-
%% numbers)
%%
%% Bugs:
%% The index is sortet according to the pagenumber
%% without looking at the chapternumber.
%% I don't think MakeIndex could handle that.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pagepc}[1995/05/13]
\@ifundefined{chapter}
{\PackageError{pagepc}{%
You can't number your pages per chapter\MessageBreak when you
have no chapters
}{%
Use ``report'' or ``book'' instead.
}
}%
{}
%% Reset the pagecounter to 1 at the start of a new chapter
%%
\let\ppchapter=\@chapter
\def\@chapter{\if@pageperchapter\setcounter{page}{1}\fi
\ppchapter}
%% Force a pagebreak at the start of the appendix, otherwise
%% the number of the page right before the appendix comes
%% out wrong
%%
\let\ppappendix=\appendix
\def\appendix{\if@pageperchapter\newpage\fi\ppappendix}
\newif\if@pageperchapter \@pageperchapterfalse
%% This command enables Page-per-Chapter, it is *not* on by
%% default to allow roman pagenumbers in the preface
%% (see sample-document)
%%
\newcommand{\pageperchapter}
{\@pageperchaptertrue
\@openrighttrue
% Remember old setting for chapter 0 = preface
\let\ppthepage=\thepage
% The new number needs more space
\renewcommand\@pnumwidth{2.55em}
% Here it comes :-)
\renewcommand\thepage{%
\ifnum \c@chapter = \z@
\ppthepage
\else
\thechapter\ -- \arabic{page}
\fi
}
}
%% This is a hack to make MakeIndex happy :-(
%% You can't use the |-form of an indexentry because
%% it is used to store the chapternumber.
%%
\def\@wrindex#1{%
\ifnum \c@chapter = \z@
\protected@write\@indexfile{}%
{\string\indexentry{#1}{\arabic{page}}}%
% The above is wrong if pagenumbering!=arabic,
% but I think this is better than nothing.
\else
\protected@write\@indexfile{}%
{\string\indexentry{#1|ppc{\thechapter}}{\arabic{page}}}%
\fi
\endgroup
\@esphack
}
%% This prints the pagenumber in the index
%%
\def\ppc#1#2{#1 -- #2}
\endinput
%%%% fin macro %%%%
Pour changer la valeur du compteur de page, il suffit d'utiliser :
10.10 Comment supprimer les entêtes et bas de page de pages vierges ?
Lorsqu'on utilise l'option 'openright' pour faire débuter un nouveau
chapitre sur une page de droite dans un document recto-verso, pour
ne pas afficher les entêtes et bas de page sur une page de gauche
restée vierge, on peut utiliser la commande suivante (cf. LATEX
Companion) :
-
\newcommand{\clearemptydoublepage}{%
\newpage{\pagestyle{empty}\cleardoublepage}}
Il est alors nécessaire d'utiliser cette commande avant la commande
\chapter.
10.11 Comment gérer des en-têtes avec des environnements verbatim multi-pages
?
Le problème consiste à inclure un fichier avec la commande \input
dans un haut ou bas de page alors que le corps du document comprend
des environnements verbatim qui s'étalent sur plus d'une page. Dans
ce cas, LATEX au lieu d'interpréter la commande \input
fait un copier-coller du contenu du fichier appelé par la commande
\input (c'est comme s'il était en mode verbatim au
moment de traiter le \input).
La solution consiste à utiliser une boîte via \savebox.
-
Remarque :
- cela ne marche que si les informations à imprimer ne
varient pas au fil des pages.
- Exemple :
-
-
\newsavebox{\logo}
\savebox{\logo}[2cm][c]{\input{logo-late.pstex_t}}
%%%% fin exemple %%%%
10.12 Comment utiliser \footnote dans un titre ?
Il faut utiliser la commande \protect.
-
Exemple :
-
-
\section{Titre de section\protect\footnote{Commentaire sur
ce titre.}.}
%%%% fin exemple %%%%
ATTENTION : le problème dans ce cas est que la note apparaîtra aussi
bien dans l'en-tête si l'en-tête rappelle le titre des sections que
dans la table des matières. Pour supprimer ces apparitions il faut
alors utiliser la même technique que pour les titres résumés :
-
\section[foo]{foo\protect\footnote{foooo}}
Il existe également le package 'stblftnt' de R. Fairbairns disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
qui gère le problème énoncé ci-dessus sans avoir à réécrire tout le
titre.
10.13 Comment placer les notes de bas de page les unes à côté des autres
?
Il faut utiliser le package 'footnote', de R. Fairbairns, disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/
avec l'option para :
-
\usepackage[para]{footmisc}.
10.14 Comment réinitialiser le compteur de note de bas de page à chaque
page ?
Il faut utiliser le package 'footnote', de R. Fairbairns, disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnote/
avec l'option perpage :
-
\usepackage[perpage]{footnote
Le package 'footnpag' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footnpag/
permet également de faire cela.
10.15 Comment modifier le style des notes de bas de page ?
Le package 'footmisc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/footmisc/
permet de définir son propre style de note de bas de page.
Le package 'ftnright' de F. Mittelbach redéfinit le placement des
notes de bas de page dans un document multi-colonnes. Lors de l'utilisation
de ce package, les notes de bas de page appelées dans une page seront
réunies et placées à la fin de la dernière colonne de cette page.
-
Remarque :
- Lorsque plusieurs packages sont utilisés simultanément
dans un même document, ftnright doit, si possible, être appelé en
dernier.
10.16 Comment utiliser le mode verbatim dans une note de bas de page ?
Par défaut, le mode verbatim n'est pas accessible dans une note de
bas de page (et de manière générale inutilisable dans un argument
d'une autre commande).
-
On peut alors le forcer par :
-
\DeclareRobustCommand\espacement{{\fontencoding{OT1}
\selectfont \texttt{\char32}}}
-
\tt sous LaTeX2.09
\texttt sous LaTeX2e
10.17 Comment éviter qu'une note de bas de page s'étale sur plusieurs pages
?
La commande \samepage peut permettre de forcer LATEX
à ne pas couper le contenu d'une note de bas de page.
-
Exemple sans la commande :
-
-
Texte texte texte (1). Texte texte texte (2). Texte texte texte
(3). Texte texte texte (4). Texte texte texte (5). Un autre
texte\footnote{Un long long long long long long long long long
long long long long long long long long long long long long long
long long long long long long long long long long long long long
long long long long long commentaire sur cet autre texte.}.
Texte texte texte (6). Texte texte texte (7). Texte texte texte
(8). Texte texte texte (9). Texte texte texte (10). Texte texte
texte (11). Texte texte texte (12). Texte texte texte (13).
Texte texte texte (14). Texte texte texte (15). Texte texte
texte (16). Texte texte texte (17). Texte texte texte (18).
Texte texte texte (19). Texte texte texte (20). Texte texte
texte (21). Texte texte texte (22).
%%%% fin exemple %%%%
-
Exemple avec :
-
-
Texte texte texte (1). Texte texte texte (2). Texte texte texte
(3). Texte texte texte (4). Texte texte texte (5). Un autre
texte\samepage\footnote{Un long long long long long long long
long long long long long long long long long long long long long
long long long long long long long long long long long long long
long long long long long long long commentaire sur cet autre
texte.}. Texte texte texte (6). Texte texte texte (7). Texte
texte texte (8). Texte texte texte (9). Texte texte texte (10).
Texte texte texte (11). Texte texte texte (12). Texte texte
texte (13). Texte texte texte (14). Texte texte texte (15).
Texte texte texte (16). Texte texte texte (17). Texte texte
texte (18). Texte texte texte (19). Texte texte texte (20).
Texte texte texte (21). Texte texte texte (22).
%%%% fin exemple %%%%
On peut également utiliser une \parbox mais cela peut
modifier la structure de la page (empiètement du bas de page).
-
Exemple :
-
-
\footnote{\parbox[t]{0.94\linewidth}{This is a footnote ...}
%%%% fin exemple %%%%
L'emploi de la commande \enlargethispage peut également
suffire.
Une solution plus globale (et non pas au cas par cas comme les solutions
précédentes) consiste à redéfinir la pénalité associée à \interfootnotelinepenalty.
Cela permet de relâcher le critère de beauté associé au placement
des bas de page.
-
Exemple :
-
-
Mettre dans le préambule \interfootnotelinepenalty=10000.
%%%% fin exemple %%%%
-
Remarque :
- \raggedbottom permet en plus à LATEX
de ne pas s'inquiéter si le corps de la note n'apparaît pas sur la
même page que son appel.