--- myst: html_meta: keywords: LaTeX, espacement, espace horizontaux, ligne trop courte --- # Comment gérer des longueurs ? ## Commandes de base Plusieurs longueurs sont prédéfinies en LaTeX. Par exemple les dimensions de la feuille et de la zone d'écriture. Pour utiliser une nouvelle longueur, il faut avant tout la déclarer à l'aide de la commande `\newlength{⟨longueur⟩}` où l'argument obligatoire est le nom de la longueur, qui doit obligatoirement commencer par une contre-oblique. Initialement, la longueur est nulle. Il existe des commandes pour modifier une longueur : - `\setlength{\longueur}{valeur}` et - `\addtolength{\longueur}{valeur}`. On peut utiliser plusieurs unités pour spécifier les longueurs. Voir le paragraphe [unités](/2_programmation/syntaxe/longueurs/unites_de_mesure_de_tex) à ce sujet. Pour afficher la valeur d'une longueur en points (pt), on utilisera la commande `\the\longueur`. ``` \newlength{\largeur} \setlength{\largeur}{12cm} La largeur est : \the\largeur ``` ## Longueurs fixes et longueurs flexibles Une longueur peut être rendue flexible en ajoutant les mots-clés `plus` et `minus` à sa définition. Cela permet d'ajuster l'espacement quand un respect strict de la valeur donnée produirait un mauvais effet : ainsi, un espacement vertical peut être réduit si cela permet d'éviter qu'un paragraphe se termine sur la première ligne de la page suivante. L'exemple suivant traite le cas d'un espacement horizontal. ``` \newlength{\pasflexible} \setlength{\pasflexible}{0.5em} \newlength{\flexible} \setlength{\flexible}{0.5em plus 0.3em minus 0.3em} \newcommand*{\seppasflexible}{\hspace{\pasflexible}|\hspace{\pasflexible}} \newcommand*{\sepflexible}{\hspace{\flexible}|\hspace{\flexible}} \thispagestyle{empty} Voici du texte\seppasflexible que l'on a\seppasflexible voulu diviser\seppasflexible en micro-unités\seppasflexible de quelques petits mots\seppasflexible qui vont\seppasflexible plus ou moins\seppasflexible ensemble.\seppasflexible En revoici\seppasflexible en revoilà un. Voici du texte\sepflexible que l'on a\sepflexible voulu diviser\sepflexible en micro-unités\sepflexible de quelques petits mots\sepflexible qui vont\sepflexible plus ou moins\sepflexible ensemble.\sepflexible En revoici\sepflexible en revoilà un. ``` Dans le premier paragraphe, où les espaces autour du séparateur `|` ont une longueur fixe, le compilateur ne peut pas éviter que la dernière ligne ne contienne que trois caractères : pour y parvenir, il aurait dû resserrer les mots de la ligne précédente de manière excessive. Dans le second paragraphe, au contraire, le compilateur a tiré parti de la possibilité de réduire légèrement la longueur de ces espaces pour placer la chaîne de caractères `un.` dans la deuxième ligne, évitant ainsi de produire une « ligne à voleur ».