Sauts de ligne et de paragraphe

Ce qui crée un paragraphe dans LaTeX, c’est une ligne vide. Mais une ligne vide n’est pas seulement quelque chose comme un saut de paragraphe : lorsque le processeur d’entrée de TeX en rencontre une, il insère la commande \par elle-même. Ligne vide et \par ne se ressemblent pas : ils sont identiques. Écrivez \let\par\relax puis laissez une ligne vide, et plus aucun paragraphe ne se forme — ce qui va de soi dès qu’on sait quelle commande la ligne vide lançait. Cette seule vérité entraîne tout le reste : pourquoi \\ ne doit pas séparer des paragraphes, à quoi servent \parindent et \parskip, et pourquoi seul le premier paragraphe après un titre reste sans retrait.

Une ligne vide est la commande \par

Un retour à la ligne dans la source ne vaut, dans la sortie, qu’une simple espace. Des phrases réparties sur trois lignes sont composées d’un seul tenant, et c’est TeX qui décide où les lignes se coupent réellement. Mais dès que le processeur d’entrée rencontre une ligne ne contenant que du blanc, il émet \par au lieu d’une espace. Deux conséquences en découlent. D’abord : deux lignes vides, ou cinq, ne changent rien. Quand le second \par arrive, TeX est déjà en mode vertical, et là \par ne fait strictement rien — empiler des lignes vides pour gagner de l’espace déplace la page de zéro. Ensuite : ligne vide et \par sont interchangeables.

latex
These three lines are broken
in the source, but they come out
as a single paragraph.

The blank line above started a new one.
Extra blank lines add nothing.



Still just one paragraph break.

L’endroit où l’on veut réellement écrire \par est celui où une ligne vide est interdite. Les lignes vides sont généralement proscrites dans la définition de commandes personnelles et à l’intérieur des arguments : une ligne vide dans l’argument de \section{...} arrête la compilation avec ! Paragraph ended before \@sect was complete. Le mode mathématique les refuse également et répond ! Missing $ inserted. Dans le texte courant, en revanche, une succession de \par ne fait que rendre la source moins lisible : la ligne vide reste le choix raisonnable dans un manuscrit.

Pourquoi \\ ne termine pas un paragraphe

\\ dit seulement : « termine ici la ligne ». Il ne dit rien du paragraphe. En interne, il remplit la fin de ligne avec \hfil et force une coupure à cet endroit ; \par n’y figure nulle part. Le paragraphe se poursuit donc tel quel. À la mesure, l’écart saute aux yeux : dans article en 10pt, la première ligne d’un nouveau paragraphe commence 15pt à l’intérieur de la marge de gauche, tandis que la ligne qui suit un \\ commence exactement sur la marge — sans retrait. L’espace entre paragraphes \parskip n’est pas inséré non plus. Voilà toute l’explication de cet aspect inabouti où le texte se coupe sans se lire comme un paragraphe.

Le journal fournit une preuve encore plus nette. Placez un \\ à la fin de la dernière ligne d’un paragraphe et TeX avertit : Underfull \hbox (badness 10000) in paragraph at lines 3--4. Ce qui se passe : \\ ordonne une coupure, le paragraphe s’achève aussitôt et il reste une ligne sans rien dedans. En augmentant \showboxdepth, on regarde à l’intérieur : la boîte vaut \hbox(0.0+0.0)x345.0 — hauteur nulle, largeur pleine justification. À l’inverse, employer \\ là où aucune ligne n’a commencé (tout au début d’un paragraphe) donne ! LaTeX Error: There's no line here to end. Les deux symptômes disent la même chose par les deux bouts : \\ est un outil de ligne, pas de paragraphe.

Cela ne rend pas \\ inutile pour autant. Avec une longueur entre crochets, \\[2ex] ajoute un espace vertical après cette ligne — les valeurs négatives sont admises — et c’est le geste classique pour aérer les rangées d’un tableau ou d’une formule hors texte. \\* interdit un saut de page à cet endroit et garde les deux lignes ensemble. En mode paragraphe, \newline se comporte exactement comme \\. \linebreak fait exception : il coupe à cet endroit et étire les espaces pour justifier la ligne jusqu’à la marge droite, d’où des blancs interlettres parfois béants. \linebreak[n] (n de 0 à 4) règle l’insistance : 4 impose la coupure, 1 est un « si possible » discret. Dans les tableaux, retenez aussi que \\ termine la rangée entière alors que \newline ne coupe qu’à l’intérieur d’une cellule.

latex
% wrong: the second block is still the same paragraph
First thought about the topic.\\
Second thought about the topic.

% right: a blank line ends the paragraph
First thought about the topic.

Second thought about the topic.

% \\ is for lines that belong together
\begin{tabular}{ll}
  Ada Lovelace & 1815 \\[2pt]
  Alan Turing  & 1912 \\
\end{tabular}

Les valeurs par défaut de \parindent et \parskip

Deux longueurs seulement décident de l’allure d’un paragraphe. \parindent est la largeur du retrait de première ligne, \parskip l’espace vertical entre paragraphes. Dans les classes standard, en une colonne, \parindent vaut 15pt pour un texte de 10pt, 17pt en 11pt, 1.5em (environ 17,6pt) en 12pt, et 1em en deux colonnes. \parskip, lui, vaut par défaut 0pt plus 1pt : non pas zéro, mais une longueur élastique — zéro pouvant s’étirer jusqu’à 1pt. Le jeu cumulé de ces points isolés donne à TeX un peu de marge pour égaliser le bas de page. Autrement dit, LaTeX standard suit la tradition du livre : marquer la frontière de paragraphe par le seul retrait et laisser l’espace à peu près nul.

Pour inverser le retrait d’un seul paragraphe, on emploie \noindent et \indent. \noindent en tête de paragraphe supprime son retrait ; \indent l’impose (en interne, il pose simplement une boîte vide de largeur \parindent). Aucun des deux n’agit au milieu d’un paragraphe : la question du retrait se règle à l’instant où la première ligne commence, et la décision ne se révoque pas. L’usage le plus courant, de loin, est un \noindent lorsqu’on reprend un texte interrompu par une citation ou une figure.

Pourquoi seul le premier paragraphe après un titre n’est pas en retrait

Ce n’est pas un défaut mais une convention typographique délibérée. Le retrait est au fond un signal de séparation — « un nouveau paragraphe commence ici » — et il ne signifie quelque chose que si un autre paragraphe précède. Juste après un titre, il n’y a pas de paragraphe précédent dont se séparer : le retrait ne renverrait à rien. L’omettre est la convention héritée. La mesure le confirme : seul le paragraphe suivant un \section commence au ras de la marge gauche, et le retrait de 15pt revient dès le paragraphe d’après.

L’implémentation est le plus amusant. LaTeX ne s’abstient pas de composer le retrait. TeX pose au début du paragraphe la boîte vide habituelle de largeur \parindent, puis LaTeX, depuis \everypar, exécute {\setbox\z@\lastbox} et retire aussitôt de la liste cette boîte à peine posée. Quels titres agissent ainsi ? Cela dépend du signe de l’argument « espace avant le titre » dans la commande de sectionnement : le moins du -3.5ex de \section est lu par le noyau comme « ne pas mettre en retrait le paragraphe suivant ». Quant au package indentfirst, qui rétablit le retrait, il tient en une ligne : \let\@afterindentfalse\@afterindenttrue. En faisant de « faux » un alias de « vrai », il rend à jamais inactionnable l’interrupteur qui supprime le retrait.

latex
\usepackage{indentfirst}   % indent the first paragraph after a heading too
\setlength{\parindent}{2em} % a wider first-line indent

\section{A heading}
With indentfirst loaded, this paragraph is indented like the others.

Paragraphes en bloc : pourquoi passer par le package parskip

Les spécifications, les documents internes et tout ce qui vient du Web privilégient souvent les « paragraphes en bloc » : pas de retrait de première ligne, mais un espace vertical entre paragraphes. La recette naïve consiste à mettre \parindent à zéro et à donner de l’espace à \parskip dans le préambule. Or cela entraîne bien plus de choses qu’on ne croit. Les lignes de la table des matières, l’écart entre les items d’une liste, l’espace autour des figures — LaTeX réutilise \parskip comme grandeur de base en de nombreux endroits, si bien que tout cela s’écarte en même temps, et pas seulement les paragraphes du corps.

C’est le package parskip qui prend ce travail en charge, et \usepackage{parskip} suffit. La version livrée avec TeX Live 2024 (v2) met \parindent à 0pt et \parskip à .5\baselineskip plus 2pt, puis corrige les définitions régissant l’espacement des titres, la table des matières et les listes pour qu’elles retranchent le \parskip ajouté et retrouvent leurs valeurs de conception. Rattraper tout cela à la main n’est pas réaliste. Le plus 2pt d’élasticité conservé est lui aussi voulu : il laisse à TeX de la marge pour trouver de meilleurs sauts de page. Pour des paragraphes en bloc tout en gardant le retrait, \usepackage[indent]{parskip} ; pour fixer soi-même l’espace, \usepackage[skip=10pt]{parskip}.

latex
% the naive version: also stretches the TOC, lists and float spacing
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}

% the maintained version: same look, without the collateral damage
\usepackage{parskip}
% \usepackage[indent]{parskip}     % keep the first-line indent
% \usepackage[skip=10pt]{parskip}  % choose the gap yourself

Saut de paragraphe, saut de page et espaces insécables

Changer de paragraphe et changer de page sont deux opérations distinctes. \newpage termine la page en cours et passe à la suivante, mais ne coupe pas un paragraphe. \clearpage va plus loin : il évacue tous les flottants en attente — figures et tableaux — avant de tourner la page. Employer l’un ou l’autre alors qu’on voulait seulement un nouveau paragraphe, c’est récolter en prime un saut de page non désiré et un bas de page à moitié vide. Il existe aussi des outils pour le besoin inverse. Le tilde ~ est une espace qui ne se coupe pas, pour les endroits où les deux côtés doivent rester sur une même ligne : Fig.~3, Dr.~Smith. \, est une espace fine, entre un nombre et son unité par exemple. Ni l’un ni l’autre ne coupe une ligne ou un paragraphe : ils ne font que définir la nature d’une espace, et cette distinction suffit à ne pas confondre les quatre commandes.

Gérer les paragraphes pendant la rédaction

Puisque les retours à la ligne de la source ne modifient pas la sortie, on peut les consacrer entièrement à la facilité d’édition. Les conventions courantes sont une phrase par ligne, ou une coupure aux frontières de propositions. Des lignes courtes rendent lisibles les différences en gestion de versions, et un coauteur qui relit le fichier voit d’un coup d’œil quelle phrase a changé. Les lignes vides restent réservées aux endroits où le paragraphe change vraiment. Dès que les retours de la source servent de substitut aux coupures sur la page, tout s’effondre au premier changement de police ou de marges.

À l’approche d’une échéance, la tentation est d’ajouter des lignes vides ou un \vspace au jugé. Mais dans LaTeX, un paragraphe est une structure de document. Un paragraphe porte-t-il deux affirmations ? L’explication d’une figure appartient-elle au paragraphe qui la précède ou à celui qui la suit ? Faut-il une courte transition juste après un titre ? Ce sont ces arbitrages qui viennent d’abord. Ensuite, en tenant la règle — les lignes vides marquent les frontières de paragraphe, \\ ne sert qu’à une coupure visuelle à l’intérieur d’un même paragraphe —, la structure survit à autant de relectures qu’on voudra.

  • Paragraphes du corps — laissez une ligne vide quand l’idée change ; n’ajoutez jamais de ligne vide pour l’apparence.
  • Blocs de titre, adresses, vers — n’employez \\ que lorsqu’un même élément sémantique doit occuper plusieurs lignes de sortie.
  • L’espace entre paragraphes déplaît — réglez-le pour tout le document avec le package parskip, pas avec des \vspace locaux.
  • Le retrait déplaît — fixez \parindent une seule fois dans le préambule et chargez indentfirst si le paragraphe suivant un titre doit lui aussi être en retrait.
  • Les sauts de page déplaisent — utilisez les commandes de pagination ou le placement des flottants, pas des commandes de paragraphe.