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 à ce sujet.

Pour afficher la valeur d’une longueur en points (pt), on utilisera la commande \the\longueur.

<WRAP column 60ex>

\newlength{\largeur}
\setlength{\largeur}{12cm}

La largeur est : \the\largeur

</WRAP> <WRAP column 60ex> <latex> \newlength{largeur} \setlength{largeur}{12cm}

La largeur est : \thelargeur </latex> </WRAP> <WRAP clear />

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.

<WRAP column 60ex>

\documentclass{article}

\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}}

\begin{document}

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.

\end{document}

</WRAP> <WRAP column 60ex> <latex> \newlength{pasflexible} \setlength{pasflexible}{0.5em} \newlength{flexible} \setlength{flexible}{0.5em plus 0.3em minus 0.3em}

\newcommand*{seppasflexible}{hspace{pasflexible}hspace{flexible}}

\begin{document}

\thispagestyle{empty}

Voici du texteseppasflexible que l’on aseppasflexible voulu diviserseppasflexible en micro-unitésseppasflexible de quelques petits motsseppasflexible qui vontseppasflexible plus ou moinsseppasflexible ensemble.seppasflexible En revoiciseppasflexible en revoilà un.

Voici du textesepflexible que l’on asepflexible voulu divisersepflexible en micro-unitéssepflexible de quelques petits motssepflexible qui vontsepflexible plus ou moinssepflexible ensemble.sepflexible En revoicisepflexible en revoilà un.

\end{document} </latex> <WRAP justify> 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 ». </WRAP> </WRAP> <WRAP clear />