\documentclass[a4paper, draft]{article}
\usepackage[latin1]{inputenc}%Ajout traduction Fr
\usepackage[T1]{fontenc}%Ajout traduction Fr
\usepackage{lmodern}%Ajout traduction Fr
\usepackage{multicol}
\usepackage{float}
\usepackage{makeidx}
\usepackage{layout}
\usepackage{array}
\usepackage{a4wide}
\usepackage{boxedminipage}
\makeindex
\title{Style de  page avec \LaTeX}
\author{Piet van Oostrum\thanks{une considérable partie de cet article a été écrite
		par  George Gr\"atzer (University of Manitoba) dans \emph{Notices Amer. Math. Soc.}
		Merci George !}\\
	Dept.\ of Computer Science\\
	Utrecht University}
\date{2 mars 2004}%Ajout traduction Fr, date du doc sur CTAN
\def\latex/{\protect\LaTeX{}}
\def\tex/{\TeX}
\def\ams/{\protect\pAmS}
\def\pAmS{{\the\textfont2
        A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
\def\amslatex/{\ams/-\latex/}
\newcommand{\PSNFSS}{{\sf PSNFSS}}
\newcommand{\bs}{\symbol{'134}}
\newcommand{\Cmd}[1]{\texttt{\def\{{\char`\{}\def\}{\char`\}}\bs#1}}
\newcommand{\CmdIndex}[1]{\index{#1@\texttt{\bs#1}}}
\newcommand{\TTindex}[1]{\index{#1@\texttt{#1}}}
\newcommand{\PSindex}[1]{\index{style de page!#1@\texttt{#1}}}
%\floatstyle{ruled}
%\restylefloat{figure}Ajout traduction FR, mis en commentaire pour Fr
\renewcommand{\topfraction}{0.9}
\renewcommand{\bottomfraction}{0.9}
\renewcommand{\textfraction}{0.05}
%\setlength{\parindent}{0pt}%Ajout traduction FR, mis en commentaire pour Fr
\setlength{\parskip}{1ex}
\setlength{\emergencystretch}{4em}
%\addtolength{\textheight}{-0.5in} % make it print better on US letter paper %mis en commentaire pour Fr
\makeatletter
\renewcommand\l@section      {\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother
\newenvironment{block}{\vspace{3pt}\begin{minipage}{\textwidth}}{\end{minipage}\vspace{6pt}}
%\newenvironment{block}{\vspace{8pt}\begin{minipage}{\textwidth}}{\end{minipage}\vspace{8pt}}
\newenvironment{fblock}{\vspace{3pt}\begin{center}\begin{boxedminipage}{\textwidth}}{\end{boxedminipage}\end{center}\vspace{6pt}}
%\newenvironment{fblock}{\vspace{8pt}\begin{boxedminipage}{\textwidth}}{\end{boxedminipage}\vspace{8pt}}%Original, changement pout trad. Fr
\usepackage[frenchb]{babel}%Ajout traduction Fr
\AddThinSpaceBeforeFootnotes%Ajout traduction Fr
\FrenchFootnotes%Ajout traduction Fr


\begin{document}
\maketitle

\begin{abstract}
Cet article décrit comment adapter la disposition des éléments d'une page pour vos documents
\latex/, c.-à-d. comment changer : les dimensions des marges, les en-têtes
et les pieds~de~page ainsi que le placement approprié des figures et des tables
--~appelées~flottants~-- sur la page.
À l'origine c'était la documentation du package \textsf{fancyheadings}.
Elle contenait également d'autres informations, par exemple sur l'utilisation avancée des marqueurs.
Elle a maintenant été améliorée pour inclure notamment la manipulation des flottants.
La documentation de fancyheadings a été améliorée pour se conformer à la version~2
de ce package\footnote{cette version a du bénéficier d'une mise à jour maintenant.}.
Pour des raisons de compatibilité avec certains systèmes d'exploitation,
le nom du package a été à changé en \textsf{fancyhdr}.

Bien que cet article utilise les commandes de \LaTeXe{}, la plupart des techniques peuvent
être employées avec des versions plus anciennes de \latex/
en effectuant quelques changements \bigskip appropriés.

\noindent \textsl{\textbf{Notes de traduction.}} \qquad Ce texte est une traduction de la documentation
du package \textsf{fancyhdr}, le titre original en est \og Page layout in \LaTeX \fg.
\begin{center} Merci beaucoup à \bsc{Piet van Oostrum} pour cette extension et sa documentation.\end{center}
\quad L'expression \emph{Style de page}
en \latex/ s'applique au formatage des en-têtes et pieds~de~pages
et non pas à l'ensemble de la page comme dans d'autres logiciels.
Cependant, dans cette documentation de \textsf{fancyhdr}, \bsc{Piet van Oostrum} fournit aussi des informations
sur le placement des flottants. 
\quad Lorsqu'une information due à la traduction, ou une précision, est rajoutée, elle apparait
en note de bas de page précédée de \og N.D.T. :\fg.
\quad Le terme \emph{package} n'est pas traduit dans ce document,
dès que l'on essaye \latex/ il apparait, j'ai donc pris l'option de le conserver tel quel.
\quad Pour le préambule, adapté au français, des exemples voir dans la section~\ref{sec:class}.
\quad Cette traduction essaye de respecter la nouvelle (depuis 1990 quand même !) orthographe.
\end{abstract}

\tableofcontents

\section{Introduction}
\label{sec:intro}

Une page dans un document \latex/ est construite avec diverses zones décrites
par la figure \ref{fig:layout}. 
\begin{figure}[htbp]
  \begin{center}
    \leavevmode
    \layout
    \vspace{3cm}
    \caption{Zones composant une page. Les valeurs indiquées sont celles en cours dans
					ce document et non pas des valeurs par défaut.}
    \label{fig:layout}
  \end{center}
\end{figure}
%\thispagestyle{fancy}
\thispagestyle{plain}

Le corps de la page contient le texte principal du document
ainsi que les éventuels flottants, tables et figures.

Les pages sont construites par la routine de sortie de \LaTeX{}, qui est complexe
et ne devrait donc pas être modifiée. Certains des packages décrits dans cet article
contiennent de petites modifications de cette routine pour accomplir
ce qui ne peut être réalisé d'une autre manière. Vous devriez employer ces packages
pour obtenir le résultat désiré plutôt que de manipuler la routine de sortie vous-même.

Voici un certain nombre de points à retenir :
\begin{enumerate}
\item Les marges du côté gauche ne s'appellent pas \Cmd{leftmargin},
mais \Cmd{evensidemargin} (pour les pages paires) et \Cmd{oddsidemargin}
(pour les pages impaires). Dans les documents uniquement recto
\Cmd{oddsidemargin} est utilisé dans les deux cas.
\Cmd{leftmargin} est un paramètre valide de \latex/ mais lui a une utilisation différente
(notamment l'indentation des listes). 
\item La plupart des paramètres ne devraient pas être changés au milieu d'un document.
Quelques-uns pourraient perdurer suite à une modification de style et/ou page.
Si vous voulez changer la taille d'une seule page, vous pouvez employer
la commande \Cmd{enlargethispage}. 
\end{enumerate}

La zone des notes de marge contient de petites informations créées par la commande
\Cmd{marginpar}. Dans les documents recto-verso les notes de marge apparaissent
alternativement sur la gauche et la droite. Les notes de marge ne sont pas sur
des endroits fixes en ce qui concerne la page mais approximativement à la même hauteur
que le paragraphe dans lequel elles sont appelées. En raison de l'algorithme traitant
du placement des notes de marge, 
elles peuvent apparaitre malencontreusement -- dans un document recto-verso --
sur la mauvaise page si elles sont proches d'une coupure de page.
Si vous voulez mettre l'information à des endroits fixes dans les marges vous pouvez employer
la technique décrite dans les sections \ref{sec:pseudo-film} et \ref{sec:reperes}.

La première partie de cet article décrit comment changer les secteurs d'en-tête et
de pied~de~page. La dernière partie décrit comment positionner vos flottants de la manière désirée.

\section{En-têtes et pieds~de~page}

Les en-têtes et pieds~de~page sont définis avec \latex/ par les commandes
\Cmd{pagestyle} et \Cmd{pagenumbering}. La commande \Cmd{pagestyle}
définit l'aspect général des en-têtes et des pieds~de~page (par exemple où
le numéro de page sera imprimé), alors que \Cmd {pagenumbering}
définit le style du numéro de page.
\latex/ inclut quatre styles de page standards :

\noindent
\begin{tabular}{>{\tt}p{2cm}p{10cm}}
empty & vide, aucun en-tête ou pied~de~page \\
plain & pas d'en-tête, le pied~de~page contient le numéro de page centré \\
headings & pas de pied~de~page, l'en-tête contient le nom du chapitre/section
et/ou de sous-section et le numéro de page\\
myheadings & pas de pied~de~page, l'en-tête contient le numéro de page
et l'information fournie par l'utilisateur
\end{tabular}

Bien que ce soient des modèles utiles ils sont tout à fait limités. D'autres modèles
de style de page peuvent être obtenus en définissant des commandes de la forme \Cmd{ps@xxx}.
Cette commande est exécutée quand \Cmd{pagestyle\{xxx\}} est rencontrée dans le document.
La commande \Cmd{ps@xxx} définit les commandes 
suivantes pour les teneurs des en-têtes et des pied~de~page:

\noindent
\begin{tabular}{p{2cm}p{10cm}}
\Cmd{@oddhead} & en-tête sur les pages impaires dans des documents recto-verso
(sur toutes les pages dans les documents recto) \\
\Cmd{@evenhead} & en-tête sur les pages paires dans les document recto-verso \\
\Cmd{@oddfoot} & pied~de~page sur les pages impaires dans des documents recto-verso
(sur toutes les pages dans les documents recto) \\
\Cmd{@evenfoot} & pied~de~page sur les pages paires dans les documents recto-verso \\
\end{tabular}

Ce ne sont pas des commandes, mais plutôt des \og variables~\fg{} qui sont utilisées par 
la routine de sortie de \latex/.
Si les noms de commandes contiennent le caractère '\texttt{@}', elles doivent
être définies dans un package\footnote{N.D.T. : lui même appelé dans le préambule du document.},
ou autrement comprises entre les commandes \Cmd{makeatletter}
et \Cmd{makeatother} dans le préambule.

La commande \Cmd{pagenumbering} définit le style du numéro de page. Elle
prend un paramètre de la liste suivante : 

\noindent
\begin{tabular}{>{\tt}p{2cm}l}
arabic & chiffre arabe \\
roman & chiffre romain en minuscule \\
Roman & chiffre romain en capitale \\
alph & lettre en minuscule \\
Alph & lettre en capitale
\end{tabular}

La commande \Cmd{pagenumbering\{xxx\}} définit \Cmd{thepage} en mettant
le numéro de page comme défini par \texttt{xxx}. 
La commande de style de page inclut alors \Cmd{thepage} à la bonne place. De plus
la commande \Cmd{pagenumbering} réinitialise le numéro de page à~1.
Les commandes  \Cmd{pagestyle} et  \Cmd{pagenumbering} s'appliquent à la page
en construction, elles doivent donc être positionnées sans ambigüité
pour s'appliquer à la page voulue (voir la section~\ref{sec:changer} p.\pageref{sec:changer}).

\section{Qu'est ce que \textsf{fancyhdr} ?}

Le package de macrocommandes \textsf{fancyhdr} permet d'adapter facilement
vos en-têtes et pieds~de~page sous \latex/.  Vous pouvez définir :
\begin{itemize}
\item trois zones dans les en-têtes et pieds~de~page ;
\item des filets de séparation sous les en-têtes et au-dessus des pieds~de~page ;
\item une plus grande largeur pour les en-têtes et pieds~de~page que celle du texte ;
\item des en-têtes et pieds~de~page multilignes ;
\item différents en-têtes et pieds~de~page pour les pages paires et impaires ;
\item différents en-têtes et pieds~de~page pour les pages de titre de chapitre ;
\item différents en-têtes et pieds~de~page pour les pages de flottants.
\end{itemize}
Naturellement, vous avez également le contrôle complet des polices, de la casse, de la graisse, etc.

%%% \section{Where to get it?}\label{get}
%%% You only need the file \verb|fancyhdr.sty| which you can find at the
%%% \index{ftp}
%%% CTAN sites: \verb|ftp.shsu.edu| (U.S.), \verb|ftp.tex.ac.uk| (U.K.), et
%%% \verb|ftp.dante.de| (Germany).
%%% You will find it in the directory\\
%%% \verb|/tex-archive/macros/latex209/contrib/fancyhdr|. Although
%%% \textsf{fancyhdr}
%%% is a \latex/ 2.09 style file, it will work with \LaTeXe{}. Also this
%%% \TTindex{fixmarks.sty}
%%% \TTindex{extramarks.sty}
%%% article et the two packages \texttt{fixmarks} et \texttt{extramarks} can
%%% be found there. (The code for these packages given in this article is a
%%% simplified version.)

\section{Utilisation classique de \textsf{fancyhdr}}\label{sec:class}
Pour utiliser ce package dans un document \LaTeXe\, placez le fichier \verb|fancyhdr.sty|
dans un répertoire accessible\footnote{N.D.T. : en clair respectez
la \tex/ Directory Structure et les commandes de
mise à jour.} à \tex/,
et incluez dans le préambule de votre document après :
\begin{verbatim}
\documentclass{...}
\end{verbatim}%

les commandes\footnote{Pour \LaTeX{} 2.09 vous devriez indiquer \texttt{[fancyhdr]}
dans \Cmd{documentstyle} au lieu de la commande \Cmd{usepackage}.}:

\PSindex{fancy}
\begin{verbatim}
\usepackage{fancyhdr}
\pagestyle{fancy}
\end{verbatim}

Nous pouvons visualiser la disposition\footnote{N.D.T. : Ce n'est pas
le style par défaut de \texttt{fancy}, uniquement les éléments
créés par \texttt{fancyhdr.sty}} de page que nous créons avec \textsf{fancyhdr}
comme suit :

\begin{fblock}
\noindent\makebox[\textwidth]{en-tête gauche\hfill en-tête centre \hfill en-tête droit}
\noindent\makebox[\textwidth]{\hrulefill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hfill corps de texte\hfill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hrulefill}
\noindent\makebox[\textwidth]{pied~de~page gauche \hfill pied~de~page centre \hfill pied~de~page droit}
\end{fblock}

L'en-tête gauche et le pied~de~page gauche sont alignés à gauche ; 
l'en-tête centre et le pied~de~page centre sont centrés ; 
l'en-tête droit et le pied~de~page droit sont alignés à droite.

Nous pouvons définir chacun des six \og champs~\fg{} et les deux filets de séparation
séparément.

\subsection*{Précisions sur le préambule des exemples en français}
Pour pouvoir traduire les exemples de codes et de résultats
j'ai utilisé le préambule minimum suivant :
\begin{verbatim}
\documentclass{book}
\usepackage[latin1]{inputenc}% Saisie de caractères accentués directement.
\usepackage[T1]{fontenc}% Codage de sortie incluant les caractères accentués.
\usepackage{lmodern}% Fonte incluant les caractères accentués.
\usepackage{fancyhdr}
\pagestyle{fancy}
ICI les exemples de code
\usepackage[frenchb]{babel}% traduction des noms chapitre, section, etc.
\end{verbatim}

\section{Un exemple simple}
\label{sec:exemple}
H. Dupont écrit un rapport à J.-P. Martin intitulé \og La valeur des nouveaux diplômés~\fg{} avec
la disposition de page suivante :

\begin{fblock}
\noindent\makebox[\textwidth]{\hfill\bfseries La valeur des nouveaux diplômés}
\noindent\makebox[\textwidth]{\hrulefill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hfill corps du texte\hfill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hrulefill}
\noindent\makebox[\textwidth]{de : H. Dupont\phantom{3}\hfill
pour : J.-P. Martin\hfill \phantom{de : H. Dupont}3}
\end{fblock}
\noindent où \og 3~\fg{} est le numéro de page.
Le titre : \og La valeur des nouveaux diplômés~\fg{} est en gras.

Ceci est accompli par les commandes
suivant \Cmd{pagestyle\{fancy\}}%
\footnote{notez que la version 1 de fancyheadings utilise  la commande \Cmd{setlength}
pour changer les paramètres de \texttt{\bs...rulewidth}.} soit :
\CmdIndex{lhead}
\CmdIndex{rhead}
\CmdIndex{chead}
\CmdIndex{lfoot}
\CmdIndex{rfoot}
\CmdIndex{cfoot}
\CmdIndex{headrulewidth}
\CmdIndex{footrulewidth}
\begin{verbatim}
\lhead{}
\chead{}
\rhead{\bfseries La valeur des nouveaux diplômés}
\lfoot{de : H. Dupont}
\cfoot{pour : J.-P. Martin}
\rfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\end{verbatim}
(la macro \Cmd{thepage} donne le numéro de la page courante.
Utiliser \Cmd{bfseries} est une manière sous \LaTeXe{} d'obtenir les caractères en gras.)

C'est maintenant parfait sauf que la première page, en
utilisant \verb|\documentclass{article}| ou si vous démarrez par une section
(bizarre\ldots) dans les classes \verb|report| et \verb|book|\footnote{N.D.T.
: précisions rajoutées lors de la traduction.},
n'a pas besoin de tous ces en-têtes et pieds~de~page.  Pour éliminer tout sauf
le numéro de page, centré dans le pied~de~page :\CmdIndex{thispagestyle}

\begin{verbatim}
\thispagestyle{plain}
\end{verbatim}
Juste après \verb|\begin{document}| ou une autre alternative :
\begin{verbatim}
\thispagestyle{empty}
\end{verbatim}
si vous voulez l'en-tête et le pied~de~page vides.

Si vous utilisez \Cmd{maketitle} ce n'est pas utile, car la norme des classes \latex/  
définit la commande \Cmd{maketitle}
de telle sorte qu'elle appelle \Cmd{thispagestyle\{plain\}} automatiquement.
Donc si vous \emph{voulez} utiliser le style de fancy sur la page incluant \Cmd{maketitle}
il vous faut utiliser \Cmd{thispagestyle\{fancy\}}
juste après l'appel à \Cmd{maketitle}.

\section{Un exemple en impression recto-verso}\label{recto-verso}

\TTindex{recto-verso}
Plusieurs classes de documents, comme \verb|book.cls|, impriment en recto-verso par défaut,
les pages paires et impaires ont alors une présentation différente. D'autres classes de document
utilisent l'option \verb|twoside|  pour imprimer en recto-verso.

Maintenant imprimons le rapport en recto-verso.  Laissez la disposition de page
de la section~\ref{sec:exemple} pour les pages impaires (du côté droit) et
la suivante pour les pages paires (du côté gauche) :

\begin{fblock}
\noindent\makebox[\textwidth]{\bfseries La valeur des nouveaux diplômés\hfill}
\noindent\makebox[\textwidth]{\hrulefill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hfill corps du texte\hfill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hrulefill}
\noindent\makebox[\textwidth]{4\phantom{pour : J.-P. Martin}\hfill
de : H. Dupont\hfill \phantom{4}pour : J.-P. Martin}
\end{fblock}
\noindent où \og 4 \fg{} est le numéro de page.

Voici les commandes :
\begin{verbatim}
\fancyhead{} % vide l'en-tête
\fancyhead[RO,LE]{\bfseries La valeur des nouveaux diplômés}
\fancyfoot{} % vide le pied~de~page
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[LO,CE]{de : H. Dupont}
\fancyfoot[CO,RE]{pour : J.-P. Martin}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\end{verbatim}

\CmdIndex{fancyhead}
\CmdIndex{fancyfoot}
nous employons ici les commandes \Cmd {fancyhead} et \Cmd{fancyfoot}
sous leur forme non abrégée. 
Celles-ci ont un paramètre additionnel entre crochets indiquant pour quelles pages et/ou parties
de l'en-tête/pied~de~page elles s'appliquent. La première commande \Cmd{fancyhead} omet ce
paramètre, et s'applique ainsi à tous les champs d'en-tête.
Elle est utilisée en général pour se débarrasser des valeurs par défaut ou
d'une définition précédente, comme ici. De même \Cmd{fancyfoot} sans paramètre
(entre accolades) vide tous les champs du pied~de~page.
Dans cet exemple particulier il pourrait être omis puisque tous les champs du pied~de~page
sont ensuite remplis. Les sélecteurs qui peuvent être utilisés entre les crochets sont listés
dans la figure~\ref{fig:sel}. Ces sélecteurs peuvent être combinés,
ainsi \Cmd{fancyhead[LE,RO]\{texte\}} définira le champ pour l'en-tête gauche des pages paires
et l'en-tête droit des pages impaires. Si vous n'indiquez pas E ou O la définition s'applique aux deux.
De même pour L R et C. Ainsi l'utilisation de \Cmd{lhead} dans la section précédente
est juste l'abréviation de \Cmd{fancyhead[L]}.
Les sélecteurs peuvent être écrits en capitales ou en minuscules.

\CmdIndex{fancyhf}
Il y a également la commande plus générale \Cmd{fancyhf} que vous pouvez employer
pour combiner les caractéristiques des en-têtes et des pieds~de~page. Ceci uniformise les
H (en-tête) et F (pied~de~page). En fait \Cmd{fancyhead}
\Cmd{fancyfoot} équivalent à  \Cmd{fancyhf} avec H ou F spécifiés.
\begin{figure}[b]%[tb] en Gb [b] en Fr
  \begin{center}
    \leavevmode
    \begin{tabular}{|l|l|l|}
      \hline
      E & page paire	& Even page en anglais  \\
      O & page impaire & Odd page en anglais \\
      \hline
      L & champ gauche & Left field en anglais \\
      C & champ centre  & Center field en anglais \\
      R & champ droit & Right field en anglais \\
      \hline
      H & en-tête  & Header en anglais \\
      F & pied~de~page & Footer en anglais \\
      \hline
%%      T & float at Top      \\
%%      B & float at Bottom   \\
%%      F & Float page         \\
%%      \hline
    \end{tabular}
  \end{center}
  \caption{Sélecteurs}
  \label{fig:sel}
\end{figure}

Vous pouvez toujours utiliser
\Cmd{thispagestyle\{plain\}} pour obtenir le style classique en
première page.

\section{Redéfinition du style \texttt{plain}}\label{sec:replain}

Certaines commandes \latex/ , comme \Cmd{chapter} et \Cmd{maketitle}, 
emploient \Cmd{thispagestyle} pour commuter automatiquement au style de page \texttt{plain},
ignorant le style de page actuellement en cours.
Pour adapter même de telles pages vous devez redéfinir le style \texttt{plain}.
Comme nous l'avons déjà indiqué vous pourriez faire ceci en redéfinissant
la commande \Cmd{ps@plain}, mais \textsf{fancyhdr} fournit une manière plus simple
avec la commande \Cmd{fancypagestyle}. Celle ci peut être employée
pour redéfinir les styles de page existants (comme \texttt{plain}) ou pour en créer de nouveaux, 
par exemple si des parties de votre document nécessitent un style de page différent.
Cette commande a deux paramètres : le premier étant le nom du style de page à (re)définir, 
le second contenant les commandes changeant les en-têtes et/ou les pieds~de~page,
c.-à-d. \verb|fancyhead|, etc. Cela permet aussi les changements de \Cmd{headrulewidth}
et de \Cmd{footrulewidth}. 
À titre d'exemple nous allons redéfinir le style \texttt{plain} du rapport de
la section~\ref{recto-verso} en mettant le numéro de page en gras.
\PSindex{plain}
\begin{verbatim}
\fancypagestyle{plain}{%
\fancyhf{} % vide l'en-tête et le pied~de~page.
\fancyfoot[C]{\bfseries \thepage} % numéro de la page en cours en gras 
													  % et centré en pied~de~page.
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\end{verbatim}

\section{Le style par défaut}
\label{défaut}

Employons la classe de document \verb|book.cls| et les paramètres par défaut de
\textsf{fancyhdr}, nous utilisons alors seulement les commandes ;
\begin{verbatim}
\usepackage{fancyhdr}
\pagestyle{fancy}
\end{verbatim}
et laissons \textsf{fancyhdr} s'occuper de tout. Aux pages où les nouveaux chapitres débutent, nous obtenons un numéro de page centré dans le pied~de~page,
sans en-tête ni filet de séparation.

Sur les pages paires nous obtenons la disposition :

\begin{fblock}
\noindent\makebox[\textwidth]{\sl 1.2  \'EVALUATION\hfill
 CHAPITRE 1. INTRODUCTION}
\noindent\makebox[\textwidth]{\hrulefill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hfill corps du texte\hfill}\\[\baselineskip]
%\noindent\makebox[\textwidth]{\hrulefill}
\noindent\makebox[\textwidth]{\hfill4\hfill}
\end{fblock}

Sur les pages impaires nous obtenons la disposition :

\begin{fblock}
\noindent\makebox[\textwidth]{\sl CHAPITRE 1. INTRODUCTION\hfill
 1.2  ÉVALUATION}
\noindent\makebox[\textwidth]{\hrulefill}\\[\baselineskip]
\noindent\makebox[\textwidth]{\hfill corps du texte\hfill}\\[\baselineskip]
%\noindent\makebox[\textwidth]{\hrulefill}
\noindent\makebox[\textwidth]{\hfill3\hfill}
\end{fblock}

\noindent où le texte d'en-tête est en capitales inclinées.

Cette disposition par défaut est obtenue par les commandes suivantes :
\CmdIndex{rightmark}
\CmdIndex{leftmark}
\begin{verbatim}
\fancyhead[LE,RO]{\slshape \rightmark}
\fancyhead[LO,RE]{\slshape \leftmark}
\fancyfoot[C]{\thepage}
\end{verbatim}

Les paramètres suivants sont employés pour les filets de séparation :
\begin{tabbing}
\CmdIndex{headrulewidth}
\noindent \Cmd{headrulewidth}\qquad \qquad \qquad \=0.4\=pt\\
\CmdIndex{footrulewidth}
\Cmd{footrulewidth}\qquad \qquad \qquad \=0\=pt\\
%\Cmd{footrulewidth}\>0\>pt
\end{tabbing}

Le texte d'en-tête est transformé en majuscule dans tout \verb|book.cls|.

\section{Une exclusivité de \latex/, les marqueurs}\label{sec:custom}

Habituellement, pour des documents des classes \verb|book| et \verb|report|,
les intitulés de chapitre et de section apparaissent dans les en-têtes (chapitre seulement
pour l'impression recto) et pour des documents de classe \verb|article|,
ceux de section et subsection (section seulement pour l'impression recto).
 \latex/ utilise un mécanisme de marqueurs pour repérer les sectionnements
et leurs intitulés par page,
pour plus de détails consultez le \latex/ \emph{Companion}, section 4.3.1.

Il existe deux façons de manipuler les informations 
du sectionnement de niveau le plus élevé et de celui le plus bas dans une page. Les macros 
\CmdIndex{rightmark}
\CmdIndex{leftmark}
\Cmd{leftmark}(niveau-haut) et \Cmd{rightmark} (niveau-bas) contiennent les informations
utilisées par \latex/ et elles sont utilisables directement comme montré dans la section~\ref{défaut}.

Le marqueur \Cmd{leftmark} contient l'argument de gauche (principal) du \emph{dernier}
\Cmd{markboth} de la page. Le marqueur \Cmd{rightmark} contient l'argument de droite (secondaire)
du \emph{premier} \Cmd{markboth} ou le seul argument du 
\emph{premier} \Cmd{markright} de la page. Si aucune marque n'est présente
dans une page elles sont \og héritées~\fg{} de la page précédente.

Vous pouvez moduler la façon dont les informations de chapitre, de section et de sous-section
(seulement deux d'entre elles !) sont affichées en redéfinissant les commandes
\CmdIndex{chaptermark}
\Cmd{chaptermark},%
\CmdIndex{sectionmark}
\CmdIndex{subsectionmark}
\Cmd{sectionmark} et \Cmd{subsectionmark}\footnote{Il existe les commandes similaires
 pour \texttt{paragraph} et \texttt{subparagraph} mais elles sont rarement utilisées.}.
Vous devez créer ces redéfinitions après le premier appel de \Cmd{pagestyle\{fancy\}}
puisque celui-ci leur donne des valeurs par défaut.

Illustrons ceci avec l'information de chapitre. Elle se compose de trois parties :
\begin{itemize}
\CmdIndex{thechapter}
\item  le nombre (ici 2), affiché par la macro \Cmd{thechapter}
\item  le nom (en français ; chapitre), affiché par la macro
\CmdIndex{chaptername}
   \Cmd{chaptername}
\item  le titre, stocké dans l'argument de
   \Cmd{chaptermark}.
\end{itemize}

La figure~\ref{fig:markers} affiche plusieurs variantes de \og chapitre 2. \ À faire de suite~\fg.
Le signe \% à la fin des lignes est pour éviter les espaces non voulus.
Si vous écrivez tout sur la même ligne il faut \^{o}ter ces signes \% 
\footnote{La commande \texttt{\bs MakeUppercase} est utilisée
par \LaTeXe{} pour obtenir un texte en capitales, en
\latex/ 2.09 il s'agit de \Cmd{uppercase}. La différence étant que
\Cmd{MakeUppercase} fonctionne avec des caractères non-ASCII.
Fancyhdr définit \Cmd{MakeUppercase} comme un alias de
\Cmd{uppercase} s'il n'est pas déjà défini.}.

\begin{figure}[tb]
\CmdIndex{chaptermark}
\CmdIndex{uppercase}
\CmdIndex{MakeUppercase}
\setlength{\columnsep}{20pt}\small
\begin{multicols}{2}
\noindent Le code :\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{\chaptername|\\
\verb| \ \thechapter.\ #1}{}}|\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{\MakeUppercase{%|\\
\verb| \chaptername}\ \thechapter.%|\\
\verb| \ #1}{}}|\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{\MakeUppercase{%|\\
\verb| \chaptername\ \thechapter.%|\\
\verb| \ #1}}{}}|\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{#1}{}}|\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{\thechapter.\ #1}{}}|\\
\mbox{}\\
\verb|\renewcommand{\chaptermark}[1]{%|\\
\verb| \markboth{\thechapter.%|\\
\verb| \ \chaptername.\ #1}{}}|\\
Affiche :\\
\mbox{}\\
\textsl{Chapitre 2.\ À faire de suite}\\
\mbox{}\\
\mbox{}\\
\mbox{}\\
\textsl{CHAPITRE 2.\ À faire de suite}\\
\mbox{}\\
\mbox{}\\
\mbox{}\\
\mbox{}\\
\textsl{CHAPITRE 2.\ À FAIRE DE SUITE}\\
\mbox{}\\
remarque : ci-dessus la valeur par défaut de fancy\\
\mbox{}\\
\mbox{}\\
\textsl{À faire de suite}\\
\mbox{}\\
\mbox{}\\
\textsl{2.\ À faire de suite}\\
\mbox{}\\
\mbox{}\\
\textsl{2.\ Chapitre.\ À faire de suite}\\
\mbox{}\\
\end{multicols}
\caption{Variations de présentation grâce aux marqueurs}\label{fig:markers}
\end{figure}


Pour l'information de sectionnement la plus basse
l'on utilisera la commande \Cmd{markright}.
\begin{block}
\noindent Ainsi si  \og Section 2.2.\ Premiers pas~\fg{}  est la section courante :
\begin{verbatim}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\end{verbatim}
\noindent va produire : \og \textsl{2.2.\ Premiers pas}~\fg.
\end{block}

Redéfinir les commandes \Cmd{chaptermark} et \Cmd{sectionmark} n'éliminera pas 
toute les mises en capitales. Par exemple la bibliographie aura un titre
\CmdIndex{uppercase}
\index{BIBLIOGRAPHIE}
tel que \textsc{bibliographie} dans l'en-tête, car la commande \Cmd{MakeUppercase}
est explicitement écrite dans la définition  de \Cmd{thebibliography}.
Idem pour \index{INDEX} \textsc{index}, etc.
Si vous ne voulez pas redéfinir ces commandes, vous pouvez
employer la commande \Cmd{nouppercase} de \textsf{fancyhdr} disponible pour les zones
d'en-tête et de pied~de~page. Notez que ceci peut s'appliquer à d'autres choses,
comme les numéros en chiffres romains en capitales dans vos en-têtes,
il faut donc l'employer avec précaution. 
Cette commande formate son argument dans un environnement
en manipulant \Cmd{MakeUppercase} et \Cmd{uppercase}
pour ne pas qu'ils produisent leur effet. 


\begin{verbatim}
\lhead{\nouppercase{\rightmark}}
\rhead{\nouppercase{\leftmark}}
\end{verbatim}

Il convient de noter que les mécanismes de marqueurs de \latex/ fonctionnent très bien avec
les chapitres (qui commencent toujours sur une nouvelle page) et les sections assez longues.
Cela ne fonctionne pas tout à fait aussi bien avec des sections et des sous-sections
courtes. C'est un problème de \latex/, pas de \textsf {fancyhdr}.

Comme exemple utilisons un style de page où les \texttt{leftmark}(s) sont produits par
les sections et les \texttt{rightmark}(s) par les sous-sections (par défaut dans
la classe \texttt{article}). Prenons une page avec quelques sections courtes, par exemple :

\begin{samepage}
\noindent Section 1.\\
ICI un texte suffisant pour remplir une page\\
et  un peu de la seconde.\\
subsection 1.1\\
subsection 1.2\\
Section 2.  
\end{samepage}

Alors que \texttt{leftmark} contient le \emph{dernier} marqueur principal
de la page, soit \og section 2.~\fg,
\texttt{rightmark} contient lui le \emph{premier} marqueur secondaire de cette page, 
donc \og subsection 1.1~\fg.
Ainsi l'en-tête de cette page combinera \texttt{section 2} avec \texttt{subsection 1.1},
ce qui n'est pas très logique.
Le mieux que vous puissiez faire dans ces cas là est d'utiliser uniquement
les \Cmd{rightmark}s et de redéfinir \Cmd{sectionmark} en conséquence.
Le commande \latex/
\CmdIndex{firstleftmark}
\Cmd{firstleftmark} pourra alors vous être utile (voir le package
\texttt{extramarks} dans la section~\ref{sec:xmarks}).

Un autre problème avec les marqueurs dans la norme des classes \latex/ est que
les commandes de sectionnement de plus haut niveau (par exemple \Cmd{chapter})
appellent \Cmd{markboth} avec un argument de droite vide. Ceci signifie qu'à la première
page d'un chapitre (ou d'une section dans la classe article) \Cmd{rightmark}
sera vide. Si ceci vous pose problème, vous devrez insérer
directement une commande \Cmd{markright}
ou redéfinir les commandes \Cmd{chaptermark} (\Cmd{sectionmark}) 
pour obtenir \Cmd{markboth} avec deux paramètres valides.

Comme remarque finale, veuillez noter que les formes \verb|*|
des commandes \Cmd{chapter}, etc. ne produisent pas de marqueur.
Ainsi si vous souhaitez que Préface apparaisse dans l'en-tête,
mais ne soit ni numérotée ni mise dans la table des matières,
vous devez créer \Cmd{markboth} vous-même, par exemple :

\begin{verbatim}
\chapter*{Préface\markboth{Préface}{}}
\end{verbatim}

Entrer \Cmd{markboth} à l'intérieur de la commande \Cmd{chapter*} assure
que la marque ne sera pas séparée du titre par une coupure de page. Naturellement
avec \Cmd{chapter*} ceci ne serait pas un problème même si vous mettez la commande
de marqueur après le titre de chapitre, car \Cmd{chapter*} commence
une nouvelle page.
Cependant avec la commande \Cmd{section*} il pourrait être dangereux de faire :

\begin{verbatim}
\section*{Préface}
\markboth{Préface}{}
\end{verbatim}
car une coupure de page peut advenir entre les deux commandes.

\section{En-têtes du style dictionnaire}

\index{dictionnaire}
\index{index}
Dictionnaires et index ont habituellement un en-tête contenant le premier
mot défini sur la page ou les premier et dernier mots. Ceci peut
facilement être obtenu avec \textsf{fancyhdr} et le mécanisme des \texttt{mark} de \latex/.
Bien entendu si vous utilisez les marqueurs pour un style d'en-têtes dictionnaire
vous ne pouvez pas les utiliser pour l'information sur les chapitres et sections.
Donc si vous avez en même temps des chapitres et/ou sections présents vous devez redéfinir
\Cmd{chaptermark} et \Cmd{sectionmark} pour les rendre inactifs :

\begin{verbatim}
\renewcommand{\chaptermark}[1]{}
\renewcommand{\sectionmark}[1]{}
\end{verbatim}

Ensuite vous écrivez \Cmd{markboth\{\#1\}\{\#1\}} pour chaque
entrée \verb|#1| du dictionnaire ou de l'index et vous utilisez \Cmd{rightmark}
pour obtenir la première entrée et \Cmd{leftmark} pour la dernière présentes sur la page.

Si vous désirez obtenir un en-tête de la forme \textsf{premier-mot/dernier-mot}
il est souhaitable d'avoir seulement \textsf{premier-mot} si les deux sont identiques.
Ceci arrive lorsqu'il n'y a qu'une entrée sur la page.
Dans ce cas un test doit être réalisé pour vérifier si les marqueurs sont identiques.
Les marqueur de \tex/ sont cependant des bêtes étranges ne pouvant être comparés
hors d'une boite avec une commande \textsf{plain}~\tex/.
\TTindex{ifthen}
Heureusement le package \texttt{ifthen} fonctionne bien,
donc pour réaliser cela il faut écrire :
\begin{verbatim}
\usepackage{ifthen}

\newcommand{\mymarks}{
  \ifthenelse{\equal{\leftmark}{\rightmark}}
    {\rightmark} % si égaux
    {\rightmark--\leftmark}} %si différents
\fancyhead[LE,RO]{\mymarks}
\fancyhead[LO,RE]{\thepage}
\end{verbatim}

Les dictionnaires sont souvent composés sur deux colonnes.
Malheureusement un bug de l'option \texttt{twocolum} de \latex/ cause la perte 
des marqueurs. Pour éviter ce problème vous pouvez utiliser
le package \texttt{fisx2col.sty} de David~\bsc{Carlisle}.


\section{Fancy styles}

\index{multiligne}
Vous pouvez faire un champ sur plusieurs lignes avec la commande \Cmd{\bs}.
Vous pouvez aussi rajouter un espace vertical supplémentaire dans une zone
avec la commande \Cmd{vspace}.
Notez que si vous faites ceci vous devrez probablement augmenter la taille de
\CmdIndex{headheight}
\CmdIndex{footskip}
l'en-tête (\Cmd{headheight}) et/ou du pied~de~page (\Cmd{footskip})
\index{Overfull \verb+\vbox+ \ldots}
sinon vous obtiendrez des messages d'erreur \og Overfull \Cmd{vbox} \ldots has
occurred while \Cmd{output} is active~\fg{}%
\footnote{si vous employez une taille de \texttt{11pt} ou \texttt{12pt} vous devrez probablement
aussi le faire car les valeurs par défaut de \latex/ sont plus petites}.
Voir la section 4.1 du \latex/ \emph{Companion} pour plus de détails.

Par exemple, le code suivant placera, dans le coin supérieur droit, le titre de section et
le titre de sous-section d'un article sur deux lignes :

\begin{verbatim}
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\addtolength{\headheight}{\baselineskip}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rhead{\leftmark\\\rightmark}
\end{verbatim}

Vous pouvez aussi paramétrer les filets de séparation. Par exemple pour épaissir
le filet sous l'en-tête :

\CmdIndex{headrulewidth}
\begin{verbatim}
\renewcommand{\headrulewidth}{0.6pt}
\end{verbatim}
ou pour faire disparaitre le filet en pied~de~page\footnote{N.D.T. : Ce qui est l'option par défaut de \Cmd{pagestyle}\texttt{\{fancy\}}}:
\CmdIndex{footrulewidth}
\begin{verbatim}
\renewcommand{\footrulewidth}{0pt}
\end{verbatim}

Les filets de séparation sont eux mêmes définis par deux macros,
\Cmd{headrule} et \Cmd{footrule}.  Par exemple,
si vous préférez un filet en pointillé plutôt que continu
dans l'en-tête, redéfinissez la commande \Cmd{headrule} :

\begin{verbatim}
\renewcommand{\headrule}{\vbox to 0pt{\hbox
    to\headwidth{\dotfill}\vss}}
\end{verbatim}

\CmdIndex{footruleskip}
Il existe un paramètre additionnel que vous pouvez utiliser : \Cmd{footruleskip}. Il
définit la distance entre le filet de séparation du pied~de~page et le dessus
de la ligne du texte de ce pied~de~page. Par défaut il est placé à 30\% de la valeur
entre deux lignes classiques. Vous pouvez vouloir l'ajuster si vous employez
des polices inhabituellement grandes ou petites dans le pied~de~page.
Changez sa valeur avec \Cmd{renewcommand}.

\section{Largeur des en-têtes et des pieds~de~page}

La largeur des en-têtes et des pieds~de~page est \Cmd{headwidth}, qui par défaut
égale \Cmd{textwidth} donc la largeur du corps de texte. Vous pouvez élargir
\CmdIndex{headwidth}
ou rétrécir ces zones là avec les commandes
\CmdIndex{fancyheadoffset}%
\CmdIndex{fancyfootoffset}%
\CmdIndex{fancyhfoffset}%
\Cmd{fancyheadoffset}, \Cmd {fancyfootoffset} et \Cmd{fancyhfoffset}%
\footnote{ces commandes sont définies depuis la version 3.0 de fancyhdr. Dans les versions
plus anciennes vous pouvez juste changer \Cmd{headwidth} avec
les commandes \Cmd{setlength} et \Cmd {addtolength}. Vous êtes encouragés à employer
les nouvelles commandes de décalage à la place. Vous ne pouvez absolument pas mélanger les deux
approches.}.
Elles sont similaires à \Cmd{fancyhead}, \Cmd {fancyfoot} et \Cmd{fancyhf}.
La seule différence est que les commandes de décalages n'acceptent pas l'option C (centre).

Utilisation : \Cmd{fancyhfoffset[place]\{length\}}\footnote{N.D.T. :  et l'utilisation du package \texttt{calc} pour automatiser le calcul.}
et de même pour les autres.

Elle définit des décalages à appliquer aux en-têtes et pieds~de~pages,
élargir dans les marges si la longueur (length) est $>$ 0
et rétrécir si cette longueur est $<$ 0.
L'utilisation est semblable à celle de \Cmd{fancyhead},
en utilisant uniquement les sélecteurs
(voir figure~\ref{fig:sel}, p.~\pageref{fig:sel}) E, O, L, R ou e, o, l, r
pour indiquer la ou les zones à traiter.

Avec ces commandes \Cmd{headwidth} sera calculée dynamiquement
pour obtenir une dimension d'en-tête et de pied de page ayant pour valeur
\Cmd{textwidth} \textsf{+ décalage-gauche + décalage-droit}.
L'exemple suivant\footnote{N.D.T. : exemple corrigé, merci A.S.}
permet de créer un filet de la largeur voulue (10pt+largeur du texte+10pt),
rouge en en-tête et bleu en pied de page 
(veuillez noter que la largeur du pied de page s'appelle aussi \Cmd{headwidth}
bien que sa valeur puisse différer de celle de l'en-tête) :

\begin{verbatim}
\fancyhfoffset{10pt}
\renewcommand{\headrule}{{%
 \color{red}\hrule \headwidth \headrulewidth \vskip-\headrulewidth}}
\renewcommand\footrulewidth{\headrulewidth}
\renewcommand{\footrule}{{%
 \color{blue}\vskip-\footruleskip\vskip-\footrulewidth
 \hrule \headwidth \footrulewidth\vskip\footruleskip}}
\end{verbatim}
%marche aussi sans le \renewcommand\footrulewidth{\headrulewidth}
%à revoir donc.
%% Exemple original ne donnant pas de résultat correct
%% \begin{verbatim}
%% \renewcommand{\headrule}{{\color{red}%
%%   \hrule width\headwidth height\headrulewidth \vskip-\headrulewidth}}
%% 
%% \setlength{\footrulewidth}{\headrulewidth}
%% 
%% \renewcommand{\footrule}{{\color{blue}%
%%   \vskip-\footruleskip\vskip-\footrulewidth
%% \hrule width\headwidth height\footrulewidth\vskip\footruleskip}}
%% \end{verbatim}

\section{Deux exemples de livres}

Les définitions suivantes donnent une approximation du style
utilisé par Leslie Lamport pour le \latex/ book.

L'en-tête du \latex/ book de Lamport surplombe la marge extérieure.  Ceci est obtenu avec
les commandes de décalage décrites dans la section précédente.

\begin{verbatim}
\documentclass{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{calc}
\fancyheadoffset[LE,RO]{\marginparsep+\marginparwidth}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\fancypagestyle{plain}{%
   \fancyhead{} % rien en en-tête
   \renewcommand{\headrulewidth}{0pt} % et pas de filets
}
\end{verbatim}
\PSindex{plain}

Notez que les commandes  \Cmd{chaptermark} et \Cmd{sectionmark}
ont été redéfinies pour éliminer le numéro de chapitre ainsi que la mise en capitale.

Pour le second exemple nous prenons le livre  \amslatex/.% \cite{gG93B}.
% George Gratzer, Math into LaTeX, An Introduction to LaTeX et AMS-LaTeX,
% Birkhauser Boston, ISBN 0-8176-3805-9

Les pages de chapitre n'ont aucun en-tête ou pied~de~page.
Ainsi nous utilisons :

\begin{verbatim}
\thispagestyle{empty}
\end{verbatim}
pour chaque page de chapitre et nous n'avons pas besoin de redéfinir le style \texttt{plain}.

Les titres de chapitre et de section apparaissent sous la forme : 
2. \ \`{A} FAIRE DE SUITE,
nous devons donc redéfinir \Cmd{chaptermark} et \Cmd{sectionmark}
(voir section~\ref{sec:custom}) comme suit :

\begin{verbatim}
\renewcommand{\chaptermark}[1]%
   {\markboth{\MakeUppercase{\thechapter.\ #1}}{}}
\renewcommand{\sectionmark}[1]%
   {\markright{\MakeUppercase{\thesection.\ #1}}}
\end{verbatim}

Dans un en-tête de page paire, le numéro de page est imprimé dans le champ gauche et
le titre du chapitre dans le champ droit ; dans un en-tête de page impaire, le titre de section
est imprimé dans le champ gauche et le numéro de page dans le champ droit.  
Le champ centre reste toujours vide.  Il n'y a aucun pied~de~page.

Il y a un filet de séparation dans l'en-tête, d'une épaisseur de 0.5pt.
Nous déclarons donc les commandes :

\begin{verbatim}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\end{verbatim}

La police Helvetica en 9 pt grasse est utilisée dans 
les en-têtes. Le système \PSNFSS\ de Sebastian~\bsc{Rahtz} emploie le nom
court (Karl~\bsc{Berry})  \verb|phv| pour l'Helvetica,
donc nous utiliserons :
\begin{verbatim}
\fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont
\end{verbatim}
dans notre cas (voir les sections 7.6.1 et 11.9.1 du \latex/ \emph{Companion}.)
Définissons un raccourci pour cela :
\begin{verbatim}
\newcommand{\helv}{%
   \fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
\end{verbatim}

Nous sommes prêts maintenant pour le style de page :

\begin{verbatim}
\documentclass{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]%
   {\markboth{\MakeUppercase{\thechapter.\ #1}}{}}
\renewcommand{\sectionmark}[1]%
   {\markright{\MakeUppercase{\thesection.\ #1}}}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
\newcommand{\helv}{%
   \fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
\fancyhf{}
\fancyhead[LE,RO]{\helv \thepage}
\fancyhead[LO]{\helv \rightmark}
\fancyhead[RE]{\helv \leftmark}
\end{verbatim}


\section{Style de page spécial pour flottants}
\label{sec:float}

\index{float page}
\index{page de flottants}
Certains souhaitent une disposition spéciale pour les pages contenant
uniquement des flottants.
Ces pages sont produites automatiquement par \latex/, l'utilisateur n'ayant aucun contrôle
sur elles. Il n'existe pas de \Cmd{thispagestyle} pour les pages de flottants
et toute tentative de changement du style de ces pages affectera la page avant celle composée de flottants.
Avec \textsf{fancyhdr}, cependant, vous pouvez indiquer dans chacun
des champs d'en-tête ou de pied~de~page

\Cmd{iffloatpage\{}valeur pour la page\verb|}{|valeur pour les autres pages\verb|}|

N.D.T. : les textes de tous les en-têtes ou de pieds~de~page sont alors droits, pour retrouver
le style penché il faut alors taper :
\verb|\lhead{\slshape \iffloatpage{}{\rightmark}}|
pour, dans cet exemple, un en~tête gauche vide (page de flottants)
ou avec le contenu du marqueur \verb|rightmark|.
Fin N.D.T.

Vous pouvez même employer ceci pour supprimer le filet de séparation
des pages de flottants uniquement en redéfinissant :

\begin{verbatim}
\renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}}
\end{verbatim}
%à tester en réel, pb avec \usepackage{layout}, page avant empty pas la bonne

Parfois vous pouvez  aussi vouloir changer de style pour les pages contenant
un flottant en haut de page ou en bas de page.

\textsf{fancyhdr} fournit les commandes \Cmd{iftopfloat} et  \Cmd{ifbotfloat}
similaires à  \Cmd{iffloatpage}.

Note : Les marqueurs dans des flottants ne sont pas visibles
par la routine de sortie de \latex/ 
il n'est pas donc pas utile d'utiliser des marqueurs avec les flottants.
Donc il n'y a actuellement aucune manière d'insérer un titre de figure, par exemple,
dans un en-tête ou un pied~de~page


\section{Les pages blanches}
\label{sec:blank}

\index{page blanche}
Dans la classe \texttt{book} quand l'option \texttt{openany} n'est pas stipulée, ou
dans la classe \texttt{report} quand l'option \texttt{openright} est utilisée, 
les chapitres commencent sur des pages impaires, en provoquant l'insertion d'une page blanche
la moitié du temps. L'on peut souhaiter que cette page soit absolument vide,
c.-à-d. sans en-têtes ni pieds~de~page. Ceci ne peut pas être obtenu avec \Cmd{thispagestyle}
car cette commande devrait être écrite sur la page \emph{précédente}.
Aucune magie n'est cependant nécessaire pour obtenir cela :

\PSindex{empty}
\CmdIndex{clearpage}
\CmdIndex{cleardoublepage}
\begin{verbatim}
\clearpage{\pagestyle{empty}\cleardoublepage}
\end{verbatim}

Comme  \Cmd{pagestyle\{empty\}} est enfermée dans un groupe elle affecte seulement
la page qui peut être produite par \Cmd{cleardoublepage}.  Vous pouvez
bien sûr mettre ce qui précède dans une commande personnelle.
Si vous voulez une exécution automatique de ceci
à chaque début de chapitre et si vous voulez une note spécifique
pour ces pages vous devez redéfinir \Cmd{cleardoublepage}
comme ci-dessous\footnote{N.D.T. : les lignes de
\Cmd{vspace*}\{\Cmd{fill}\} à \Cmd{vspace}\{\Cmd{fill}\} inclues permettent
l'affichage de la note, otez-les pour obtenir une page absolument vide.} :

\index{blank page}
\begin{verbatim}
\makeatletter
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
  \hbox{}
  \vspace*{\fill}
  \begin{center}
    Cette page contient uniquement cette phrase intentionnellement.
  \end{center}
  \vspace{\fill}
  \thispagestyle{empty}
  \newpage
  \if@twocolumn\hbox{}\newpage\fi\fi\fi}
\makeatother
\end{verbatim}


\section{Numérotation \textsl{\textsf{n}/\textsf{m}} et style de page}
\label{sec:nofm}

Quelques auteurs de documents préfèrent une numérotation de pages du type \textsf{n}/%
\textsf{m} où \textsf{m} est le nombre de pages du document.
Il
\TTindex{nofm.sty}
y a un package \texttt{nofm.sty} disponible, mais plusieurs de ses versions sont
défectueuses et la plupart ne fonctionnent pas avec fancyhdr car elles redéfinissent
\TTindex{lastpage.sty}
complètement le style de page. 
Pour \LaTeXe{} il existe le package \texttt{lastpage}
que vous pouvez employer avec \textsf{fancyhdr} comme suit :

\begin{verbatim}
\usepackage{lastpage}
...
\cfoot{\thepage/\pageref{LastPage}}
\end{verbatim}

Si vous êtes toujours utilisateur de \latex/ 2.09 et ne souhaitez pas passer à
\LaTeXe{} vous devez utiliser le package \texttt{lastpage209.sty} compatible \latex/ 2.09
comme suit :

\begin{verbatim}
\let\origenddocument=\enddocument
\def\enddocument{\clearpage\if@filesw
  {\addtocounter{page}{-1} \immediate\write\@mainaux
    {\string\newlabel{LastPage}{{}{\thepage}}}}\origenddocument}
\end{verbatim}
%pas testé
La valeur de l'étiquette \texttt{LastPage} peut être employée
pour obtenir un en-tête ou pied~de~page différent sur la dernière page d'un document.
Par exemple si vous voulez le pied~de~page des pages impaires, excepté la dernière
si elle est impaire, contenant le texte \og tournez s.v.p.~\fg{},
ceci peut être obtenu comme suit\footnote{ceci exige une version
assez récente du package \texttt{ifthen}.} :

\begin{verbatim}
\usepackage{lastpage}
\usepackage{ifthen}
...
\rfoot{\ifthenelse{\isodd{\value{page}} \and \not
    \value{page}=\pageref{LastPage}}{tournez s.v.p.}{}}

\end{verbatim}
%PvO avait oublié une accolade en fin de condition,  taquin va ! (ref. Uderzo)

\section{Numéros de page par chapitre ou section}

Très souvent dans une documentation technique les numéros de page sont notés sous la forme
2-10 où le premier nombre est le numéro du chapitre et le second est
le numéro de page relativement à ce chapitre. Parfois la section est employée plutôt que
chapitre.
Le package \textsf{chappg} peut être employé pour obtenir ce format.
Si vous voulez changer la disposition, par exemple un point plutôt qu'un tiret,
ou une section plutôt qu'un chapitre,
vous devriez réaliser une copie privée,
puis éditer cette dernière pour la modifier comme vous le souhaitez.

Ce package redéfinit \Cmd{thepage} comme 
\Cmd{arabic\{chapter\}-}\Cmd{arabic\{page\}}.
Malheureusement ceci donne des nombres plutôt que des lettres pour les annexes. 
Une meilleure définition est \Cmd{thechapter-}\Cmd{arabic\{page\}} mais vous devez
 vous-même inscrire cette définition après \Cmd{usepackage\{chappg\}}.
De même ce package réinitialise le numéro de page à 1 au début
de chaque chapitre.

Il y a une différence fondamentale entre la numérotation de page du style
\og \emph{n}/\emph{m}~\fg{} comme décrit dans la section précédente et
celui~ci. Le style \og \emph{n}/\emph{m}~\fg{} est uniquement employé dans l'en-tête ou
le pied~de~page, mais pas dans la table des matières, l'index, ou les références comme
\og \emph{voir page \emph{xx}}~\fg{}. Par conséquent il ne modifie pas la commande
\Cmd{thepage}. Les numéros de page du style \og 2-10~\fg{}, toutefois, doivent être employés
dans toutes les références au numéro de page, donc ils doivent être obtenus par la redéfinition
de \Cmd{thepage}. 

\section[Où placer les ordres de changement ?]{Où placer les ordres de changement d'en-têtes\\et de pieds de page ?}
\label{sec:changer}

Parfois l'on souhaite changer la disposition d'en-tête ou de pied~de~page en cours
de document. Certains de ces changements peuvent être accomplis en employant le mécanisme
des marqueurs comme indiqué dans les sections~\ref{sec:custom} et \ref{sec:xmarks}.
Cependant, l'on veut quelquefois un changement plus radical, par exemple pour changer
le style des chiffres du romain vers l'arabe (avec \Cmd{pagenumbering}), pour changer un des
\index{style de page!changer}
champs obtenus par \textsf{fancyhdr} ou pour passer à un autre style de page.
Quelquefois le changement peut se produire plus tôt que souhaité. En général
les changements mentionnés ci-dessus prennent effet immédiatement, c.-à-d. \
à la page en construction à ce moment là. Si vous désirez que le changement prenne effet
à la prochaine page vous devez vous assurer que la page courante est terminée. Dans
\CmdIndex{clearpage}
la plupart des cas ceci peut être fait en écrivant \Cmd{clearpage} avant les
changements mentionnés ci-dessus. Si ce n'est pas possible vous pouvez employer :
\TTindex{afterpage.sty}
le package \texttt{afterpage} avec :\\
\Cmd{afterpage\{}\Cmd{lhead\{nouvelle valeur\}\}} ou
\CmdIndex{pagenumbering}
\Cmd{afterpage\{}\Cmd{pagenumbering\{roman\}\}}

Vous ne pouvez pas avec la commande \Cmd{afterpage} modifier
\Cmd{pagestyle}.  \Cmd{afterpage} agit localement dans un groupe, donc
à la fermeture de celui-ci les redéfinitions d'\Cmd{afterpage} ne font plus effet.
En revanche, les commandes \Cmd{pagenumberging} et toutes
celles de \textsf{fancyhdr} effectuent des modifications globales et
fonctionneront donc comme la commande \Cmd{thispagestyle}.

Il convient de noter que bien que les commandes de \textsf{fancyhdr} comme
\Cmd{fancyhead} prennent effet immédiatement, ceci ne signifie pas que toutes les
\og variables~\fg{} utilisées dans ces commandes obtiennent leur valeur à l'endroit
où ces instructions sont données.
Par exemple si \Cmd{fancyfoot[C]\{}\Cmd{thepage\}} est écrit,
le numéro de page qui sera inséré dans le pied~de~page n'est pas le numéro
de la page où cette instruction est écrite, mais plutôt le numéro de la page
où le pied~de~page est construit. Pour le numéro de page
c'est naturellement ce qui est voulu, mais ce mécanisme est identique
pour d'autres commandes.

Ainsi avec un livre dont chaque chapitre est écrit par un auteur différent,
si vous voulez le nom de l'auteur du chapitre dans le coin inférieur gauche
vous pouvez employer les commandes suivantes :

\begin{verbatim}
\newcommand{\TheAuthor}{}
\newcommand{\Author}[1]{\renewcommand{\TheAuthor}{#1}}
\lfoot{\TheAuthor}
\end{verbatim}

\noindent et commencer chaque chapitre avec la commande 
\Cmd{Author\{Nom~de~l'auteur~du~chapitre\}}.
Cependant, si le nom de l'auteur change avant la construction de la page,
le mauvais nom pourrait apparaitre en pied~de~page. Ce serait le cas
si vous donniez l'instruction ci-dessus \emph{avant} la commande \Cmd{chapter}
plutôt qu'après elle. 
Une autre source de problèmes, le fonctionnement
de la routine de sortie de \tex/ produit des éléments en amont de la zone traitée,
ainsi le traitement de certaines commandes produit
du texte qui paraitra à la page suivante.
La prochaine section en fournit un exemple.

\section{En-têtes et pieds~de~page induits par le texte}
\label{sec:xmarks}

Nous avons vu comment employer les marqueurs de \latex/ pour obtenir l'information
contenue dans les en-têtes et pieds~de~page. Le mécanisme des marqueurs est
le seul mécanisme fiable que vous pouvez employer pour obtenir une information
variable dans les en-têtes ou pieds~de~page. Ceci car \latex/ traite votre document
en aval avant de décider ou placer le saut de page. 

Parfois les deux marqueurs fournis par \latex/ sont insuffisants. Prenons l'exemple suivant :
\begin{quote}
si une solution d'exercice continue sur la page suivante, alors je voudrais
avoir \og suite prochaine page\ldots~\fg{} en bas de
\index{suite\ldots}
de la première et \og suite\ldots~\fg{} en haut de la marge de la suivante.
\end{quote}

Vous ne pouvez utiliser pour cela le mécanisme des marqueurs de \latex/
en gardant l'information des chapitre et section.

Fancyhdr inclut un package fournissant
deux marqueurs supplémentaires, utilisables dans ces
situations\footnote{ce n'est qu'après avoir réalisé ce package que j'ai découvert
le package \texttt{secret.sty} qui permet aussi
de marquer des paragraphes particuliers s'étendant sur plusieurs pages.
Cependant, \texttt{secret.sty} modifie la routine de sortie.}.
Voici une façon d'utiliser ce package :

\begin{verbatim}
\usepackage{extramarks}
...
\pagestyle{fancy}
\lhead{\firstxmark}
\rfoot{\lastxmark}
...
\extramarks{}{suite prochaine page\ldots}
Texte s'étendant ou pas sur plusieurs pages
\extramarks{suite\ldots}{}
\extramarks{}{}
\end{verbatim}
%la dernière ligne \extramarks{}{} oubliée dans la doc ! gros taquin PvO.
\CmdIndex{extramarks}
Notez que \Cmd{extramarks} et le texte forment un bloc. Aucun
changement de paragraphe (ligne vide ou \verb|\par|) ne doit avoir lieu. Sinon la page peut
changer sur cette rupture et les \texttt{extramarks} apparaitraient
sur la mauvaise page.

Deux nouveaux marqueurs peuvent être employés dans le style de page avec ce
package : Si une commande de la forme
\verb|\extramarks{|$m_1$\verb|}{|$m_2$\verb|}| est écrite
\CmdIndex{firstleftxmark}
\Cmd{firstleftxmark}\footnote{%
  avant la version 2.0 d'extramarks.sty uniquement les commandes
  \Cmd{firstxmark} et \Cmd{lastxmark} sont définies.}
vous  donne la première valeur de $m_1$,
\CmdIndex{lastleftxmark}
\Cmd{lastleftxmark} donne la dernière valeur de $m_1$,
\CmdIndex{firstrightxmark}
\Cmd{firstrightxmark} fournit la première valeur de $m_2$  et
\CmdIndex{lastrightxmark}
\Cmd{lastrightxmark} la dernière valeur de $m_2$
sur la page en cours.
\CmdIndex{firstxmark}
En outre par convention (respect de la norme des marqueurs de \latex/)
\Cmd{firstxmark} est égal à \Cmd{firstleftxmark} et
\CmdIndex{lastxmark}
\Cmd{lastxmark} est égal à \Cmd{lastrightxmark}.
Ceci comme \Cmd{topxmark} ou \Cmd{topleftxmark}
sont identique à \Cmd{topmark} de \tex/,
mais probablement peu employés.

\CmdIndex{firstleftmark}
\CmdIndex{lastrightmark}
Finalement ceci fournit les commandes
\Cmd{firstleftmark} et \Cmd{lastrightmark}
en complément des marqueurs standards de \latex/.

Pour souligner le fait que les marqueurs sont la bonne façon de procéder,
laissez-moi vous montrer une mauvaise solution\footnote{en fait
il existe une autre manière mais elle nécessite deux \og compilations~\fg{}
\latex/, vous pouvez mettre des commandes \Cmd{label}
avant et après le texte et comparer les valeurs des \Cmd{pageref}.}:

\begin{verbatim}
\lhead{suite}
\rfoot{suite prochaine page\ldots}
Texte s'étendant ou pas sur plusieurs pages
\lhead{}
\rfoot{}
\end{verbatim}

Vous pouvez être tenté de penser que les premiers \Cmd{lhead} et \Cmd{rfoot}
seront en fonction lorsque \tex/ produira un saut de page au milieu du texte
et les derniers s'il le place après le texte. Ce n'est pas vrai car
le paragraphe entier (y compris les dernières définitions) sera traité
\index{page break}
\index{saut de page}
avant que \tex/ positionne le saut de page, ainsi au moment de ce saut
les dernières définitions sont utilisées, que le saut de page ait lieu dans le texte
ou après lui. Un changement de paragraphe entre
le texte et les dernières définitions ne fonctionnera pas non plus,
parce que vous ne voulez pas que les premières définitions soient
utilisées si \tex/ positionne un saut de page sur ce changement de paragraphe.
En fait le mécanisme des marqueurs a été inventé pour se débarrasser
de ce genre de problèmes.

Dans le dernier exemple \og suite~\fg{} apparait dans l'en-tête. Il
\index{marge!mettre dans}
peut-être préférable de l'avoir dans la marge. Ceci peut facilement
s'obtenir en le positionnant de façon fixe relativement à l'en-tête.
En plain \tex/ nous devrions employer une combinaison de \Cmd{hbox to 0pt},
\Cmd{vbox to 0pt}, \Cmd{hskip},\Cmd{vskip}, \Cmd{hss} et
\Cmd{vss}, heureusement l'environnement \texttt{picture}
de \latex/ fournit une manière beaucoup plus simple pour y arriver.
Pour ne pas perturber la disposition normale des en-têtes nous mettons le texte dans
une image (\texttt{picture}) de dimension nulle.
C'est la meilleure façon, généralement, de placer des choses en des endroits
fixes sur la page. Vous pouvez alors employer en même temps les en-têtes normaux.
Voir aussi la section~\ref{sec:reperes} pour un autre exemple de cette technique.

\TTindex{picture}
\begin{verbatim}
\lhead{\setlength{\unitlength}{\baselineskip}%
\begin{picture}(0,0)
  \put(-2,-3){\makebox(0,0)[r]{\firstxmark}}
  \end{picture}\leftmark}
\end{verbatim}

Cette solution peut naturellement être employée aussi pour le pied~de~page.
Assurez-vous que vous avez mis \texttt{picture}
en tant que premier élément dans les champs gauches pages paires [LE] et dernier dans ceux droits pages impaires [RO].

Enfin vous pouvez vouloir mettre \og suite\ldots~\fg{} au début du \emph{texte}
plutôt qu'en en-tête ou en marge. Alors vous devez employer
\TTindex{afterpage.sty}
le package \texttt{afterpage}. Créons pour cela un nouvel environnement.

\begin{verbatim}
\newenvironment{suite}{\par
  \extramarks{}{suite prochaine page\ldots}
  \afterpage{\noindent\firstxmark\vspace{1ex}}
  }{\extramarks{(suite\ldots)}{}\par}
\end{verbatim}

Il est dangereux d'employer \Cmd{firstxmark} en dehors de la routine du style
de page, mais apparemment avec \Cmd{afterpage} cela fonctionne. Si vous
avez besoin de l'information plus loin dans la page vous devez stocker le contenu
du marqueur dans votre propre variable. Vous pouvez placer ceci dans un
des champs de \textsf{fancyhdr}. Par exemple, si vous voulez ajouter quelque chose
\emph{après} la solution de l'exercice (donc au redémarrage du texte
coupé par la solution) vous pouvez employer ce qui suit :

\begin{verbatim}
\newcommand{\mysaved}{}

\newenvironment{suite}{\par
  \extramarks{}{suite prochaine page\ldots}
  }{\extramarks{(suite\ldots)}{}\par\vspace{1ex}\mysaved}
\lhead{\leftmark}
\chead{\ifthenelse{\equal{\lastxmark}{}}
  {\gdef\mysaved{}}
  {\gdef\mysaved{\noindent[suite de la page précédente]}}}
\end{verbatim}

Si vous voulez inclure un des marqueurs ou toute autre information variable dans
le texte stocké, vous devez employer \Cmd{xdef} plutôt que \Cmd{gdef}.

\section{Pseudo film}
\label{sec:pseudo-film}

\index{film}
\index{pseudo-film}
\index{movie}
\TTindex{picture}
Si vous mettez sur le même endroit de chaque page une image qui varie légèrement
de page en page, il est possible d'obtenir comme un film en feuilletant
les pages. Vous pouvez créer un tel pseudo-film facilement avec fancyhdr. Pour plus de
simplicité nous supposerons que chaque image est dans un fichier postscript (EPS) appelé
\texttt{pic}$\langle n\rangle$.\texttt{ps} ou $\langle n\rangle$ est le numéro de page et
nous emploierons le package \texttt{graphics} ou mieux
\texttt{graphicx}\footnote{si vous utilisez une ancienne version
de \latex/ vous utiliserez le package \texttt{epsf} ou \texttt{epsfig}.}. 
\TTindex{graphics}
\TTindex{graphicx}
\TTindex{epsf}
\TTindex{epsfig}
Pour positionner le pseudo-film à droite\footnote{en recto seul sinon pensez
à le placer sur les pages impaires.} du pied de page la suite fonctionnera :

\begin{verbatim}
\rfoot{\setlength{\unitlength}{1mm}
  \begin{picture}(0,0)
    \put(5,0){\includegraphics{pic\thepage.ps}}
  \end{picture}}
\end{verbatim}

Notez que le paramètre de \Cmd{unitlength} doit 
être placé localement dans le champ de fancyhdr afin d'éviter une 
interférence, non souhaitable, avec sa valeur dans le corps du texte.

\section{Repères sur la tranche externe}
\label{sec:reperes}

\index{bible}
Sur certains annuaires et bibles l'on trouve des
\index{repères-index}
\index{thumb-index}
\emph{repères-index} (thumb-index),
ce sont des marques sur la tranche externe des pages qui
indiquent où sont les chapitres. Vous pouvez créer ces derniers en imprimant
des zones noires dans la marge externe des pages. Leur position verticale devrait
être déterminée par le numéro du chapitre ou un autre compteur. Leur position est
indépendante du contenu de la page, nous imprimerons donc ces zones
en tant qu'éléments d'en-tête dans une image (\texttt{picture}) de taille nulle
comme décrit dans la section précédente.

Naturellement nous devons prendre soin d'imprimer recto et verso, nous pouvons
aussi avoir une page d'index avec toutes les zones en position correcte.
La solution exige un réglage fin pour obtenir des zones bien espacées verticalement.
Pour une application personnelle où j'avais 12 sections, j'ai séparé les zones
de 18 millimètres, zone imprimée de 9~mm séparée par un blanc de 9~mm. Afin d'éviter
des calculs,  les zones sont créées dans un environnement \texttt{picture} avec
un \Cmd{unitlength} valant 18~mm. Les numéros de page sont placés dans
les en-têtes, côtés externes, et les zones sont liées à ces derniers. Dans cet exemple
les numéros de section sont utilisés pour placer les zones,
mais vous pouvez remplacer ceci avec n'importe quelle valeur numérique. 
Voir la figure~\ref{fig:overview} pour la page d'index
et la figure~\ref{fig:reperes} page~\pageref{fig:reperes} pour le code.

\begin{figure}[htbp]
\setlength{\unitlength}{9mm}
\newcommand{\blob}{\rule[-.2\unitlength]{1\unitlength}{.5\unitlength}}
\newcounter{line}
\newcommand{\secname}[1]{\addtocounter{line}{1}%
  \put(1,-\value{line}){\blob}
  \put(-7.5,-\value{line}){\arabic{line}}
  \put(-7,-\value{line}){#1}}

\newcommand{\overview}{1
  \begin{picture}(0,0)
    \secname{Introduction}
    \secname{Première année}
    \secname{Spécialisation}
  \end{picture}}
 
  \begin{center}
    \leavevmode
    \begin{picture}(11.3,5)
      \put(0,0){\framebox(11.3,5)[tr]{}}
      \put(9,4.5){\overview}
    \end{picture}
  \end{center}
  \caption{Page d'index des repères de tranche}
  \label{fig:overview}
\end{figure}

\begin{figure}[hp]\small
\begin{verbatim}
\documentclass[a4paper]{book}% N.D.T. : a4paper pour ajuster
% les repéres en bord de feuille
...
etc.

\setlength{\unitlength}{18mm}
\newcommand{\blob}{\rule[-.2\unitlength]{2\unitlength}{.5\unitlength}}

\newcommand\rblob{\thepage
  \begin{picture}(0,0)
    \put(1,-\value{section}){\blob}
  \end{picture}}

\newcommand\lblob{%
  \begin{picture}(0,0)
    \put(-3.3,-\value{section}){\blob}
  \end{picture}%
  \thepage}

\pagestyle{fancy}
\cfoot{}

\newcounter{line}
\newcommand{\secname}[1]{\addtocounter{line}{1}%
  \put(1,-\value{line}){\blob}
  \put(-7.5,-\value{line}){\Large \arabic{line}}
  \put(-7,-\value{line}){\Large #1}}

\newcommand{\overview}{\thepage
  \begin{picture}(0,0)
    \secname{Introduction}
    \secname{Première année}
    \secname{Spécialisation}
    ...
    etc.
  \end{picture}}

\begin{document}
\fancyhead[R]{\overview}\mbox{}\newpage % Ceci produit la page récapitulative
\fancyhead[R]{}
\clearpage
\fancyhead[RE]{\rightmark}
\fancyhead[RO]{\rblob}
\fancyhead[LE]{\lblob}
\fancyhead[LO]{\leftmark}
...
etc.
\end{verbatim}
  \caption{Code pour les repères sur la tranche externe, section~\ref{sec:reperes} page~\pageref{sec:reperes}}
  \label{fig:reperes}
\end{figure}

\section{Placement des flottants}

Les flottants sont des éléments de page qui flottent par rapport au reste
du document. Les flottants standard sont les tables et les figures, mais avec le package
\textsf{float} vous pouvez facilement en créer de nouveaux, comme des algorithmes.
La plupart du temps les flottants fonctionnent de manière satisfaisante,
mais parfois \latex/ semble trop têtu pour faire ce que vous voulez.
Cette section décrit comment influencer \latex/ de sorte qu'il fasse,
le plus souvent, comme vous le désirez.
Il se peut toutefois, dans quelques cas \emph{irréductibles},
que vous ne puissiez contraindre \latex/ à votre convenance.
Dans la suite nous emploierons des figures comme exemples,
mais tout s'applique aussi bien aux autres flottants.

Les problèmes les plus fréquents avec des flottants sont :
\begin{enumerate}
\item Vous voulez un flottant à un certain emplacement dans le texte, mais \latex/
  le déplace, souvent à la page suivante.
\item Passé un certain point, \latex/ déplace tous vos flottants à la fin
 du chapitre ou à la fin du document.
\item \latex/ signale \emph{Too many floats}, soit trop de flottants.
\end{enumerate}

Dans les deux premiers cas vous devez vérifier si vous avez donné un paramètre
correct de \og placement~\fg{} pour votre flottant, par exemple
\Cmd{begin\{figure\}[htp]} signifie que votre figure peut être placée :
\begin{itemize}
\item \texttt{h}, ici (h pour here) c.-à-d. à la position ou vous la placez dans le texte ;
\item \texttt{t}, en haut de page (t pour top), page en cours ou suivante ;
\item \texttt{p}, sur une page ne contenant que des flottants.
\end{itemize}
Vous pourriez aussi avoir indiqué \texttt{b} pour le bas (bottom) de la page. L'ordre
des lettres est insignifiant, vous ne pouvez pas forcer \latex/ à essayer en bas d'abord
puis en haut par l'indication \texttt{[bt]}.

Si \latex/ ne met pas le flottant à l'endroit où vous l'attendiez,
cela est habituellement provoqué par ce qui suit :
\begin{enumerate}
\item Le flottant ne s'adapte pas à la page. Dans ce cas il doit être déplacé
  à la prochaine page ou même plus loin. Si vous n'indiquez pas l'un \texttt{[t]}
  ou l'autre \texttt{[b]} des paramètres de position \latex/ doit continuer jusqu'à
  ce qu'il ait assez de flottants pour une page entière. Ainsi n'utilisez pas
  seulement \texttt{[h]}. Si vous voulez que \latex/ place ce flottant sur
  une page de flottants, vous devez spécifier « p ».
\item La position violerait les contraintes imposées par les paramètres de 
  placement des flottants de \latex/. C'est une cause des plus fréquente.
  Elle peut être facilement corrigée en changeant ces paramètres,
  dont voici la liste :
\end{enumerate}
\begin{center}
\CmdIndex{topfraction}
\CmdIndex{bottomfraction}
\CmdIndex{textfraction}
\CmdIndex{floatpagefraction}
\TTindex{topnumber}
\TTindex{bottomnumber}
\TTindex{totalnumber}
  \begin{tabular}{>{\tt}llc}
    \hline
    \multicolumn{3}{c}{Compteurs -- changez avec \Cmd{setcounter}}\\
    \hline
    topnumber & nombre max. de flottants en haut de page & 2 \\
    bottomnumber & nombre max. de flottants en bas de page & 1 \\
    totalnumber & nombre max. de flottants par page & 3\\
    \hline
    \multicolumn{3}{c}{Macros -- changez avec \Cmd{renewcommand}}\\
    \hline
    \bs topfraction & fraction max. en haut de page pour les flottants & 0.7 \\
    \bs bottomfraction & fraction max. en bas de page pour les flottants & 0.3 \\
    \bs textfraction & fraction min. du texte sur une page & 0.2 \\
    \bs floatpagefraction & fraction min. de flottants/page pour créer une page de flottants & 0.5 \\ 
    \hline
  \end{tabular}
\end{center}

Quelques autres paramètres existent pour des flottants sur deux colonnes
dans les documents multicolonnes.

Les valeurs dans la colonne de droite sont celles par défauts pour les classes standard de
\latex/. D'autres classes peuvent employer d'autres valeurs par défaut. Comme précisé
par ces valeurs, un flottants ne sera pas mis en bas d'une page si
sa taille est supérieure à 30 \% de la taille de page. Ainsi si vous indiquez [hb] pour
un flottant plus grand, il sera déplacé vers une page de flottants. Mais s'il fait moins
de 50 \% de la taille de page il devra attendre le moment où assez de flottants
seront créés pour qu'une page de flottants soit remplie en respectant
le paramètre de \Cmd{floatpagefraction}. Si cela vous pose problème vous
pouvez facilement adapter les paramètres, par exemple avec :
\begin{verbatim}
\renewcommand{\textfraction}{0.05}
\renewcommand{\topfraction}{0.95}
\renewcommand{\bottomfraction}{0.95}
\renewcommand{\floatpagefraction}{0.35}
\setcounter{totalnumber}{5}
\end{verbatim}
Attention de ne pas définir un \Cmd{floatpagefraction} trop petit,
vous risqueriez d'obtenir beaucoup de pages de flottants peu remplies.

Vous pouvez forcer \latex/ à ignorer la plupart des paramètres pour une occurrence spécifique
de flottant en incluant une marque d'exclamation (!) 
dans les paramètres de placement, par exemple :
\begin{verbatim}
\begin{figure}[!htb]
\end{verbatim}

Les flottants contenant \og \texttt{t}~\fg{} dans les paramètres de position peuvent
apparaitre donc en haut de page avant l'endroit où ils sont cités (mais à la même page).
C'est  le comportement normal de \latex/ mais vous pouvez ne pas souhaiter cela.
Il existe un certain nombre de façons d'empêcher ceci : 
\begin{enumerate}
\item Bien sur, supprimer le paramètre \og \texttt{t}~\fg{} régle ce soucis,
 mais c'est indésirable, vous pouvez vouloir que le flottant soit en haut de la page suivante.
\item Utilisez le package  \texttt{flafter}, celui-ci n'autorise pas de flottants
 en amont de leur appel.
\item Utilisez la commande \Cmd{suppressfloats[t]}\footnote{Cette commande ainsi que
le paramètre \og !~\fg{} ne sont pas définis en \LaTeX2.09.}.  Cette
commande déplace le flottant du haut de \emph{sa page d'appel} à la 
suivante. Elle peut être utilisée avec le paramètre \texttt{[b]} ou 
sans paramètre pour tout flottant sur la page où elle est inscrite.
 \end{enumerate}

Si malgré toutes vos tentatives \latex/ déplace toujours vos flottants à la fin
du document ou à la fin d'un chapitre,
vous pouvez insérer la commande \Cmd{clearpage}.
Celle-ci débutera une nouvelle page et insérera tous les flottants en suspens avant de
continuer. 
Si vous ne souhaitez pas de saut de page immédiat, vous pouvez recourir
au package \textsf{afterpage} et ajouter dans le texte :
\begin{verbatim}
\afterpage{clearpage}
\end{verbatim}

Ceci permet de composer la page courante entièrement et ensuite
d'obtenir une page de flottants, si le paramètre de \Cmd{floatpagefraction}
est atteint.
Cependant, dans certaines circonstances, l'utilisation d'\texttt{afterpage}
peut produire d'étranges résultats.

En conclusion, si vous voulez un flottant à l'endroit où vous le définissez, sans
que \latex/ ne le déplace, vous pouvez employer le package \textsf{float} et
écrire dans le préambule :
\begin{verbatim}
\restylefloat{figure}
\end{verbatim}
Vous devez utiliser ensuite le paramètre de position \texttt{[H]},
qui signifie « ICI et uniquement ICI ».
Ceci peut cependant provoquer un saut de page non désiré\footnote{\texttt{here.sty}
a le même effet, mais est incompatible avec avec \LaTeXe}.
Si vous voulez éviter ce saut de page non désiré, donc laisser \latex/
déplacer le flottant seulement s'il ne s'adapte pas à la page, l'utilisation
du package \textsf{afterpage} est conseillée avec :
\begin{verbatim}
\afterpage{\clearpage \begin{figure}[H] ... \end{figure}}
\end{verbatim}

Les plaintes de \latex/ avec \og Too many floats~\fg{} proviennent habituellement d'un
des problèmes ci-dessus, flottants ne pouvant être placés et \latex/ en accumulant 
du coup un trop grand nombre. Les solutions indiquées, particulièrement avec 
\Cmd{clearpage}, en viendront souvent à bout. Dans certains cas
il y aura vraiment trop de flottants cumulés et \latex/ possède un nombre limité
de \og boites~\fg{} pour les stoker. Le package \textsf{morefloats}
pourra alors être utilisé pour augmenter cette valeur.
Si cela ne suffit pas à vos besoins il faudra éditer ce package
pour le modifier (gardez cette version modifiée dans un répertoire personnel),
mais vous atteindriez alors une limite qu'il vaut mieux ne pas dépasser.
Votre seul recours acceptable sera alors de modifier votre document.

\section{Flottants multipage}

Un flottant sous \latex/ ne peut s'étendre sur plusieurs pages.
Cependant, il peut arriver quelquefois qu'un tableau ou une figure 
ne rentre pas sur une page. La façon facile de régler cela est de
sectionner votre tableau ou figure en plusieurs parties. Ceci peut provoquer
des effets indésirables :
\begin{itemize}
\item où couper ? En général plus délicat pour un tableau ;
\item comment les conserver sur des pages successives ;
\item comment n'avoir qu'une entrée dans la liste des tables/figures.
\end{itemize}

Bien que ces problèmes ne soient pas toujours solubles,
voici une paire de suggestions.

\subsection{Tables}

Pour les tables s'étendant sur plus d'une page, vous pouvez utiliser
le package \texttt{longtable}.
\TTindex{longtable}
Ce package définit un environnement \texttt{longtable}, mélange de 
 \texttt{table} et de \texttt{tabular}. Il garde approximativement
la syntaxe de  l'environnement \texttt{tabular}, mais avec quelques 
éléments de \texttt{table}, comme les légendes. Ces \emph{longtable}s
seront automatiquement étalées sur plusieurs pages si besoin et auront
une entrée unique dans la liste des tables (si une légende est données).
Cependant, elles ne flottent pas et ne peuvent être incluses dans
un environnement flottant. Il peut donc arriver qu'un environnement 
\texttt{table} soit défini avant le \texttt{longtable}, qu'il soit positionné
après ce dernier et donc que la numérotation soit faussée\footnote{N.D.T. :
Table 5 avant Table 4 dans le document par exemple.}.
Un autre problème est le début d'un \texttt{longtable} trop bas
dans la page, ce qui n'est guère plaisant. Si vous voulez qu'un
\texttt{longtable} démarre en haut d'une page, la meilleure manière est
de l'inclure dans une commande \Cmd{afterpage} (incluez 
le package \texttt{afterpage} dans le préambule).
Puisqu'une \texttt{longtable} est grande par définition, il vaut mieux 
la mettre dans un fichier séparé et utiliser la commande \Cmd{input}
dans une commande \Cmd{afterpage}. En voici deux exemples :
\CmdIndex{afterpage}
\begin{verbatim}
\afterpage{\input{malonguetable}}
\end{verbatim}
\begin{verbatim}
\afterpage{\clearpage\input{malonguetable}}
\end{verbatim}
La seconde formulation présente l'avantage de provoquer l'impression
des flottants en attente (si suffisants) avant \emph{malonguetable},
donc moins de risques avec la numérotation des tables.

\subsection{Figures}

Il n'existe pas d'option \texttt{longfigure} équivalente. Il vous faudra scinder
les figures vous même, ce qui est plus simple en général. Maintenant le problème
est de les garder groupées, c.-à-d. dans l'ordre sur des pages successives
et d'obtenir une seule entrée dans la liste des figures.

Vous devrez scinder la figure et mettre chaque partie
dans un environnement \texttt{figure} séparé. Pour les garder groupées, il vaut
mieux utiliser l'argument de placement \texttt{[p]} de sorte qu'elles soient
disposées sur des \emph{pages de flottants} successives.
Comme elles sont plus grandes qu'une page ceci est approprié.
Pour la légende il faut uniquement en donner une à la première partie
et pour la (les) partie(s) suivante(s), rien ou inclure le texte de la légende dans la
portion de figure. Comme pour  \texttt{longtable}, il est préférable d'englober
une commande \Cmd{clearpage} et les morceaux dans 
un environnement  \Cmd{afterpage}. Par exemple :
\begin{verbatim}
\afterpage{\clearpage\input{grandefigure}}
\end{verbatim}
ou \texttt{grandefigure.tex} contient :
\begin{verbatim}
\begin{figure}[p]
\includegraphics{mafigure1.eps}
\caption{Ceci est une figure sur plusieurs pages}
\label{fig:xxx}
\end{figure}
\begin{figure}[p]
\includegraphics{mafigure2.eps}
\begin{center}
Suite de la figure~\ref{fig:xxx}
\end{center}
\end{figure}
\end{verbatim}

Vous devez vous assurer que la dernière partie de figure soit assez grande, sinon \latex/
pourrait choisir de remettre à plus tard son affichage. Pour cela il est possible d'agrandir
la figure (par exemple avec l'utilisation de \Cmd{vspace}), ou en adaptant le
paramètre de \Cmd{floatpagefraction} \CmdIndex{floatpagefraction}.

Si vous voulez que votre figure multipage débute sur une page de gauche (paire),
vous devez effectuer un test sur la commande \Cmd{afterpage} en 
utilisant le package \texttt{ifthen} :
\begin{verbatim}
\afterpage{\clearpage
\ifthenelse{\isodd{\value{page}}{\afterpage{\input{grandefigure}}}% page impaire
    {\input{grandefigure}}}}% page paire
\end{verbatim}
Cependant si il y a trop de flottants à positionner sur  la page sautée, cela empêchera 
le démarrage de votre \og grandefigure \fg{} sur la page paire.

\section{Contact pour information}

Piet van Oostrum\\
Dept.\ of Computer Science\\
Utrecht University\\
P.O. Box 80.089\\
3508 TB Utrecht, The Netherls\\
Telephone: +31 30 2532180 Telefax: +31 30 2513791\\
E-mail: piet@cs.uu.nl \\
WWW: http://www.cs.uu.nl/people/piet

\printindex

\end{document}


% Local Variables:
% mode: latex
% TeX-master: t
% End:
