Previous Contents Next

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 :

  1. empty (hauts et bas de pages vides),
  2. headings(la numérotation des pages apparaît en haut ainsi que différentes informations suivant la classe de document), et
  3. 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 :

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 :

  1. \headrulewidth
  2. \footrulewidth
  3. \plainheadrulewidth
  4. \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 :

\setcounter{page}{17}.

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).

\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.

Previous Contents Next