Les boites
Comment LaTeX gère-t'il le document ? Il travaille en utilisant des boîtes qu'il ajuste les unes par rapport aux autres, qu'il emboîte les unes dans les autres. Chaque caractère est dans une boîte, ainsi que chaque mot, chaque paragraphe.
La figure l9.2 montre un mot avec les différentes boîtes autour. On voit tout d'abord une boîte par lettre (en vert) et une boîte pour le mot (en orange). D'autres paramètres interviennent, en bleu on voit une ligne appelée ligne de base du mot.
La ligne de base délimite deux parties sur la boite du mot : la hauteur de la boite est la longueur à partir de la ligne de base jusque la plus haute boîte tandis que la profondeur de la boite est la longueur de la ligne de base jusque la plus basse boite.
Quelques simples boites
La commande mbox
permet de créer une simple boite autour d'un texte, empêchant notamment ainsi LaTeX de séparer son contenu pour par exemple effectuer une césure. Attention, le texte que l'on emboite doit tenir sur une ligne de texte.
| \mbox{Cette phrase ne sera pas par \LaTeX} |
|
listing l9.13 La commande mbox
On a aussi la commande makebox
qui est un peu plus fournie. On peut ainsi spécifier la largeur de la boite et la position du texte à l'intérieur par le biais de deux options de la commande. La forme générale de la commande est :
| \makebox[Largeur][Position]{Texte} |
|
listing l9.14 La commande makebox
La première option Largeur est la largeur de la boite, la seconde option est la position du texte dans la boite, par défaut, quand on ne spécifie rien, le texte est centré. Sinon, on peut mettre les valeurs suivantes :
l
: Pousse le texte contre le bord gauche de la boite ;
r
: Pousse le texte contre le bord droit de la boite ;
s
: Pour que le texte occupe toute la largeur de la boite.
| \makebox[5cm]{} | | \makebox[5cm][l]{Texte gauche} | | \makebox[5cm][r]{Texte droite} | | \makebox[5cm][s]{Toute la largeur} |
|
listing l9.15 Exemple de makebox
Deux autres commandes fonctionnent de la même manière que celles que nous venons de découvrir si ce n'est qu'elles ajoutent un cadre autour de la boite. Il s'agit des commandes fbox
et framebox
.
La commande raisebox
La commande raisebox
permet d'englober du texte dans une nouvelle boite et ensuite de la monter ou descendre par rapport à la ligne de base.
| Comme tu es \raisebox{3ex}{\fbox{grand}} mon ami. |
|
listing l9.16 Exemple de raisebox
Il est également possible de préciser la hauteur et la profondeur de cette boite en utilisant des options de la commande raisebox
. Voici la version complète de la commande :
| \raisebox{Difference}[Hauteur][Profondeur]{Texte} |
|
listing l9.17 La commande raisebox
D'autres boites spéciale existent pour par exemple effectuer une rotation sur une portion de texte, ou effectuer un changement d'échelle, elles seront abordées dans le chapitre sur les graphismes avancés.
Dimension des boites
À chaque boite en cours de traitement est associée quatre longueurs accessibles via les commandes de longueur reprises dans le tableau l9.4. Ces longueurs peuvent être utilisées lorsque vous fixez par vous-mêmes les dimensions des boites.
Commande |
Description |
\width |
Largeur de la boite courante |
\height |
Hauteur de la boite courante |
\depth |
Profondeur de la boite courante |
\totalheight |
Hauteur totale de la boite courante, c'est-à-dire la somme de sa hauteur et de sa profondeur |
tab l9.6 Commandes de longueur associées aux boites
On peut ainsi facilement définir une boite qui encadre un texte, la boite étant deux fois plus large que le texte contenu dans la boite, comme le montre l'exemple suivant.
| \framebox[2\width]{Cadre deux fois plus large que le texte} |
|
listing l9.18 Modifier la dimension d'une boite
Vous pouvez également faire une boite qui a la largeur du texte du document comme le montre l'extrait de code suivant.
| \framebox[\textwidth]{Cadre qui a la largeur du texte du document} |
|
listing l9.19 Modifier la dimension d'une boite (2)
La commande parbox
Avec les boites que l'on vient de voir, il est juste possible d'y insérer du texte, mais on ne pourra pas insérer plusieurs paragraphes par exemple. Pour pouvoir insérer des paragraphes, on doit utiliser une autre boite que l'on obtient avec la commande parbox
.
| \fbox{ | \parbox{3cm}{ | \setlength{\parskip}{.5cm} | Paragraphe 1 | | Paragraphe 2 | | Paragraphe 3} | } |
|
listing l9.20 La commande parbox
La commande parbox
prend un paramètre qui est la largeur de la boite et prend également en option l'alignement de la boite par rapport à la ligne de base. Les valeurs possibles sont b
et t
. La figure l9.12 illuste l'effet de cette option pour les minipages, c'est pareil pour les parbox
.
L'environnement minipage
Cet environnement est très particulier et comme on peut le deviner à son nom, il permet de créer une mini page dans une page « normale », c'est-à-dire qu'il est possible de donner à un morceau de page les propriétés d'une page entière. Il est donc possible de placer dans cet environnement d'autres environnements, d'avoir des notes de bas de page ... locale, etc... comme si on écrivait une page indépendante, mais dans une autre page.
| \begin{minipage}[position]{largeur} | | \end{minipage} |
|
listing l9.21 Environnement minipage
L'option position
permet d'aligner la boite dans laquelle la minipage sera mise par rapport à la ligne courante du texte. Si on ne spécifie pas l'option, la ligne du milieu de la boite sera alignée avec la ligne courante. Sinon, on peut soit spécifier b
ou t
pour aligner la ligne du bas ou du haut de la boite sur la ligne courante. La figure l9.10 montre ces trois configurations.
Voici par exemple un texte sur plusieurs lignes et encadrés. On aura pu obtenir exactement le même résultat avec la commande parbox
vue un peu plus haut, mais parbox
ne peut gérer que des petits paragraphes et rien d'autre, hors de question de mettre un tabular
dans un parbox
par exemple alors que minipage
l'acceptera sans problèmes.
| \fbox{ | \begin{minipage}{3cm} | \setlength{\parskip}{.5cm} | Paragraphe 1 | | Paragraphe 2 | | Paragraphe 3 | \end{minipage} | } |
|
listing l9.22 Exemple de minipage
Grâce aux minipages, on peut réaliser encore bien des choses, mais nous les découvrirons un peu plus tard dans le tutoriel.