Suivant: Making paragraphs, Précédent: Counters, Monter: Top [Table des matières][Index]
Une longueur est une mesure de distance. Beaucoup de commandes LaTeX prennent une longueur en argument.
Il y a deux types de longueur. Une longueur rigide telle que
10pt
ne contient pas de composante en plus
ou
minus
. (En TeX de base on appelle cela une dimen).
Une longueur élastique (ce qu’en TeX de base on appel un
skip ou une glue) telle que dans 1cm plus0.05cm
minus0.01cm
peut contenir l’un ou l’autre de ces composantes ou les
deux. Dans cette longueur élastique, le 1cm
est la longueur
naturelle alors que les deux autres, les composantes en plus
et
minus
, permette à TeX à dilater ou contracter la longueur pour
optimiser la disposition.
Les exemples qui suivent utilisent ces deux commandes.
% Fait une barre noire de 10pt de haut et #1 de large \newcommand{\blackbar}[1]{\rule{#1}{10pt}} % Fait une boîte autour de #2 qui est #1 de large (sans la bordure) \newcommand{\showhbox}[2]{% \fboxsep=0pt\fbox{\hbox to #1{#2}}}
Cet exemple utilise ces commandes pour afficher une barre noire de 100 points de long entre ‘XXX’ et ‘YYY’. Cette longueur est rigide.
XXX\showhbox{100pt}{\blackbar{100pt}}YYY
Quant au longueur élastiques, la contraction est le plus simple des
deux : avec 1cm minus 0.05cm
, la longueur naturelle est 1cm
mais TeX peut la contracter jusqu’à 0,95cm. TeX refuse de
contracter plus que cela. Ainsi, ci-dessous le premier \showhbox
fonctionne bien, un espace de 98 points étant produit entre les deux
barres.
XXX\showhbox{300pt}{% \blackbar{101pt}\hspace{100pt minus 2pt}\blackbar{101pt}}YYY XXX\showhbox{300pt}{% \blackbar{105pt}\hspace{100pt minus 1pt}\blackbar{105pt}}YYY
Mais le second produit un avertissement du genre de ‘Overfull \hbox (1.0pt too wide) detected at line 17’. En sortie le premier ‘Y’ est écrasé par la fin de la barre noire, parce que la matière contenue par la boîte est plus large que les 300pt alloués, et que TeX a refusé de contracter le total en deçà de 309 points.
Dilater est similaire à contracter, à ceci près que si TeX doit dilater plus que la quantité disponible, alors il le fait. Ci-dessous la première ligne fonctionne bien, et produit un espace de 110 points entre les barres.
XXX\showhbox{300pt}{% \blackbar{95pt}\hspace{100pt plus 10pt}\blackbar{95pt}}YYY XXX\showhbox{300pt}{% \blackbar{95pt}\hspace{100pt plus 1pt}\blackbar{95pt}}YYY
Dans la seconde ligne TeX a besoin de dilater de 10 points alors que seulement 1 point a été spécifié. TeX dilate l’espace jusqu’à la longueur requise mais il produit un avertissement du genre de ‘Underfull \hbox (badness 10000) detected at line 22’. (On ne discute pas ici de ce que signifie « badness »).
Il est possible de mettre à la fois de la dilatation et de la
contraction dans la même longueur, comme dans 1ex plus 0.05ex
minus 0.02ex
.
Si TeX ajuste plus d’une longueur élastique alors il alloue la dilatation ou la contraction proportionnellement.
XXX\showhbox{300pt}{% \blackbar{100pt}% gauche \hspace{0pt plus 50pt}\blackbar{80pt}\hspace{0pt plus 10pt}% milieu \blackbar{100pt}}YYY % droite
Les barres de gauche et de droite prennent 100 points, de sorte que celle
du milieu a besoin également de 100. La barre du milieu fait 80 points
et donc les deux \hspace
doivent se dilater de 20 points.
Comme les deux sont plus 50pt
et plus 10pt
, TeX obtient
5/6 de la dilatation du premier espace et 1/6 du second.
La composante plus
ou minus
d’une longueur élastique peut
contenir un composante en fill, comme dans 1in plus2fill
.
Cela donne à la longueur une dilatabilité ou contractibilité infinie de
sorte que TeX puisse l’ajuster à n’importe quelle distance. Dans
l’exemple suivant les deux figures sont également espacées
horizontalement sur la page.
\begin{minipage}{\linewidth} \hspace{0pt plus 1fill}\includegraphics{godel.png}% \hspace{0pt plus 1fill}\includegraphics{einstein.png}% \hspace{0pt plus 1fill} \end{minipage}
TeX a trois niveaux d’infinité pour les composantes élastiques :
fil
, fill
, et filll
dans l’ordre d’infinité
croissante. D’ordinaire les auteurs de documents n’utilisent que celle
du milieu (voir \hfill et voir \vfill).
Multiplier une longueur élastique par un nombre la transforme en une
longueur rigide, de sorte qu’après \setlength{\ylength}{2.5cm
plus 0.5cm}
et \setlength{\zlength}{3\ylength}
alors la
valeur de \zlength
est 2.5cm
.
• Unités de longueur: | Les unités que LaTeX connaît. | |
• \setlength: | Règle la valeur d’une longueur. | |
• \addtolength: | Ajoute une quantité à une longueur. | |
• \settodepth: | Assigne à une longueur la profondeur de quelque chose. | |
• \settoheight: | Assigne à une longueur la hauteur de quelque chose. | |
• \settowidth: | Assigne à une longueur la largeur de quelque chose. | |
• Expressions: | Calculer avec des longueurs et des entiers. |
Suivant: Making paragraphs, Précédent: Counters, Monter: Top [Table des matières][Index]