Parmi les commandes de saut de page de LaTeX, \newpage et \pagebreak ne diffèrent, dans latex.ltx, que d’un \vfil. \newpage vaut \vfil \penalty -10000 ; \pagebreak est la même \penalty -10000 sans le \vfil. Ce seul blanc infiniment extensible décide si le reste de la page est jeté en blanc ou si le texte est étiré jusqu’à la marge inférieure. \clearpage va un cran plus loin et pose \penalty -10001 — une valeur supérieure d’une unité à l’infini de TeX, et c’est là l’astuce qui force la sortie des flottants en attente. Cette page traite \pagebreak[n], \newpage, \clearpage, \cleardoublepage, \nopagebreak[n], \samepage, needspace et \enlargethispage, avec les résultats de compilations réelles.
Précisons la couche. Cette page traite des commandes qui interviennent sur place dans un saut de page. Le rythme de tout le document — \widowpenalty et \clubpenalty (tous deux à 150 par défaut dans les classes standard), le choix entre \raggedbottom et \flushbottom, la part de page qu’un flottant peut occuper, et le diagnostic du « pourquoi la page s’est-elle terminée là » — est traité en profondeur sur la page consacrée à la conception des sauts de page. Sa règle centrale vaut ici aussi : régler les sauts de page en dernier. Un seul caractère ajouté décale toutes les coupures suivantes ; semer des \newpage avant que le texte soit figé laisse des blancs étranges à chaque révision. Ce qui suit est de l’outillage de fin de parcours.
\pagebreak et \newpage : étirer le reste ou le jeter
Les deux terminent la page à cet endroit, mais traitent l’espace vertical restant à l’inverse l’un de l’autre. \newpage pose un \vfil avant de couper, et ce blanc infiniment extensible absorbe tout le reste : le bas de page reste simplement blanc. \pagebreak ne pose aucun \vfil : le ressort déjà présent sur la page — l’interlignage, notamment — est alors étiré et le texte descend jusqu’à la marge inférieure. Le critère : \newpage quand on veut dire « on s’arrête là », comme en fin de chapitre ; \pagebreak quand on préfère ouvrir un peu l’interligne plutôt que laisser la page courte. Un effet de bord : \pagebreak peut couper au milieu d’un paragraphe.
Le n de \pagebreak[n] utilise exactement la même mécanique que \linebreak[n] côté lignes : il passe par \@getpen dans latex.ltx et, avec les valeurs d’article.cls, se traduit en 0, 51, 151, 301 et 10000. \pagebreak les insère en négatif, \nopagebreak en positif ; sans argument, les deux valent 4, soit ∓10000. Il suffit de retenir que [0] est une permission de couper ici et que seul [4] est un ordre. Notez que dans un document sous \flushbottom — un article en twoside, ou book par défaut —, \pagebreak peut laisser la page impossible à remplir et signaler Underfull \vbox (badness 10000) has occurred while \output is active. Mesuré : cette ligne est apparue dans le log dès qu’un \pagebreak a été placé au milieu d’un paragraphe dans un article en twoside. Sous \raggedbottom, l’avertissement ne se déclenche jamais, une page courte étant permise.
\clearpage et \newpage : pourquoi une figure échoue dans la section suivante
\clearpage émet tous les flottants en attente (figure et table) avant de couper ; \newpage non. L’écart se mesure facilement. Prenez un document composé de texte, Figure A, Figure B, puis un \section*, et compilez-le de trois façons. Sans rien insérer, la page 1 porte le titre de section et la Figure A, la page 2 la Figure B. Insérez \newpage : le document reste sur deux pages, mais le titre et la Figure B partagent désormais la page 2 — la section censée venir après les figures est passée devant la Figure B. Insérez \clearpage : trois pages, Figure A page 1, Figure B page 2, et le titre seulement page 3. Quand l’ordre des figures fait sens, la frontière entre sections appelle \clearpage.
\begin{figure}[b]\centering\rule{4cm}{3cm}\caption{Figure A}\end{figure}
\begin{figure}[b]\centering\rule{4cm}{3cm}\caption{Figure B}\end{figure}
% \newpage -> heading and Figure B end up together on page 2
% \clearpage -> Figure A p.1, Figure B p.2, heading p.3
\clearpage
\section*{This section must come after its figures}L’astuce est dans la définition elle-même. \clearpage appelle \newpage, puis pose \write\m@ne{}, une \vbox{} vide et \penalty -\@Mi. \@Mi vaut 10001 — une unité de plus que l’infini de TeX —, ce qui relance la routine de sortie et vide la file des flottants différés. Une mise en garde : en mode deux colonnes, \newpage ne termine que la colonne. Mesuré : dans un article en twocolumn, le texte suivant un \newpage est tombé dans la colonne de droite de la même page, sans changer de page ; c’est \clearpage, dans le même document, qui a le premier basculé sur la page suivante. Pour changer réellement de page en deux colonnes, utilisez \clearpage ou \cleardoublepage.
\cleardoublepage : ouvrir toujours un chapitre sur une page de droite
\cleardoublepage exécute \clearpage puis, uniquement sous twoside, insère une page blanche afin que le texte suivant commence sur une page impaire (de droite). La définition est assez courte pour être lue à voix haute : après \clearpage, si twoside est actif et que le numéro de page est pair, faire \hbox{}\newpage. Ce \hbox{} sert à faire passer la page pour non vide ; sans lui, la page blanche serait écartée au lieu d’être imprimée. En deux colonnes, l’étape est répétée deux fois. C’est le mécanisme des livres reliés dont les chapitres s’ouvrent toujours au recto ; \chapter de la classe book l’appelle par défaut. En impression recto seul, la condition n’est jamais remplie : le comportement est celui de \clearpage.
Interdire ici un saut de page : \nopagebreak marche, \samepage non
\samepage ne parvient pas à retenir ensemble des paragraphes consécutifs. La mesure est sans pitié, la voici donc d’abord. Dans un document où six paragraphes d’une ligne se trouvent près du bas de page, la version brute place BLOCK1–4 en page 1 et BLOCK5–6 en page 2. Enveloppez ces six paragraphes dans \begin{samepage} … \end{samepage}, ou groupez-les en {\samepage …} : la coupure est rigoureusement identique. La définition l’explique : \samepage est une déclaration qui met neuf paramètres — \interlinepenalty, \predisplaypenalty, \postdisplaypenalty, \interdisplaylinepenalty, \@beginparpenalty, \@endparpenalty, \@itempenalty, \@secpenalty et \interfootnotelinepenalty — à \@M (10000), et aucun de ces neuf ne régit la jointure entre deux paragraphes. L’intérieur d’un paragraphe, les intervalles entre éléments de liste et les abords d’une formule hors texte sont protégés ; un changement de paragraphe ordinaire passe tout droit.
Pour protéger une couture précise, \nopagebreak[n] est la bonne réponse. Dans la même expérience, poser un \nopagebreak à la frontière BLOCK4/BLOCK5 a déplacé la coupure entre 3 et 4, et BLOCK4 est parti à la page suivante avec BLOCK5 et 6. Le placer juste avant ou juste après le paragraphe n’a rien changé. \nopagebreak se contente de poser une pénalité à cet endroit — via \vadjust en mode horizontal, directement en mode vertical —, ce qui en fait l’outil le plus fiable quand on sait exactement quelle couture ne doit pas céder : entre un titre et le texte qui suit, ou entre une figure et son explication. Pour la demande différente « garder ce bloc de N lignes ensemble », le needspace ci-dessous convient mieux.
% Measured: six one-line paragraphs at the foot of a page split 4 | 5.
% \samepage around all six changes nothing.
% \nopagebreak at the seam moves the split to 3 | 4.
BLOCK4\par\nopagebreak
BLOCK5\par
% Reserve room instead of forbidding a break:
\usepackage{needspace}
\needspace{6\baselineskip}
% Or make just this one page one line taller:
\enlargethispage{\baselineskip}Le package needspace : « nouvelle page sauf si six lignes tiennent encore »
\needspace{6\baselineskip} est une condition : « s’il ne reste pas d’ici au bas de page la hauteur de six lignes, coupe maintenant ». Ajoutez \usepackage{needspace} à l’expérience où \samepage a échoué et placez \needspace{6\baselineskip} avant les six paragraphes : BLOCK1 à 6 sont tous passés en page 2. Comme il réserve de la place au lieu d’interdire une coupure, il n’échoue jamais en silence comme \samepage. Exprimer la longueur en multiples de \baselineskip est le plus parlant, mais pt ou cm conviennent aussi. Il existe également \Needspace{...}, qui réserve l’espace plus exactement, et \Needspace*{...}, qui sous \flushbottom garde le pied d’une page courte aligné ; ces deux-là s’emploient entre paragraphes. C’est le moyen le plus direct d’empêcher un titre de rester seul en bas de page.
\enlargethispage : rendre cette seule page plus haute d’une ligne
\enlargethispage{\baselineskip} agrandit temporairement la seule \textheight de la page en cours, pour qu’une ligne de plus y tienne. L’effet se compte. Dans un article alimenté par 120 paragraphes d’une ligne, la dernière ligne de la page 1 était LINE46 sans rien toucher. Ajoutez \enlargethispage{\baselineskip} : LINE47 ; {2\baselineskip} : LINE48 ; une longueur négative {-\baselineskip} la réduit au contraire à LINE45. Exactement ce qui était demandé. L’implémentation est d’une franchise réjouissante : latex.ltx trompe la hauteur cible de la page en glissant un \vskip négatif dans un insert nommé \@kludgeins — LaTeX qualifie lui-même le mécanisme de kludge, un bricolage, ce qui en dit long sur le caractère de la commande. Pour caser une ligne quitte à resserrer l’interlignage, on prend la forme étoilée \enlargethispage*{\baselineskip}.
L’occasion habituelle de cette commande est le rattrapage d’une ligne échouée. Quand la dernière ligne d’un paragraphe reste seule en haut de la page suivante — une veuve —, rendre cette page plus haute d’une ligne avec \enlargethispage{\baselineskip} la ramène et la veuve disparaît. On peut aussi les interdire dans tout le document en portant \widowpenalty à 10000, mais le prix — des pieds de page qui ne s’alignent plus et un Underfull \vbox sous \flushbottom — est comparé, mesures à l’appui, sur la page consacrée à la conception des sauts de page. La règle de la passe finale : régler la majorité par un réglage global, puis traiter un à un les rares survivants avec \enlargethispage. Laissez toujours un commentaire à côté d’une ligne posée à la main. Après une révision du texte, seul ce commentaire vous dira si le correctif est devenu nuisible.
| Commande | Ce qu’elle fait | Attention |
|---|---|---|
\pagebreak[n] | Insère la pénalité −(0/51/151/301/10000) ; pas de \vfil, le texte descend jusqu’au pied | Peut couper en milieu de paragraphe ; sous \flushbottom, risque d’Underfull \vbox |
\newpage | \vfil \penalty -10000 ; laisse le reste de la page en blanc | En deux colonnes, ne termine que la colonne ; ne vide pas les flottants |
\clearpage | \newpage plus \penalty -10001 ; émet tous les flottants en attente avant de couper | À placer en frontière de section ; en plein texte, il laisse un grand blanc |
\cleardoublepage | \clearpage, puis sous twoside reprend sur une page impaire (droite), avec une blanche au besoin | Identique à \clearpage sous oneside ; en deux colonnes, l’étape est exécutée deux fois |
\nopagebreak[n] | Insère la pénalité +(0/51/151/301/10000) à cet endroit | Le plus fiable quand une couture précise ne doit pas céder : titre et texte |
\samepage | Déclaration qui met neuf pénalités à 10000 (utilisable aussi comme environnement) | N’agit pas entre paragraphes. Mesuré : la coupure BLOCK4/5 a subsisté |
\needspace{N\baselineskip} | Coupe si la place de N lignes ne reste pas (package needspace) | Réserve au lieu d’interdire — idéal pour garder un titre avec ses premières lignes |
\enlargethispage{\baselineskip} | Agrandit temporairement la seule \textheight de cette page ; mesuré, LINE46 est devenue LINE47 | Une longueur négative la réduit ; la forme étoilée y tasse une ligne |
La passe de pagination : quoi inspecter, dans quel ordre
Ne commencez la passe de pagination que lorsque le corps du texte, les flottants et la bibliographie sont tous en place. Il y a un ordre. Vérifiez d’abord si les flottants s’accumulent et purgez-les au besoin avec \clearpage. Protégez ensuite, avec needspace, tout titre qui risquerait d’échouer en bas de page. Traitez enfin une à une les lignes esseulées les plus voyantes avec \enlargethispage. Ne semez des \newpage que là où la structure des chapitres l’exige vraiment. Laissez un commentaire justifiant chaque intervention — dans six mois, vous ne saurez plus pourquoi cet \enlargethispage se trouve là.
- Aux frontières de chapitre et d’annexe,
\clearpageou\cleardoublepage. Cela empêche les figures de dériver vers la partie suivante ; en deux colonnes,\newpagene suffit pas. - Réservez environ
\needspace{3\baselineskip}avant un titre. Réserver de la place plutôt qu’interdire, et ne comptez pas sur\samepage. - Quand une couture précise doit tenir,
\nopagebreak. Une figure et son explication ; un titre et son premier paragraphe. - Pour une ligne isolée,
\enlargethispage{\baselineskip}. Examinez le volume de blanc et l’alignement des pieds avant de l’appliquer. - Commentez chaque saut de page posé à la main. Cette ligne sera la seule à vous dire s’il faut le retirer après une modification du texte.