À l'intérieur d'un paragraphe justifié, LaTeX optimise automatiquement l'endroit où les lignes sont coupées. Habituellement, cela suffit, mais parfois vous voulez dire : « faites une pause ici » ou « ne faites pas une pause ici ». Cette page ne consiste pas à séparer les paragraphes (voir « Sauts de ligne et de paragraphe » pour cela). Il s'agit de la boîte à outils pour affiner les sauts de ligne *dans* un paragraphe : forcer les sauts, les empêcher, contrôler la césure et vivre avec les avertissements Overfull/Underfull.
Une règle de base d'abord : séparer les paragraphes (avec une ligne vide) est une question différente du réglage des sauts de ligne abordé ici. Une ligne vide commence un nouveau paragraphe, avec son retrait et son espacement entre les paragraphes. Ce qui suit déplace à la place l'endroit où la ligne *se termine* dans un seul paragraphe. Si cette distinction vous semble floue, lisez d'abord « Sauts de ligne et de paragraphe ».
Forcer un saut de ligne
Pour forcer un saut en milieu de paragraphe il existe deux familles de commandes. Le premier est \\ et \newline. Les deux se contentent de « terminer la ligne ici » sans quitter le mode paragraphe. Surtout, ils se coupent à la longueur naturelle du texte sans l'étirer — de sorte que la ligne s'arrête avant la marge droite et reste courte. Cela convient aux adresses ou aux vers, où chaque ligne doit se terminer exactement là où vous le souhaitez.
Le deuxième est \linebreak. Il casse *et* étire les espaces entre les mots afin que la ligne se justifie par la marge droite. Ainsi, contrairement à \\, la ligne n’est jamais courte – au lieu de cela, l’espacement des mots peut devenir flou. Sa force est définie par \linebreak[n] (n un entier de 0 à 4) : 4 signifie « forcer la pause » (la valeur par défaut sans argument), tandis que 1 est un léger « un autre endroit pourrait être meilleur, mais ici, c'est acceptable ». En bref, \linebreak est une *suggestion* sur l'endroit où s'arrêter, et l'étirement final de la ligne est laissé à la justification de LaTeX.
Le contraste est évident une fois compilé. Mettez \\ au milieu de la phrase et la ligne s'arrête là, laissant un espace blanc à droite au fur et à mesure qu'elle avance. Mettez \linebreak au même endroit et la ligne s'étend jusqu'au bord droit, ouvrant des espaces gênants entre les mots. Le mnémonique : \\ pour raccourcir, \linebreak pour justifier jusqu'à la marge. Notez que \\ a des extensions — une longueur entre crochets, comme dans \\[2ex], ajoute un espace vertical après cette ligne, et \\* interdit un saut de page à ce stade (voir « Sauts de ligne et de paragraphe »).
% \\ は短く折る/\linebreak は右端まで引き伸ばす
第一の道は険しく\\
第二の道はなだらかだ。
非常に長い一文をここで\linebreak 区切ると、左側の語間が広がります。En mode paragraphe, \newline est égal à \\, mais à l'intérieur d'un tableau (tabular), leurs rôles sont divisés : dans une cellule de création de paragraphe telle qu'une colonne p{...}, \newline s'interrompt uniquement dans la cellule, tandis que \\ interrompt la ligne entière. Utilisez \newline lorsque vous souhaitez une adresse sur deux lignes dans une cellule sans terminer la rangée. Et l'utilisation de \\ là où il n'y a pas de ligne à terminer (comme juste au début d'un paragraphe) génère l'erreur There's no line here to end.
Empêcher un saut de ligne
Pour le besoin inverse – « ne vous arrêtez pas ici » – il existe un ensemble d'outils correspondant. Le plus pratique est le tilde ~ (une « égalité ») : un espace inter-mots insécable utilisé pour garder ce qui se trouve de chaque côté sur la même ligne, comme dans Fig.~3, Dr.~Smith, Chapter~12 ou equation~\ref{eq:1}. Un ~ est la largeur d'un espace inter-mots ordinaire ; la seule différence est qu'aucun saut de ligne ne peut s'y produire. Parce qu'il permet toujours de couper les mots adjacents, c'est plus doux que de coller un mot entier avec \mbox et constitue généralement le premier choix.
Pour définir la force avec laquelle vous résistez à une cassure, utilisez \nolinebreak[n]. Le miroir de \linebreak, avec n de 0 à 4 : 4 (valeur par défaut) interdit complètement une pause à cet endroit, tandis que 1 est un léger « veuillez éviter de casser ici ». Lorsqu'une phrase entière ne doit pas être divisée, \mbox{...} est pratique : il traite son contenu comme une seule boîte et ne le coupe pas entre les lignes ni ne le coupe (pensez à empêcher T-34 de se diviser en T- et 34). \mbox est l'équivalent de LaTeX du simple TeX de \hbox, et l'écriture de \hbox{...} se comporte directement de la même manière. Le \nobreak de bas niveau impose une pénalité infinie « ne pas interrompre ici » à ce stade et sous-tend des commandes comme ~.
Attention : un mot enveloppé dans \mbox ne peut jamais se briser, donc s'il ne rentre pas, il dépassera de la marge droite et deviendra une boîte trop pleine. Geler des éléments véritablement cassables (URL longues, noms chimiques) à l'intérieur de \mbox se retourne donc contre vous. Recherchez ~ lorsqu'il s'agit d'un seul espace que vous souhaitez protéger, et \mbox uniquement pour une courte phrase que vous ne devez pas diviser.
Contrôle de la césure
Dans le texte occidental, LaTeX effectue automatiquement une césure, en insérant un trait d'union pour couper un mot sur plusieurs lignes. Il est généralement judicieux, mais peut avoir des ratés sur des noms propres ou du jargon qui ne figurent pas dans son dictionnaire. Pour un correctif ponctuel, utilisez \- (trait d'union avec barre oblique inverse, trait d'union discrétionnaire ou facultatif). Il intègre l'autorisation dans un mot - "vous pouvez interrompre ici si nécessaire" - donc écrire man\-u\-script, par exemple, permet à ce mot de s'interrompre uniquement aux points marqués.
Une subtilité se cache ici. Insérez ne serait-ce qu'un seul \- dans un mot et LaTeX le coupera *uniquement* aux points que vous avez marqués, jamais aux autres points où il se serait trouvé. Ainsi, \- ne signifie pas « vous pouvez également rompre ici » mais « vous ne pouvez rompre qu'ici. » Vous devez donc épeler chaque point de rupture que vous souhaitez. Notez que \- ne *force* pas une pause – il dit simplement « si vous cassez, ce doit être l'un de ces endroits ».
Si le même mot revient tout au long du document, enregistrez les exceptions une fois dans le préambule sans encombrer le corps. Répertoriez les mots avec leurs points d'arrêt marqués par des traits d'union dans \hyphenation{...}. Il s'agit d'un paramètre global qui s'applique à l'ensemble du document et plusieurs déclarations s'accumulent. Deux mises en garde : utilisez des lettres minuscules et TeX correspond exactement — les formes fléchies (plurielles et similaires) sont traitées séparément. Où \- signifie « juste ici, tout à l’heure », considérez \hyphenation comme « une entrée de dictionnaire pour l’ensemble du document ».
% プリアンブルで分割例外を一括登録(小文字・分割点をハイフンで)
\hyphenation{man-u-script analy-sis FORTRAN}
% 本文では、その場かぎりの任意ハイフン
super\-cali\-fragi\-listicÀ l'inverse, pour interdire complètement la césure d'un mot particulier, enveloppez-le dans \mbox{...} : le contenu d'une boîte ne se casse jamais, donc aucun trait d'union n'est inséré. Cependant, comme indiqué ci-dessus, un mot insécable peut déborder sur la ligne et provoquer une case Overfull. Le texte japonais n'a pas de césure dans ce sens, donc \- et \hyphenation sont essentiellement des outils pour les parties en langue occidentale.
Trop plein / Sous-plein \hbox avertissements
Au moment de la compilation, vous avez probablement vu des avertissements Overfull \hbox ou Underfull \hbox. Un \hbox (boîte horizontale) est une seule ligne composée. Trop plein signifie « la ligne ne correspondait pas et est restée au-delà de la marge droite », tandis que Sous-plein signifie « la ligne est trop lâche, avec un espacement intermots étiré. » Knuth a choisi d'avertir plutôt que d'accepter silencieusement une composition de qualité inférieure, vous laissant le soin de corriger. L'option de classe draft imprime une règle noire à côté de chaque ligne trop pleine afin que vous puissiez la repérer.
Pourquoi LaTeX laisse-t-il une ligne dépassant la marge ? Parce que lorsque TeX ne peut pas trouver un ensemble de sauts « présentables » dans le tronçon autorisé, il affiche le débordement comme un avertissement plutôt que d'espacer la ligne de manière grotesque. Le coupable habituel est un mot long, une URL ou un nom propre qui ne se brisera pas. Les premières choses à essayer sont les correctifs locaux des sections ci-dessus : donnez des points de rupture au mot avec \-, déposez un \linebreak à proximité ou démêlez un espace avec ~. Souvent, cela règle la question.
Lorsque les correctifs locaux sont fastidieux et que vous acceptez une certaine latitude pour réduire les avertissements, passez aux outils contondants. La déclaration \sloppy assouplit considérablement la tolérance de rupture (réglage interne de \tolerance sur 9999), acceptant un espacement lâche entre les mots en échange d'éviter les cases trop pleines. La valeur par défaut est \fussy, qui donne la priorité à un espacement uniforme au niveau du coût d'une boîte trop pleine occasionnelle. Après avoir émis \sloppy, revenez à \fussy à la fin du tronçon que vous souhaitiez affecter.
Ces déclarations ont cependant une bizarrerie. Le saut de ligne obéit à la déclaration en vigueur à la fin du paragraphe, donc pour que \sloppy affecte un paragraphe donné, vous devez inclure la ligne vide ou \par qui le termine dans la portée de \sloppy. Pour limiter l'effet à un seul paragraphe, l'environnement sloppypar est plus sûr : seul le texte entre \begin{sloppypar} et \end{sloppypar} est défini comme sous \sloppy, et le comportement normal reprend à la sortie.
Une approche plus raffinée est \emergencystretch — par ex. \setlength{\emergencystretch}{3em} — qui permet un étirement supplémentaire uniquement en dernier recours, en coupant les boîtes trop pleines sans perturber l'espacement aussi brutalement que \sloppy. Le package microtype, qui agrandit ou contracte subtilement les glyphes pour les adapter à la marge, est également utile. Le tableau ci-dessous résume le rôle de chaque commande.
| Commande | Rôle | Étire la ligne ? |
|---|---|---|
\\ , \newline | Forcer un saut de ligne (pas un saut de paragraphe) | Non – laissé court |
\linebreak[n] | Proposer une pause (n=4 la force) | Oui — justifie la marge |
\nolinebreak[n] | Interdire une pause à cet endroit (n=4 au complet) | — |
~ | Espace insécable (égalité) ; autorise toujours la césure | — |
\mbox{...} | Enveloppez le contenu dans une seule boîte ; pas de coupure, pas de césure | — |
\- | Trait d'union discrétionnaire ; casse le mot seulement ici | — |
\hyphenation{...} | Exceptions de rupture globale dans le préambule (minuscules, exactes) | — |
\sloppy / \fussy | Relâcher la tolérance / valeur par défaut ; localiser via sloppypar | \sloppy a tendance à relâcher l'espacement |
Ordre de correction des avertissements de saut de ligne
Si vous faites taire les avertissements Overfull ou Underfull \hbox en déposant \\ sur la ligne visible, une autre ligne est souvent interrompue plus tard. L'ordre est le suivant : révisez d'abord le libellé, puis ajoutez des opportunités de césure, puis utilisez des astuces locales de non-séparation ou de coupure, et seulement en dernier, assouplissez la tolérance du paragraphe. TeX optimise les sauts de ligne sur tout le paragraphe, le forçage ligne par ligne devrait donc être la dernière étape.
- Mots longs, URL et formules : identifiez-les d'abord et voyez s'ils peuvent être raccourcis naturellement ou interrompus avec une commande dédiée.
- Termes techniques : ajoutez
\hyphenation{...}ou\-pour que le même mot ne nécessite pas de réparation manuelle répétée. - Noms, numéros et unités : conservez uniquement les divisions illisibles avec
~ou\nolinebreak. - Dernier recours : localisez
sloppyparou\emergencystretch; ne relâchez pas l’espacement des mots pour l’ensemble du document.