Sunteți pe pagina 1din 26

Style de page avec L

A
T
E
X
Piet van Oostrum

Dept. of Computer Science


Utrecht University
2 mars 2004
Rsum
Cet article dcrit comment adapter la disposition des lments dune page pour vos do-
cuments L
A
T
E
X, c.--d. comment changer : les dimensions des marges, les en-ttes et les
pieds de page ainsi que le placement appropri des gures et des tables appeles ottants
sur la page. lorigine ctait la documentation du package fancyheadings. Elle contenait
galement dautres informations, par exemple sur lutilisation avance des marqueurs. Elle
a maintenant t amliore pour inclure notamment la manipulation des ottants. La docu-
mentation de fancyheadings a t amliore pour se conformer la version 2 de ce package
1
.
Pour des raisons de compatibilit avec certains systmes dexploitation, le nom du package a
t chang en fancyhdr.
Bien que cet article utilise les commandes de L
A
T
E
X2

, la plupart des techniques peuvent


tre employes avec des versions plus anciennes de L
A
T
E
X en eectuant quelques changements
appropris.
Notes de traduction. Ce texte est une traduction de la documentation du package
fancyhdr, le titre original en est Page layout in L
A
T
E
X .
Merci beaucoup Piet van Oostrum pour cette extension et sa documentation.
Lexpression Style de page en L
A
T
E
X sapplique au formatage des en-ttes et pieds de pages
et non pas lensemble de la page comme dans dautres logiciels. Cependant, dans cette do-
cumentation de fancyhdr, Piet van Oostrum fournit aussi des informations sur le placement
des ottants. Lorsquune information due la traduction, ou une prcision, est rajoute, elle
apparait en note de bas de page prcde de N.D.T. : . Le terme package nest pas traduit
dans ce document, ds que lon essaye L
A
T
E
X il apparait, jai donc pris loption de le conserver
tel quel. Pour le prambule, adapt au franais, des exemples voir dans la section 4. Cette
traduction essaye de respecter la nouvelle (depuis 1990 quand mme !) orthographe.
Table des matires
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 En-ttes et pieds de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Quest ce que fancyhdr ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Utilisation classique de fancyhdr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Un exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 Un exemple en impression recto-verso . . . . . . . . . . . . . . . . . . . . . . . . . 7

une considrable partie de cet article a t crite par George Grtzer (University of Manitoba) dans Notices
Amer. Math. Soc. Merci George !
1. cette version a du bncier dune mise jour maintenant.
1
7 Rednition du style plain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8 Le style par dfaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9 Une exclusivit de L
A
T
E
X, les marqueurs . . . . . . . . . . . . . . . . . . . . . . . . 9
10 En-ttes du style dictionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
11 Fancy styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
12 Largeur des en-ttes et des pieds de page . . . . . . . . . . . . . . . . . . . . . . . 13
13 Deux exemples de livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
14 Style de page spcial pour ottants . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
15 Les pages blanches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
16 Numrotation n/m et style de page . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
17 Numros de page par chapitre ou section . . . . . . . . . . . . . . . . . . . . . . . . 17
18 O placer les ordres de changement ? . . . . . . . . . . . . . . . . . . . . . . . . . . 17
19 En-ttes et pieds de page induits par le texte . . . . . . . . . . . . . . . . . . . . . 18
20 Pseudo lm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
21 Repres sur la tranche externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
22 Placement des ottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
23 Flottants multipage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
23.1 Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
23.2 Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
24 Contact pour information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1 Introduction
Une page dans un document L
A
T
E
X est construite avec diverses zones dcrites par la gure 1.
Le corps de la page contient le texte principal du document ainsi que les ventuels ottants,
tables et gures.
Les pages sont construites par la routine de sortie de L
A
T
E
X, qui est complexe et ne devrait
donc pas tre modie. Certains des packages dcrits dans cet article contiennent de petites mo-
dications de cette routine pour accomplir ce qui ne peut tre ralis dune autre manire. Vous
devriez employer ces packages pour obtenir le rsultat dsir plutt que de manipuler la routine
de sortie vous-mme.
Voici un certain nombre de points retenir :
1. Les marges du ct gauche ne sappellent pas \leftmargin, mais \evensidemargin (pour les
pages paires) et \oddsidemargin (pour les pages impaires). Dans les documents uniquement
recto \oddsidemargin est utilis dans les deux cas. \leftmargin est un paramtre valide
de L
A
T
E
X mais lui a une utilisation dirente (notamment lindentation des listes).
2. La plupart des paramtres ne devraient pas tre changs au milieu dun document. Quelques-
uns pourraient perdurer suite une modication de style et/ou page. Si vous voulez changer
la taille dune seule page, vous pouvez employer la commande \enlargethispage.
La zone des notes de marge contient de petites informations cres par la commande
\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 xes en ce qui concerne
la page mais approximativement la mme hauteur que le paragraphe dans lequel elles sont
appeles. En raison de lalgorithme traitant du placement des notes de marge, elles peuvent
2
Header
Body
Footer
Margin
Notes
i
8
-
i
7
?
6
i
1
-
- i
3
i
10
-
- i
9
6
?
i
11
i
2
?
6
6
?
i
4
6
?
i
5
6
?
i
6
1 one inch + \hoffset 2 one inch + \voffset
3 \oddsidemargin = 18pt 4 \topmargin = 0pt
5 \headheight = 12pt 6 \headsep = 25pt
7 \textheight = 646pt 8 \textwidth = 424pt
9 \marginparsep = 11pt 10 \marginparwidth = 54pt
11 \footskip = 30pt \marginparpush = 5pt (not shown)
\hoffset = 0pt \voffset = 0pt
\paperwidth = 597pt \paperheight = 845pt
Fig. 1 Zones composant une page. Les valeurs indiques sont celles en cours dans ce document
et non pas des valeurs par dfaut.
3
apparaitre malencontreusement dans un document recto-verso sur la mauvaise page si elles
sont proches dune coupure de page. Si vous voulez mettre linformation des endroits xes dans
les marges vous pouvez employer la technique dcrite dans les sections 20 et 21.
La premire partie de cet article dcrit comment changer les secteurs den-tte et de
pied de page. La dernire partie dcrit comment positionner vos ottants de la manire dsire.
2 En-ttes et pieds de page
Les en-ttes et pieds de page sont dnis avec L
A
T
E
X par les commandes \pagestyle
et \pagenumbering. La commande \pagestyle dnit laspect gnral des en-ttes et des
pieds de page (par exemple o le numro de page sera imprim), alors que \pagenumbering
dnit le style du numro de page. L
A
T
E
X inclut quatre styles de page standards :
empty vide, aucun en-tte ou pied de page
plain pas den-tte, le pied de page contient le numro de page centr
headings pas de pied de page, len-tte contient le nom du chapitre/section
et/ou de sous-section et le numro de page
myheadings pas de pied de page, len-tte contient le numro de page et lin-
formation fournie par lutilisateur
Bien que ce soient des modles utiles ils sont tout fait limits. Dautres modles de style de
page peuvent tre obtenus en dnissant des commandes de la forme \ps@xxx. Cette commande
est excute quand \pagestyle{xxx} est rencontre dans le document. La commande \ps@xxx
dnit les commandes suivantes pour les teneurs des en-ttes et des pied de page :
\@oddhead en-tte sur les pages impaires dans des documents recto-verso (sur
toutes les pages dans les documents recto)
\@evenhead en-tte sur les pages paires dans les document recto-verso
\@oddfoot pied de page sur les pages impaires dans des documents recto-verso
(sur toutes les pages dans les documents recto)
\@evenfoot pied de page sur les pages paires dans les documents recto-verso
Ce ne sont pas des commandes, mais plutt des variables qui sont utilises par la routine de
sortie de L
A
T
E
X. Si les noms de commandes contiennent le caractre @, elles doivent tre dnies
dans un package
2
, ou autrement comprises entre les commandes \makeatletter et \makeatother
dans le prambule.
La commande \pagenumbering dnit le style du numro de page. Elle prend un paramtre
de la liste suivante :
arabic chire arabe
roman chire romain en minuscule
Roman chire romain en capitale
alph lettre en minuscule
Alph lettre en capitale
La commande \pagenumbering{xxx} dnit \thepage en mettant le numro de page comme
dni par xxx. La commande de style de page inclut alors \thepage la bonne place. De plus
la commande \pagenumbering rinitialise le numro de page 1. Les commandes \pagestyle et
\pagenumbering sappliquent la page en construction, elles doivent donc tre positionnes sans
ambigit pour sappliquer la page voulue (voir la section 18 p.17).
2. N.D.T. : lui mme appel dans le prambule du document.
4
3 Quest ce que fancyhdr ?
Le package de macrocommandes fancyhdr permet dadapter facilement vos en-ttes et
pieds de page sous L
A
T
E
X. Vous pouvez dnir :
trois zones dans les en-ttes et pieds de page ;
des lets de sparation sous les en-ttes et au-dessus des pieds de page ;
une plus grande largeur pour les en-ttes et pieds de page que celle du texte ;
des en-ttes et pieds de page multilignes ;
dirents en-ttes et pieds de page pour les pages paires et impaires ;
dirents en-ttes et pieds de page pour les pages de titre de chapitre ;
dirents en-ttes et pieds de page pour les pages de ottants.
Naturellement, vous avez galement le contrle complet des polices, de la casse, de la graisse, etc.
4 Utilisation classique de fancyhdr
Pour utiliser ce package dans un document L
A
T
E
X2

placez le chier fancyhdr.sty dans un


rpertoire accessible
3
T
E
X, et incluez dans le prambule de votre document aprs :
\documentclass{...}
les commandes
4
:
\usepackage{fancyhdr}
\pagestyle{fancy}
Nous pouvons visualiser la disposition
5
de page que nous crons avec fancyhdr comme suit :
en-tte gauche en-tte centre en-tte droit
corps de texte
pied de page gauche pied de page centre pied de page droit
Len-tte gauche et le pied de page gauche sont aligns gauche ; len-tte centre et le
pied de page centre sont centrs ; len-tte droit et le pied de page droit sont aligns droite.
Nous pouvons dnir chacun des six champs et les deux lets de sparation sparment.
Prcisions sur le prambule des exemples en franais
Pour pouvoir traduire les exemples de codes et de rsultats jai utilis le prambule minimum
suivant :
\documentclass{book}
\usepackage[latin1]{inputenc}% Saisie de caractres accentus directement.
\usepackage[T1]{fontenc}% Codage de sortie incluant les caractres accentus.
3. N.D.T. : en clair respectez la T
E
X Directory Structure et les commandes de mise jour.
4. Pour L
A
T
E
X 2.09 vous devriez indiquer [fancyhdr] dans \documentstyle au lieu de la commande \usepackage.
5. N.D.T. : Ce nest pas le style par dfaut de fancy, uniquement les lments crs par fancyhdr.sty
5
\usepackage{lmodern}% Fonte incluant les caractres accentus.
\usepackage{fancyhdr}
\pagestyle{fancy}
ICI les exemples de code
\usepackage[frenchb]{babel}% traduction des noms chapitre, section, etc.
5 Un exemple simple
H. Dupont crit un rapport J.-P. Martin intitul La valeur des nouveaux diplms avec
la disposition de page suivante :
La valeur des nouveaux diplms
corps du texte
de : H. Dupont pour : J.-P. Martin 3
o 3 est le numro de page. Le titre : La valeur des nouveaux diplms est en gras.
Ceci est accompli par les commandes suivant \pagestyle{fancy}
6
soit :
\lhead{}
\chead{}
\rhead{\bfseries La valeur des nouveaux diplms}
\lfoot{de : H. Dupont}
\cfoot{pour : J.-P. Martin}
\rfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
(la macro \thepage donne le numro de la page courante. Utiliser \bfseries est une manire
sous L
A
T
E
X2

dobtenir les caractres en gras.)


Cest maintenant parfait sauf que la premire page, en utilisant \documentclass{article}
ou si vous dmarrez par une section (bizarre. . .) dans les classes report et book
7
, na pas besoin
de tous ces en-ttes et pieds de page. Pour liminer tout sauf le numro de page, centr dans le
pied de page :
\thispagestyle{plain}
Juste aprs \begin{document} ou une autre alternative :
\thispagestyle{empty}
si vous voulez len-tte et le pied de page vides.
Si vous utilisez \maketitle ce nest pas utile, car la norme des classes L
A
T
E
X dnit la com-
mande \maketitle de telle sorte quelle appelle \thispagestyle{plain} automatiquement. Donc
si vous voulez utiliser le style de fancy sur la page incluant \maketitle il vous faut utiliser
\thispagestyle{fancy} juste aprs lappel \maketitle.
6. notez que la version 1 de fancyheadings utilise la commande \setlength pour changer les paramtres de
\...rulewidth.
7. N.D.T. : prcisions rajoutes lors de la traduction.
6
6 Un exemple en impression recto-verso
Plusieurs classes de documents, comme book.cls, impriment en recto-verso par dfaut, les
pages paires et impaires ont alors une prsentation dirente. Dautres classes de document uti-
lisent loption twoside pour imprimer en recto-verso.
Maintenant imprimons le rapport en recto-verso. Laissez la disposition de page de la section 5
pour les pages impaires (du ct droit) et la suivante pour les pages paires (du ct gauche) :
La valeur des nouveaux diplms
corps du texte
4 de : H. Dupont pour : J.-P. Martin
o 4 est le numro de page.
Voici les commandes :
\fancyhead{} % vide len-tte
\fancyhead[RO,LE]{\bfseries La valeur des nouveaux diplms}
\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}
nous employons ici les commandes \fancyhead et \fancyfoot sous leur forme non abrge.
Celles-ci ont un paramtre additionnel entre crochets indiquant pour quelles pages et/ou parties de
len-tte/pied de page elles sappliquent. La premire commande \fancyhead omet ce paramtre,
et sapplique ainsi tous les champs den-tte. Elle est utilise en gnral pour se dbarrasser des
valeurs par dfaut ou dune dnition prcdente, comme ici. De mme \fancyfoot sans paramtre
(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 slecteurs qui peuvent
tre utiliss entre les crochets sont lists dans la gure 2. Ces slecteurs peuvent tre combins,
ainsi \fancyhead[LE,RO]{texte} dnira le champ pour len-tte gauche des pages paires et len-
tte droit des pages impaires. Si vous nindiquez pas E ou O la dnition sapplique aux deux. De
mme pour L R et C. Ainsi lutilisation de \lhead dans la section prcdente est juste labrviation
de \fancyhead[L]. Les slecteurs peuvent tre crits en capitales ou en minuscules.
Il y a galement la commande plus gnrale \fancyhf que vous pouvez employer pour com-
biner les caractristiques des en-ttes et des pieds de page. Ceci uniformise les H (en-tte) et F
(pied de page). En fait \fancyhead \fancyfoot quivalent \fancyhf avec H ou F spcis.
Vous pouvez toujours utiliser \thispagestyle{plain} pour obtenir le style classique en pre-
mire page.
7 Rednition du style plain
Certaines commandes L
A
T
E
X , comme \chapter et \maketitle, emploient \thispagestyle
pour commuter automatiquement au style de page plain, ignorant le style de page actuellement en
7
cours. Pour adapter mme de telles pages vous devez rednir le style plain. Comme nous lavons
dj indiqu vous pourriez faire ceci en rednissant la commande \ps@plain, mais fancyhdr
fournit une manire plus simple avec la commande \fancypagestyle. Celle ci peut tre employe
pour rednir les styles de page existants (comme plain) ou pour en crer de nouveaux, par
exemple si des parties de votre document ncessitent un style de page dirent. Cette commande
a deux paramtres : le premier tant le nom du style de page (re)dnir, le second contenant les
commandes changeant les en-ttes et/ou les pieds de page, c.--d. fancyhead, etc. Cela permet
aussi les changements de \headrulewidth et de \footrulewidth. titre dexemple nous allons
rednir le style plain du rapport de la section 6 en mettant le numro de page en gras.
\fancypagestyle{plain}{%
\fancyhf{} % vide len-tte et le pied~de~page.
\fancyfoot[C]{\bfseries \thepage} % numro de la page en cours en gras
% et centr en pied~de~page.
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
8 Le style par dfaut
Employons la classe de document book.cls et les paramtres par dfaut de fancyhdr, nous
utilisons alors seulement les commandes ;
\usepackage{fancyhdr}
\pagestyle{fancy}
et laissons fancyhdr soccuper de tout. Aux pages o les nouveaux chapitres dbutent, nous obte-
nons un numro de page centr dans le pied de page, sans en-tte ni let de sparation.
Sur les pages paires nous obtenons la disposition :
1.2 VALUATION CHAPITRE 1. INTRODUCTION
corps du texte
4
Sur les pages impaires nous obtenons la disposition :
E page paire Even page en anglais
O page impaire Odd page en anglais
L champ gauche Left eld en anglais
C champ centre Center eld en anglais
R champ droit Right eld en anglais
H en-tte Header en anglais
F pied de page Footer en anglais
Fig. 2 Slecteurs
8
CHAPITRE 1. INTRODUCTION 1.2 VALUATION
corps du texte
3
o le texte den-tte est en capitales inclines.
Cette disposition par dfaut est obtenue par les commandes suivantes :
\fancyhead[LE,RO]{\slshape \rightmark}
\fancyhead[LO,RE]{\slshape \leftmark}
\fancyfoot[C]{\thepage}
Les paramtres suivants sont employs pour les lets de sparation :
\headrulewidth 0.4pt
\footrulewidth 0pt
Le texte den-tte est transform en majuscule dans tout book.cls.
9 Une exclusivit de L
A
T
E
X, les marqueurs
Habituellement, pour des documents des classes book et report, les intituls de chapitre et
de section apparaissent dans les en-ttes (chapitre seulement pour limpression recto) et pour des
documents de classe article, ceux de section et subsection (section seulement pour limpression
recto). L
A
T
E
X utilise un mcanisme de marqueurs pour reprer les sectionnements et leurs intituls
par page, pour plus de dtails consultez le L
A
T
E
X Companion, section 4.3.1.
Il existe deux faons de manipuler les informations du sectionnement de niveau le plus lev et
de celui le plus bas dans une page. Les macros \leftmark(niveau-haut) et \rightmark (niveau-
bas) contiennent les informations utilises par L
A
T
E
X et elles sont utilisables directement comme
montr dans la section 8.
Le marqueur \leftmark contient largument de gauche (principal) du dernier \markboth de la
page. Le marqueur \rightmark contient largument de droite (secondaire) du premier \markboth
ou le seul argument du premier \markright de la page. Si aucune marque nest prsente dans une
page elles sont hrites de la page prcdente.
Vous pouvez moduler la faon dont les informations de chapitre, de section et de sous-section
(seulement deux dentre elles !) sont aches en rednissant les commandes \chaptermark,
\sectionmark et \subsectionmark
8
. Vous devez crer ces rednitions aprs le premier appel
de \pagestyle{fancy} puisque celui-ci leur donne des valeurs par dfaut.
Illustrons ceci avec linformation de chapitre. Elle se compose de trois parties :
le nombre (ici 2), ach par la macro \thechapter
le nom (en franais ; chapitre), ach par la macro \chaptername
le titre, stock dans largument de \chaptermark.
La gure 3 ache plusieurs variantes de chapitre 2. faire de suite . Le signe % la n
des lignes est pour viter les espaces non voulus. Si vous crivez tout sur la mme ligne il faut ter
ces signes %
9
.
8. Il existe les commandes similaires pour paragraph et subparagraph mais elles sont rarement utilises.
9. La commande \MakeUppercase est utilise par L
A
T
E
X2

pour obtenir un texte en capitales, en L


A
T
E
X 2.09 il
9
Le code :
\renewcommand{\chaptermark}[1]{%
\markboth{\chaptername
\ \thechapter.\ #1}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{\MakeUppercase{%
\chaptername}\ \thechapter.%
\ #1}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{\MakeUppercase{%
\chaptername\ \thechapter.%
\ #1}}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.\ #1}{}}
\renewcommand{\chaptermark}[1]{%
\markboth{\thechapter.%
\ \chaptername.\ #1}{}}
Ache :
Chapitre 2. faire de suite
CHAPITRE 2. faire de suite
CHAPITRE 2. FAIRE DE SUITE
remarque : ci-dessus la valeur par dfaut de fancy
faire de suite
2. faire de suite
2. Chapitre. faire de suite
Fig. 3 Variations de prsentation grce aux marqueurs
Pour linformation de sectionnement la plus basse lon utilisera la commande \markright.
Ainsi si Section 2.2. Premiers pas est la section courante :
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
va produire : 2.2. Premiers pas .
Rednir les commandes \chaptermark et \sectionmark nliminera pas toute les mises en
capitales. Par exemple la bibliographie aura un titre tel que bibliographie dans len-tte, car
la commande \MakeUppercase est explicitement crite dans la dnition de \thebibliography.
Idem pour index, etc. Si vous ne voulez pas rednir ces commandes, vous pouvez employer la
commande \nouppercase de fancyhdr disponible pour les zones den-tte et de pied de page. Notez
que ceci peut sappliquer dautres choses, comme les numros en chires romains en capitales dans
vos en-ttes, il faut donc lemployer avec prcaution. Cette commande formate son argument dans
un environnement en manipulant \MakeUppercase et \uppercase pour ne pas quils produisent
leur eet.
\lhead{\nouppercase{\rightmark}}
\rhead{\nouppercase{\leftmark}}
Il convient de noter que les mcanismes de marqueurs de L
A
T
E
X fonctionnent trs 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. Cest un
problme de L
A
T
E
X, pas de fancyhdr.
sagit de \uppercase. La dirence tant que \MakeUppercase fonctionne avec des caractres non-ASCII. Fancyhdr
dnit \MakeUppercase comme un alias de \uppercase sil nest pas dj dni.
10
Comme exemple utilisons un style de page o les leftmark(s) sont produits par les sections
et les rightmark(s) par les sous-sections (par dfaut dans la classe article). Prenons une page
avec quelques sections courtes, par exemple :
Section 1.
ICI un texte susant pour remplir une page
et un peu de la seconde.
subsection 1.1
subsection 1.2
Section 2.
Alors que leftmark contient le dernier marqueur principal de la page, soit section 2. ,
rightmark contient lui le premier marqueur secondaire de cette page, donc subsection 1.1 .
Ainsi len-tte de cette page combinera section 2 avec subsection 1.1, ce qui nest pas trs
logique. Le mieux que vous puissiez faire dans ces cas l est dutiliser uniquement les \rightmarks
et de rednir \sectionmark en consquence. Le commande L
A
T
E
X \firstleftmark pourra alors
vous tre utile (voir le package extramarks dans la section 19).
Un autre problme avec les marqueurs dans la norme des classes L
A
T
E
X est que les commandes
de sectionnement de plus haut niveau (par exemple \chapter) appellent \markboth avec un ar-
gument de droite vide. Ceci signie qu la premire page dun chapitre (ou dune section dans
la classe article) \rightmark sera vide. Si ceci vous pose problme, vous devrez insrer direc-
tement une commande \markright ou rednir les commandes \chaptermark (\sectionmark)
pour obtenir \markboth avec deux paramtres valides.
Comme remarque nale, veuillez noter que les formes * des commandes \chapter, etc. ne
produisent pas de marqueur. Ainsi si vous souhaitez que Prface apparaisse dans len-tte, mais
ne soit ni numrote ni mise dans la table des matires, vous devez crer \markboth vous-mme,
par exemple :
\chapter*{Prface\markboth{Prface}{}}
Entrer \markboth lintrieur de la commande \chapter* assure que la marque ne sera pas
spare du titre par une coupure de page. Naturellement avec \chapter* ceci ne serait pas un
problme mme si vous mettez la commande de marqueur aprs le titre de chapitre, car \chapter*
commence une nouvelle page. Cependant avec la commande \section* il pourrait tre dangereux
de faire :
\section*{Prface}
\markboth{Prface}{}
car une coupure de page peut advenir entre les deux commandes.
10 En-ttes du style dictionnaire
Dictionnaires et index ont habituellement un en-tte contenant le premier mot dni sur la page
ou les premier et dernier mots. Ceci peut facilement tre obtenu avec fancyhdr et le mcanisme des
mark de L
A
T
E
X. Bien entendu si vous utilisez les marqueurs pour un style den-ttes dictionnaire
vous ne pouvez pas les utiliser pour linformation sur les chapitres et sections. Donc si vous
avez en mme temps des chapitres et/ou sections prsents vous devez rednir \chaptermark et
\sectionmark pour les rendre inactifs :
\renewcommand{\chaptermark}[1]{}
\renewcommand{\sectionmark}[1]{}
11
Ensuite vous crivez \markboth{#1}{#1} pour chaque entre #1 du dictionnaire ou de lindex et
vous utilisez \rightmark pour obtenir la premire entre et \leftmark pour la dernire prsentes
sur la page.
Si vous dsirez obtenir un en-tte de la forme premier-mot/dernier-mot il est souhaitable davoir
seulement premier-mot si les deux sont identiques. Ceci arrive lorsquil ny a quune entre sur
la page. Dans ce cas un test doit tre ralis pour vrier si les marqueurs sont identiques. Les
marqueur de T
E
X sont cependant des btes tranges ne pouvant tre compars hors dune boite
avec une commande plain T
E
X. Heureusement le package ifthen fonctionne bien, donc pour raliser
cela il faut crire :
\usepackage{ifthen}
\newcommand{\mymarks}{
\ifthenelse{\equal{\leftmark}{\rightmark}}
{\rightmark} % si gaux
{\rightmark--\leftmark}} %si diffrents
\fancyhead[LE,RO]{\mymarks}
\fancyhead[LO,RE]{\thepage}
Les dictionnaires sont souvent composs sur deux colonnes. Malheureusement un bug de lop-
tion twocolum de L
A
T
E
X cause la perte des marqueurs. Pour viter ce problme vous pouvez utiliser
le package fisx2col.sty de David Carlisle.
11 Fancy styles
Vous pouvez faire un champ sur plusieurs lignes avec la commande \\. Vous pouvez aussi
rajouter un espace vertical supplmentaire dans une zone avec la commande \vspace. Notez que
si vous faites ceci vous devrez probablement augmenter la taille de len-tte (\headheight) et/ou
du pied de page (\footskip) sinon vous obtiendrez des messages derreur Overfull \vbox . . .has
occurred while \output is active
10
. Voir la section 4.1 du L
A
T
E
X Companion pour plus de dtails.
Par exemple, le code suivant placera, dans le coin suprieur droit, le titre de section et le titre
de sous-section dun article sur deux lignes :
\documentclass{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\addtolength{\headheight}{\baselineskip}
\renewcommand{\sectionmark}[1]{\markboth{#1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\rhead{\leftmark\\\rightmark}
Vous pouvez aussi paramtrer les lets de sparation. Par exemple pour paissir le let sous
len-tte :
\renewcommand{\headrulewidth}{0.6pt}
ou pour faire disparaitre le let en pied de page
11
:
\renewcommand{\footrulewidth}{0pt}
10. si vous employez une taille de 11pt ou 12pt vous devrez probablement aussi le faire car les valeurs par dfaut
de L
A
T
E
X sont plus petites
11. N.D.T. : Ce qui est loption par dfaut de \pagestyle{fancy}
12
Les lets de sparation sont eux mmes dnis par deux macros, \headrule et \footrule.
Par exemple, si vous prfrez un let en pointill plutt que continu dans len-tte, rednissez la
commande \headrule :
\renewcommand{\headrule}{\vbox to 0pt{\hbox
to\headwidth{\dotfill}\vss}}
Il existe un paramtre additionnel que vous pouvez utiliser : \footruleskip. Il dnit la dis-
tance entre le let de sparation du pied de page et le dessus de la ligne du texte de ce pied de page.
Par dfaut il est plac 30% de la valeur entre deux lignes classiques. Vous pouvez vouloir lajuster
si vous employez des polices inhabituellement grandes ou petites dans le pied de page. Changez sa
valeur avec \renewcommand.
12 Largeur des en-ttes et des pieds de page
La largeur des en-ttes et des pieds de page est \headwidth, qui par dfaut gale \textwidth
donc la largeur du corps de texte. Vous pouvez largir ou rtrcir ces zones l avec les commandes
\fancyheadoffset, \fancyfootoffset et \fancyhfoffset
12
. Elles sont similaires \fancyhead,
\fancyfoot et \fancyhf. La seule dirence est que les commandes de dcalages nacceptent pas
loption C (centre).
Utilisation : \fancyhfoffset[place]{length}
13
et de mme pour les autres.
Elle dnit des dcalages appliquer aux en-ttes et pieds de pages, largir dans les marges si
la longueur (length) est > 0 et rtrcir si cette longueur est < 0. Lutilisation est semblable celle
de \fancyhead, en utilisant uniquement les slecteurs (voir gure 2, p. 8) E, O, L, R ou e, o, l, r
pour indiquer la ou les zones traiter.
Avec ces commandes \headwidth sera calcule dynamiquement pour obtenir une dimension
den-tte et de pied de page ayant pour valeur \textwidth + dcalage-gauche + dcalage-droit.
Lexemple suivant
14
permet de crer un let de la largeur voulue (10pt+largeur du texte+10pt),
rouge en en-tte et bleu en pied de page (veuillez noter que la largeur du pied de page sappelle
aussi \headwidth bien que sa valeur puisse direr de celle de len-tte) :
\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}}
13 Deux exemples de livres
Les dnitions suivantes donnent une approximation du style utilis par Leslie Lamport pour
le L
A
T
E
X book.
Len-tte du L
A
T
E
X book de Lamport surplombe la marge extrieure. Ceci est obtenu avec les
commandes de dcalage dcrites dans la section prcdente.
12. ces commandes sont dnies depuis la version 3.0 de fancyhdr. Dans les versions plus anciennes vous pouvez
juste changer \headwidth avec les commandes \setlength et \addtolength. Vous tes encourags employer les
nouvelles commandes de dcalage la place. Vous ne pouvez absolument pas mlanger les deux approches.
13. N.D.T. : et lutilisation du package calc pour automatiser le calcul.
14. N.D.T. : exemple corrig, merci A.S.
13
\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-tte
\renewcommand{\headrulewidth}{0pt} % et pas de filets
}
Notez que les commandes \chaptermark et \sectionmark ont t rednies pour liminer le
numro de chapitre ainsi que la mise en capitale.
Pour le second exemple nous prenons le livre A
M
S-L
A
T
E
X.
Les pages de chapitre nont aucun en-tte ou pied de page. Ainsi nous utilisons :
\thispagestyle{empty}
pour chaque page de chapitre et nous navons pas besoin de rednir le style plain.
Les titres de chapitre et de section apparaissent sous la forme : 2. FAIRE DE SUITE, nous
devons donc rednir \chaptermark et \sectionmark (voir section 9) comme suit :
\renewcommand{\chaptermark}[1]%
{\markboth{\MakeUppercase{\thechapter.\ #1}}{}}
\renewcommand{\sectionmark}[1]%
{\markright{\MakeUppercase{\thesection.\ #1}}}
Dans un en-tte de page paire, le numro de page est imprim dans le champ gauche et le titre
du chapitre dans le champ droit ; dans un en-tte de page impaire, le titre de section est imprim
dans le champ gauche et le numro de page dans le champ droit. Le champ centre reste toujours
vide. Il ny a aucun pied de page.
Il y a un let de sparation dans len-tte, dune paisseur de 0.5pt. Nous dclarons donc les
commandes :
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0pt}
La police Helvetica en 9 pt grasse est utilise dans les en-ttes. Le systme PSNFSS de Sebas-
tian Rahtz emploie le nom court (Karl Berry) phv pour lHelvetica, donc nous utiliserons :
\fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont
dans notre cas (voir les sections 7.6.1 et 11.9.1 du L
A
T
E
X Companion.) Dnissons un raccourci
pour cela :
\newcommand{\helv}{%
\fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
14
Nous sommes prts maintenant pour le style de page :
\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}
14 Style de page spcial pour ottants
Certains souhaitent une disposition spciale pour les pages contenant uniquement des ottants.
Ces pages sont produites automatiquement par L
A
T
E
X, lutilisateur nayant aucun contrle sur elles.
Il nexiste pas de \thispagestyle pour les pages de ottants et toute tentative de changement du
style de ces pages aectera la page avant celle compose de ottants. Avec fancyhdr, cependant,
vous pouvez indiquer dans chacun des champs den-tte ou de pied de page
\iffloatpage{valeur pour la page}{valeur pour les autres pages}
N.D.T. : les textes de tous les en-ttes ou de pieds de page sont alors droits, pour retrouver le
style pench il faut alors taper : \lhead{\slshape \iffloatpage{}{\rightmark}} pour, dans
cet exemple, un en tte gauche vide (page de ottants) ou avec le contenu du marqueur rightmark.
Fin N.D.T.
Vous pouvez mme employer ceci pour supprimer le let de sparation des pages de ottants
uniquement en rednissant :
\renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}}
Parfois vous pouvez aussi vouloir changer de style pour les pages contenant un ottant en haut
de page ou en bas de page.
fancyhdr fournit les commandes \iftopfloat et \ifbotfloat similaires \iffloatpage.
Note : Les marqueurs dans des ottants ne sont pas visibles par la routine de sortie de L
A
T
E
X
il nest pas donc pas utile dutiliser des marqueurs avec les ottants. Donc il ny a actuellement
aucune manire dinsrer un titre de gure, par exemple, dans un en-tte ou un pied de page
15 Les pages blanches
Dans la classe book quand loption openany nest pas stipule, ou dans la classe report quand
loption openright est utilise, les chapitres commencent sur des pages impaires, en provoquant
linsertion dune page blanche la moiti du temps. Lon peut souhaiter que cette page soit absolu-
ment vide, c.--d. sans en-ttes ni pieds de page. Ceci ne peut pas tre obtenu avec \thispagestyle
car cette commande devrait tre crite sur la page prcdente. Aucune magie nest cependant n-
cessaire pour obtenir cela :
15
\clearpage{\pagestyle{empty}\cleardoublepage}
Comme \pagestyle{empty} est enferme dans un groupe elle aecte seulement la page qui
peut tre produite par \cleardoublepage. Vous pouvez bien sr mettre ce qui prcde dans une
commande personnelle. Si vous voulez une excution automatique de ceci chaque dbut de cha-
pitre et si vous voulez une note spcique pour ces pages vous devez rednir \cleardoublepage
comme ci-dessous
15
:
\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
16 Numrotation n/m et style de page
Quelques auteurs de documents prfrent une numrotation de pages du type n/m o m est
le nombre de pages du document. Il y a un package nofm.sty disponible, mais plusieurs de ses
versions sont dfectueuses et la plupart ne fonctionnent pas avec fancyhdr car elles rednissent
compltement le style de page. Pour L
A
T
E
X2

il existe le package lastpage que vous pouvez


employer avec fancyhdr comme suit :
\usepackage{lastpage}
...
\cfoot{\thepage/\pageref{LastPage}}
Si vous tes toujours utilisateur de L
A
T
E
X 2.09 et ne souhaitez pas passer L
A
T
E
X2

vous devez
utiliser le package lastpage209.sty compatible L
A
T
E
X 2.09 comme suit :
\let\origenddocument=\enddocument
\def\enddocument{\clearpage\if@filesw
{\addtocounter{page}{-1} \immediate\write\@mainaux
{\string\newlabel{LastPage}{{}{\thepage}}}}\origenddocument}
La valeur de ltiquette LastPage peut tre employe pour obtenir un en-tte ou pied de page
dirent sur la dernire page dun document. Par exemple si vous voulez le pied de page des pages
impaires, except la dernire si elle est impaire, contenant le texte tournez s.v.p. , ceci peut
tre obtenu comme suit
16
:
\usepackage{lastpage}
\usepackage{ifthen}
15. N.D.T. : les lignes de \vspace*{\fill} \vspace{\fill} inclues permettent lachage de la note, otez-les
pour obtenir une page absolument vide.
16. ceci exige une version assez rcente du package ifthen.
16
...
\rfoot{\ifthenelse{\isodd{\value{page}} \and \not
\value{page}=\pageref{LastPage}}{tournez s.v.p.}{}}
17 Numros de page par chapitre ou section
Trs souvent dans une documentation technique les numros de page sont nots sous la forme
2-10 o le premier nombre est le numro du chapitre et le second est le numro de page relativement
ce chapitre. Parfois la section est employe plutt que chapitre. Le package chappg peut tre
employ pour obtenir ce format. Si vous voulez changer la disposition, par exemple un point plutt
quun tiret, ou une section plutt quun chapitre, vous devriez raliser une copie prive, puis diter
cette dernire pour la modier comme vous le souhaitez.
Ce package rednit \thepage comme \arabic{chapter}-\arabic{page}. Malheureusement
ceci donne des nombres plutt que des lettres pour les annexes. Une meilleure dnition
est \thechapter-\arabic{page} mais vous devez vous-mme inscrire cette dnition aprs
\usepackage{chappg}. De mme ce package rinitialise le numro de page 1 au dbut de
chaque chapitre.
Il y a une dirence fondamentale entre la numrotation de page du style n/m comme dcrit
dans la section prcdente et celui ci. Le style n/m est uniquement employ dans len-tte ou
le pied de page, mais pas dans la table des matires, lindex, ou les rfrences comme voir page
xx . Par consquent il ne modie pas la commande \thepage. Les numros de page du style
2-10 , toutefois, doivent tre employs dans toutes les rfrences au numro de page, donc ils
doivent tre obtenus par la rednition de \thepage.
18 O placer les ordres de changement den-ttes
et de pieds de page ?
Parfois lon souhaite changer la disposition den-tte ou de pied de page en cours de document.
Certains de ces changements peuvent tre accomplis en employant le mcanisme des marqueurs
comme indiqu dans les sections 9 et 19. Cependant, lon veut quelquefois un changement plus ra-
dical, par exemple pour changer le style des chires du romain vers larabe (avec \pagenumbering),
pour changer un des champs obtenus par fancyhdr ou pour passer un autre style de page. Quelque-
fois le changement peut se produire plus tt que souhait. En gnral les changements mentionns
ci-dessus prennent eet immdiatement, c.--d. la page en construction ce moment l. Si vous
dsirez que le changement prenne eet la prochaine page vous devez vous assurer que la page
courante est termine. Dans la plupart des cas ceci peut tre fait en crivant \clearpage avant
les changements mentionns ci-dessus. Si ce nest pas possible vous pouvez employer : le package
afterpage avec :
\afterpage{\lhead{nouvelle valeur}} ou \afterpage{\pagenumbering{roman}}
Vous ne pouvez pas avec la commande \afterpage modier \pagestyle. \afterpage agit
localement dans un groupe, donc la fermeture de celui-ci les rednitions d\afterpage ne font
plus eet. En revanche, les commandes \pagenumberging et toutes celles de fancyhdr eectuent
des modications globales et fonctionneront donc comme la commande \thispagestyle.
Il convient de noter que bien que les commandes de fancyhdr comme \fancyhead prennent
eet immdiatement, ceci ne signie pas que toutes les variables utilises dans ces com-
mandes obtiennent leur valeur lendroit o ces instructions sont donnes. Par exemple si
\fancyfoot[C]{\thepage} est crit, le numro de page qui sera insr dans le pied de page nest
pas le numro de la page o cette instruction est crite, mais plutt le numro de la page o le
17
pied de page est construit. Pour le numro de page cest naturellement ce qui est voulu, mais ce
mcanisme est identique pour dautres commandes.
Ainsi avec un livre dont chaque chapitre est crit par un auteur dirent, si vous voulez le
nom de lauteur du chapitre dans le coin infrieur gauche vous pouvez employer les commandes
suivantes :
\newcommand{\TheAuthor}{}
\newcommand{\Author}[1]{\renewcommand{\TheAuthor}{#1}}
\lfoot{\TheAuthor}
et commencer chaque chapitre avec la commande \Author{Nom de lauteur du chapitre}. Ce-
pendant, si le nom de lauteur change avant la construction de la page, le mauvais nom pourrait
apparaitre en pied de page. Ce serait le cas si vous donniez linstruction ci-dessus avant la com-
mande \chapter plutt quaprs elle. Une autre source de problmes, le fonctionnement de la
routine de sortie de T
E
X produit des lments en amont de la zone traite, ainsi le traitement de
certaines commandes produit du texte qui paraitra la page suivante. La prochaine section en
fournit un exemple.
19 En-ttes et pieds de page induits par le texte
Nous avons vu comment employer les marqueurs de L
A
T
E
X pour obtenir linformation contenue
dans les en-ttes et pieds de page. Le mcanisme des marqueurs est le seul mcanisme able que
vous pouvez employer pour obtenir une information variable dans les en-ttes ou pieds de page.
Ceci car L
A
T
E
X traite votre document en aval avant de dcider ou placer le saut de page.
Parfois les deux marqueurs fournis par L
A
T
E
X sont insusants. Prenons lexemple suivant :
si une solution dexercice continue sur la page suivante, alors je voudrais avoir suite
prochaine page. . . en bas de de la premire et suite. . . en haut de la marge de la
suivante.
Vous ne pouvez utiliser pour cela le mcanisme des marqueurs de L
A
T
E
X en gardant linforma-
tion des chapitre et section.
Fancyhdr inclut un package fournissant deux marqueurs supplmentaires, utilisables dans ces
situations
17
. Voici une faon dutiliser ce package :
\usepackage{extramarks}
...
\pagestyle{fancy}
\lhead{\firstxmark}
\rfoot{\lastxmark}
...
\extramarks{}{suite prochaine page\ldots}
Texte stendant ou pas sur plusieurs pages
\extramarks{suite\ldots}{}
\extramarks{}{}
Notez que \extramarks et le texte forment un bloc. Aucun changement de paragraphe (ligne
vide ou \par) ne doit avoir lieu. Sinon la page peut changer sur cette rupture et les extramarks
apparaitraient sur la mauvaise page.
17. ce nest quaprs avoir ralis ce package que jai dcouvert le package secret.sty qui permet aussi de marquer
des paragraphes particuliers stendant sur plusieurs pages. Cependant, secret.sty modie la routine de sortie.
18
Deux nouveaux marqueurs peuvent tre employs dans le style de page avec ce package : Si
une commande de la forme \extramarks{m
1
}{m
2
} est crite \firstleftxmark
18
vous donne
la premire valeur de m
1
, \lastleftxmark donne la dernire valeur de m
1
, \firstrightxmark
fournit la premire valeur de m
2
et \lastrightxmark la dernire valeur de m
2
sur la page en
cours. En outre par convention (respect de la norme des marqueurs de L
A
T
E
X) \firstxmark est
gal \firstleftxmark et \lastxmark est gal \lastrightxmark. Ceci comme \topxmark ou
\topleftxmark sont identique \topmark de T
E
X, mais probablement peu employs.
Finalement ceci fournit les commandes \firstleftmark et \lastrightmark en complment
des marqueurs standards de L
A
T
E
X.
Pour souligner le fait que les marqueurs sont la bonne faon de procder, laissez-moi vous
montrer une mauvaise solution
19
:
\lhead{suite}
\rfoot{suite prochaine page\ldots}
Texte stendant ou pas sur plusieurs pages
\lhead{}
\rfoot{}
Vous pouvez tre tent de penser que les premiers \lhead et \rfoot seront en fonction lorsque
T
E
X produira un saut de page au milieu du texte et les derniers sil le place aprs le texte. Ce
nest pas vrai car le paragraphe entier (y compris les dernires dnitions) sera trait avant que
T
E
X positionne le saut de page, ainsi au moment de ce saut les dernires dnitions sont utilises,
que le saut de page ait lieu dans le texte ou aprs lui. Un changement de paragraphe entre le
texte et les dernires dnitions ne fonctionnera pas non plus, parce que vous ne voulez pas que
les premires dnitions soient utilises si T
E
X positionne un saut de page sur ce changement de
paragraphe. En fait le mcanisme des marqueurs a t invent pour se dbarrasser de ce genre de
problmes.
Dans le dernier exemple suite apparait dans len-tte. Il peut-tre prfrable de lavoir
dans la marge. Ceci peut facilement sobtenir en le positionnant de faon xe relativement
len-tte. En plain T
E
X nous devrions employer une combinaison de \hbox to 0pt, \vbox to
0pt, \hskip,\vskip, \hss et \vss, heureusement lenvironnement picture de L
A
T
E
X fournit une
manire beaucoup plus simple pour y arriver. Pour ne pas perturber la disposition normale des
en-ttes nous mettons le texte dans une image (picture) de dimension nulle. Cest la meilleure
faon, gnralement, de placer des choses en des endroits xes sur la page. Vous pouvez alors
employer en mme temps les en-ttes normaux. Voir aussi la section 21 pour un autre exemple de
cette technique.
\lhead{\setlength{\unitlength}{\baselineskip}%
\begin{picture}(0,0)
\put(-2,-3){\makebox(0,0)[r]{\firstxmark}}
\end{picture}\leftmark}
Cette solution peut naturellement tre employe aussi pour le pied de page. Assurez-vous que
vous avez mis picture en tant que premier lment dans les champs gauches pages paires [LE] et
dernier dans ceux droits pages impaires [RO].
Enn vous pouvez vouloir mettre suite. . . au dbut du texte plutt quen en-tte ou en
marge. Alors vous devez employer le package afterpage. Crons pour cela un nouvel environne-
ment.
18. avant la version 2.0 dextramarks.sty uniquement les commandes \firstxmark et \lastxmark sont dnies.
19. en fait il existe une autre manire mais elle ncessite deux compilations L
A
T
E
X, vous pouvez mettre des
commandes \label avant et aprs le texte et comparer les valeurs des \pageref.
19
\newenvironment{suite}{\par
\extramarks{}{suite prochaine page\ldots}
\afterpage{\noindent\firstxmark\vspace{1ex}}
}{\extramarks{(suite\ldots)}{}\par}
Il est dangereux demployer \firstxmark en dehors de la routine du style de page, mais
apparemment avec \afterpage cela fonctionne. Si vous avez besoin de linformation 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 fancyhdr. Par exemple, si vous voulez ajouter quelque chose
aprs la solution de lexercice (donc au redmarrage du texte coup par la solution) vous pouvez
employer ce qui suit :
\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 prcdente]}}}
Si vous voulez inclure un des marqueurs ou toute autre information variable dans le texte
stock, vous devez employer \xdef plutt que \gdef.
20 Pseudo lm
Si vous mettez sur le mme endroit de chaque page une image qui varie lgrement de page
en page, il est possible dobtenir comme un lm en feuilletant les pages. Vous pouvez crer un
tel pseudo-lm facilement avec fancyhdr. Pour plus de simplicit nous supposerons que chaque
image est dans un chier postscript (EPS) appel picn.ps ou n est le numro de page et
nous emploierons le package graphics ou mieux graphicx
20
. Pour positionner le pseudo-lm
droite
21
du pied de page la suite fonctionnera :
\rfoot{\setlength{\unitlength}{1mm}
\begin{picture}(0,0)
\put(5,0){\includegraphics{pic\thepage.ps}}
\end{picture}}
Notez que le paramtre de \unitlength doit tre plac localement dans le champ de fancyhdr
an dviter une interfrence, non souhaitable, avec sa valeur dans le corps du texte.
21 Repres sur la tranche externe
Sur certains annuaires et bibles lon trouve des repres-index (thumb-index), ce sont des
marques sur la tranche externe des pages qui indiquent o sont les chapitres. Vous pouvez crer
ces derniers en imprimant des zones noires dans la marge externe des pages. Leur position verticale
20. si vous utilisez une ancienne version de L
A
T
E
X vous utiliserez le package epsf ou epsfig.
21. en recto seul sinon pensez le placer sur les pages impaires.
20
devrait tre dtermine par le numro du chapitre ou un autre compteur. Leur position est ind-
pendante du contenu de la page, nous imprimerons donc ces zones en tant qulments den-tte
dans une image (picture) de taille nulle comme dcrit dans la section prcdente.
Naturellement nous devons prendre soin dimprimer recto et verso, nous pouvons aussi avoir
une page dindex avec toutes les zones en position correcte. La solution exige un rglage n pour
obtenir des zones bien espaces verticalement. Pour une application personnelle o javais 12
sections, jai spar les zones de 18 millimtres, zone imprime de 9 mm spare par un blanc de
9 mm. An dviter des calculs, les zones sont cres dans un environnement picture avec un
\unitlength valant 18 mm. Les numros de page sont placs dans les en-ttes, cts externes,
et les zones sont lies ces derniers. Dans cet exemple les numros de section sont utiliss pour
placer les zones, mais vous pouvez remplacer ceci avec nimporte quelle valeur numrique. Voir la
gure 4 pour la page dindex et la gure 5 page 22 pour le code.
1
1 Introduction
2 Premire anne
3 Spcialisation
Fig. 4 Page dindex des repres de tranche
22 Placement des ottants
Les ottants sont des lments de page qui ottent par rapport au reste du document. Les
ottants standard sont les tables et les gures, mais avec le package oat vous pouvez facilement
en crer de nouveaux, comme des algorithmes. La plupart du temps les ottants fonctionnent de
manire satisfaisante, mais parfois L
A
T
E
X semble trop ttu pour faire ce que vous voulez. Cette
section dcrit comment inuencer L
A
T
E
X de sorte quil fasse, le plus souvent, comme vous le dsirez.
Il se peut toutefois, dans quelques cas irrductibles, que vous ne puissiez contraindre L
A
T
E
X votre
convenance. Dans la suite nous emploierons des gures comme exemples, mais tout sapplique
aussi bien aux autres ottants.
Les problmes les plus frquents avec des ottants sont :
1. Vous voulez un ottant un certain emplacement dans le texte, mais L
A
T
E
X le dplace,
souvent la page suivante.
2. Pass un certain point, L
A
T
E
X dplace tous vos ottants la n du chapitre ou la n du
document.
3. L
A
T
E
X signale Too many oats, soit trop de ottants.
Dans les deux premiers cas vous devez vrier si vous avez donn un paramtre correct de
placement pour votre ottant, par exemple \begin{figure}[htp] signie que votre gure
peut tre place :
h, ici (h pour here) c.--d. la position ou vous la placez dans le texte ;
t, en haut de page (t pour top), page en cours ou suivante ;
p, sur une page ne contenant que des ottants.
21
\documentclass[a4paper]{book}% N.D.T. : a4paper pour ajuster
% les repres 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{Premire anne}
\secname{Spcialisation}
...
etc.
\end{picture}}
\begin{document}
\fancyhead[R]{\overview}\mbox{}\newpage % Ceci produit la page rcapitulative
\fancyhead[R]{}
\clearpage
\fancyhead[RE]{\rightmark}
\fancyhead[RO]{\rblob}
\fancyhead[LE]{\lblob}
\fancyhead[LO]{\leftmark}
...
etc.
Fig. 5 Code pour les repres sur la tranche externe, section 21 page 20
22
Vous pourriez aussi avoir indiqu b pour le bas (bottom) de la page. Lordre des lettres est
insigniant, vous ne pouvez pas forcer L
A
T
E
X essayer en bas dabord puis en haut par lindication
[bt].
Si L
A
T
E
X ne met pas le ottant lendroit o vous lattendiez, cela est habituellement provoqu
par ce qui suit :
1. Le ottant ne sadapte pas la page. Dans ce cas il doit tre dplac la prochaine page ou
mme plus loin. Si vous nindiquez pas lun [t] ou lautre [b] des paramtres de position
L
A
T
E
X doit continuer jusqu ce quil ait assez de ottants pour une page entire. Ainsi
nutilisez pas seulement [h]. Si vous voulez que L
A
T
E
X place ce ottant sur une page de
ottants, vous devez spcier p .
2. La position violerait les contraintes imposes par les paramtres de placement des ottants
de L
A
T
E
X. Cest une cause des plus frquente. Elle peut tre facilement corrige en changeant
ces paramtres, dont voici la liste :
Compteurs changez avec \setcounter
topnumber nombre max. de ottants en haut de page 2
bottomnumber nombre max. de ottants en bas de page 1
totalnumber nombre max. de ottants par page 3
Macros changez avec \renewcommand
\topfraction fraction max. en haut de page pour les ottants 0.7
\bottomfraction fraction max. en bas de page pour les ottants 0.3
\textfraction fraction min. du texte sur une page 0.2
\floatpagefraction fraction min. de ottants/page pour crer une page de ottants 0.5
Quelques autres paramtres existent pour des ottants sur deux colonnes dans les documents
multicolonnes.
Les valeurs dans la colonne de droite sont celles par dfauts pour les classes standard de L
A
T
E
X.
Dautres classes peuvent employer dautres valeurs par dfaut. Comme prcis par ces valeurs,
un ottants ne sera pas mis en bas dune page si sa taille est suprieure 30 % de la taille de
page. Ainsi si vous indiquez [hb] pour un ottant plus grand, il sera dplac vers une page de
ottants. Mais sil fait moins de 50 % de la taille de page il devra attendre le moment o assez
de ottants seront crs pour quune page de ottants soit remplie en respectant le paramtre de
\floatpagefraction. Si cela vous pose problme vous pouvez facilement adapter les paramtres,
par exemple avec :
\renewcommand{\textfraction}{0.05}
\renewcommand{\topfraction}{0.95}
\renewcommand{\bottomfraction}{0.95}
\renewcommand{\floatpagefraction}{0.35}
\setcounter{totalnumber}{5}
Attention de ne pas dnir un \floatpagefraction trop petit, vous risqueriez dobtenir beaucoup
de pages de ottants peu remplies.
Vous pouvez forcer L
A
T
E
X ignorer la plupart des paramtres pour une occurrence spcique de
ottant en incluant une marque dexclamation ( !) dans les paramtres de placement, par exemple :
\begin{figure}[!htb]
Les ottants contenant t dans les paramtres de position peuvent apparaitre donc en haut
de page avant lendroit o ils sont cits (mais la mme page). Cest le comportement normal de
L
A
T
E
X mais vous pouvez ne pas souhaiter cela. Il existe un certain nombre de faons dempcher
ceci :
23
1. Bien sur, supprimer le paramtre t rgle ce soucis, mais cest indsirable, vous pouvez
vouloir que le ottant soit en haut de la page suivante.
2. Utilisez le package flafter, celui-ci nautorise pas de ottants en amont de leur appel.
3. Utilisez la commande \suppressfloats[t]
22
. Cette commande dplace le ottant du haut
de sa page dappel la suivante. Elle peut tre utilise avec le paramtre [b] ou sans para-
mtre pour tout ottant sur la page o elle est inscrite.
Si malgr toutes vos tentatives L
A
T
E
X dplace toujours vos ottants la n du document ou
la n dun chapitre, vous pouvez insrer la commande \clearpage. Celle-ci dbutera une nouvelle
page et insrera tous les ottants en suspens avant de continuer. Si vous ne souhaitez pas de saut
de page immdiat, vous pouvez recourir au package afterpage et ajouter dans le texte :
\afterpage{clearpage}
Ceci permet de composer la page courante entirement et ensuite dobtenir une page de ot-
tants, si le paramtre de \floatpagefraction est atteint. Cependant, dans certaines circons-
tances, lutilisation dafterpage peut produire dtranges rsultats.
En conclusion, si vous voulez un ottant lendroit o vous le dnissez, sans que L
A
T
E
X ne le
dplace, vous pouvez employer le package oat et crire dans le prambule :
\restylefloat{figure}
Vous devez utiliser ensuite le paramtre de position [H], qui signie ICI et uniquement ICI .
Ceci peut cependant provoquer un saut de page non dsir
23
. Si vous voulez viter ce saut de
page non dsir, donc laisser L
A
T
E
X dplacer le ottant seulement sil ne sadapte pas la page,
lutilisation du package afterpage est conseille avec :
\afterpage{\clearpage \begin{figure}[H] ... \end{figure}}
Les plaintes de L
A
T
E
X avec Too many oats proviennent habituellement dun des problmes
ci-dessus, ottants ne pouvant tre placs et L
A
T
E
X en accumulant du coup un trop grand nombre.
Les solutions indiques, particulirement avec \clearpage, en viendront souvent bout. Dans
certains cas il y aura vraiment trop de ottants cumuls et L
A
T
E
X possde un nombre limit de
boites pour les stoker. Le package moreoats pourra alors tre utilis pour augmenter cette
valeur. Si cela ne sut pas vos besoins il faudra diter ce package pour le modier (gardez cette
version modie dans un rpertoire personnel), mais vous atteindriez alors une limite quil vaut
mieux ne pas dpasser. Votre seul recours acceptable sera alors de modier votre document.
23 Flottants multipage
Un ottant sous L
A
T
E
X ne peut stendre sur plusieurs pages. Cependant, il peut arriver quel-
quefois quun tableau ou une gure ne rentre pas sur une page. La faon facile de rgler cela est de
sectionner votre tableau ou gure en plusieurs parties. Ceci peut provoquer des eets indsirables :
o couper ? En gnral plus dlicat pour un tableau;
comment les conserver sur des pages successives ;
comment navoir quune entre dans la liste des tables/gures.
Bien que ces problmes ne soient pas toujours solubles, voici une paire de suggestions.
22. Cette commande ainsi que le paramtre ! ne sont pas dnis en L
A
T
E
X2.09.
23. here.sty a le mme eet, mais est incompatible avec avec L
A
T
E
X2

24
23.1 Tables
Pour les tables stendant sur plus dune page, vous pouvez utiliser le package longtable.
Ce package dnit un environnement longtable, mlange de table et de tabular. Il garde ap-
proximativement la syntaxe de lenvironnement tabular, mais avec quelques lments de table,
comme les lgendes. Ces longtables seront automatiquement tales sur plusieurs pages si besoin
et auront une entre unique dans la liste des tables (si une lgende est donnes). Cependant, elles
ne ottent pas et ne peuvent tre incluses dans un environnement ottant. Il peut donc arriver
quun environnement table soit dni avant le longtable, quil soit positionn aprs ce dernier et
donc que la numrotation soit fausse
24
. Un autre problme est le dbut dun longtable trop bas
dans la page, ce qui nest gure plaisant. Si vous voulez quun longtable dmarre en haut dune
page, la meilleure manire est de linclure dans une commande \afterpage (incluez le package
afterpage dans le prambule). Puisquune longtable est grande par dnition, il vaut mieux la
mettre dans un chier spar et utiliser la commande \input dans une commande \afterpage.
En voici deux exemples :
\afterpage{\input{malonguetable}}
\afterpage{\clearpage\input{malonguetable}}
La seconde formulation prsente lavantage de provoquer limpression des ottants en attente (si
susants) avant malonguetable, donc moins de risques avec la numrotation des tables.
23.2 Figures
Il nexiste pas doption longfigure quivalente. Il vous faudra scinder les gures vous mme,
ce qui est plus simple en gnral. Maintenant le problme est de les garder groupes, c.--d. dans
lordre sur des pages successives et dobtenir une seule entre dans la liste des gures.
Vous devrez scinder la gure et mettre chaque partie dans un environnement figure spar.
Pour les garder groupes, il vaut mieux utiliser largument de placement [p] de sorte quelles
soient disposes sur des pages de ottants successives. Comme elles sont plus grandes quune page
ceci est appropri. Pour la lgende il faut uniquement en donner une la premire partie et pour la
(les) partie(s) suivante(s), rien ou inclure le texte de la lgende dans la portion de gure. Comme
pour longtable, il est prfrable denglober une commande \clearpage et les morceaux dans un
environnement \afterpage. Par exemple :
\afterpage{\clearpage\input{grandefigure}}
ou grandefigure.tex contient :
\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}
24. N.D.T. : Table 5 avant Table 4 dans le document par exemple.
25
Vous devez vous assurer que la dernire partie de gure soit assez grande, sinon L
A
T
E
X pourrait
choisir de remettre plus tard son achage. Pour cela il est possible dagrandir la gure (par
exemple avec lutilisation de \vspace), ou en adaptant le paramtre de \floatpagefraction .
Si vous voulez que votre gure multipage dbute sur une page de gauche (paire), vous devez
eectuer un test sur la commande \afterpage en utilisant le package ifthen :
\afterpage{\clearpage
\ifthenelse{\isodd{\value{page}}{\afterpage{\input{grandefigure}}}% page impaire
{\input{grandefigure}}}}% page paire
Cependant si il y a trop de ottants positionner sur la page saute, cela empchera le dmarrage
de votre grandegure sur la page paire.
24 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
26

S-ar putea să vă placă și