Utiliser les tableaux
Dans le cadre de ce projet, nous allons nous attaquer à la conception et à l'insertion de tableaux dans un document LaTeX. Nous n'allons pas faire les choses à moitié, le tableau que nous allons concevoir est assez coriace, en ce sens qu'il faudra utiliser beaucoup de choses différentes pour pouvoir l'obtenir. Le tableau en question est présenté en figure l1.
Allons-y, commencez donc par créer un nouvea projet en repartant par exemple des templates créés précédemment, on le nommera Projet4
.
Auto-complétion
L'auto-complétion est un outil très pratique disponible avec tous les IDE complets. Il s'agit d'un outil qui vous aide pendant que vous codez, il va en effet compléter automatiquement ce que vous tapez. Pour commencer notre projet, il faut insérer un tableau et on doit utiliser l'environnement tabular
.
Windows
Pas la peine de commencer à taper \begin{tabular}
..., en effet, l'auto-complétion va vous permettre de gagner pas mal de temps. Contentez-vous simplement de taper tab
et ensuite enfoncez les touches CTRL + ESPACE et une fenêtre s'ouvre en vous proposant une liste d'environnements et commandes. On choisit ensuite tabular
en se déplaçant avec les flèches et on confirme avec ENTER.
TeXnicCenter va automatiquement compléter le code pour vous en insérant un modèle d'utilisation de l'environnement tabular
.
|
|
Linux
[En cours ...]
L'auto-complétion est certainement un outil très intéressant dont vous pouvez abuser sans restrictions qui complète les environnements et les commandes. Il est également très utile lorsque vous ne vous souvenez plus tout à fait d'un environnement ou une commande, ou des paramètres qu'il faut spécifier.
Le projet
Attaquons-nous maintenant à la réalisation de ce tableau. Il faut absolument les construire de manière incrémentale sans quoi on peut très vite se perdre dans son code et abandonner. On va y aller petit à petit en ajoutant les choses les unes après les autres en partant du squelette de base. À la base, on a un tableau de 7 colonnes et 11 lignes. Allons-y gaiement en prenant déjà soin de placer les lignes de séparation horizontale là où c'est nécessaire.
|
|
Les deux premières lignes
On retrouve plusieurs choses dans les deux premières lignes :
- Une cellule coupée en deux par une diagonale :
backslashbox
; - Une cellule qui s'étend sur plusieurs colonnes :
multicolumn
; - Une cellule qui s'étend sur plusieurs lignes :
multirow
.
La première cellule est la plus difficile à réaliser, en effet, elle s'étend sur deux colonnes et sur deux lignes et on doit donc utiliser les deux commandes multicolumn
et multirow
de manière combinée. Ensuite, le contenu de cette cellule sera créé avec la commande backslashbox
.
|
|
Quelques explications s'imposent. La première chose faite est d'étendre la cellule sur deux colonnes en utilisant la commande multicolumn
qui prend trois paramètres : le nombre de colonnes (2 dans notre cas), l'alignement (centré avec une ligne horizontale à gauche et une double ligne à droite) et enfin le texte de la cellule.
Comme la cellule s'étend sur deux lignes, le texte de la cellule consiste en l'utilisation de la commande multirow
qui prend trois paramètres : le nombre de lignes (2 pour nous), la largeur (on l'a fixée à 4 centimètres) et enfin le contenu de la cellule.
Le contenu de la cellule est divisé en deux par une diagonale et il faut utiliser la commande backslashbox
pour ce faire. La commande prend deux paramètres qui sont le texte sous la diagonale et celui au-dessus de la diagonale. On spécifie donc Produits
et Infos
.
Un dernier problème reste si on se contente de ça, la deuxième ligne contiendra un trait vertical en plein milieu, pour remédier à ce problème, il suffit simplement d'ajouter une cellule qui s'étend sur deux colonnes mais sans contenu. Enfin, n'oubliez pas d'importer les packages multirow
et slashbox
.
Le reste des deux premières lignes ne pose pas beaucoup de problèmes, on a une cellule sur deux lignes et contient ID
et deux cellules sur deux colonnes qui contiennent 2006
et 2007
.
|
|
L'autre petit détail dont il faut se rappeler est l'utilisation de la commande cline
pour obtenir une ligne horizontale partielle dans le tableau. Dans notre projet, on doit ajouter une telle ligne partielle sous les colonnes 4 à 7 ce qu'on fait avec \cline{4-7}
. Enfin, on termine avec une double ligne horizontale obtenue avec simplement deux fois \hline
d'affilé.
Les lignes épaisses
Le plus dur a déjà été fait. Maintenant, voyons comment faire pour ajouter les deux lignes verticales qui sont plus épaisses. Pour faire cela, on doit modifier quelque chose dans le paramètre de l'environnement tabular
. On ne doit plus utiliser |
qui produit un fine ligne verticale mais utiliser @{}
pour pouvoir le personnaliser et utiliser la commande vrule
pour obtenir un trait plus épais.
|
|
Remarquez l'utilisation de la commande \,
autour de la ligne verticale, pour rappel, cette commande produit une espace insécable. Enfin, pour avoir la ligne verticale épaisse sur toute la hauteur du tableau, il va également falloir changer des |
que l'on a utilisé avec les commandes multicolumn
, je vous laisse le soin de trouver par vous-mêmes.
La première colonne
Dernier petit obstacle avant d'avoir notre tableau au complet, il s'agit de la première colonne. Si on regarde bien, ce n'est pas bien méchant, on a deux cellules qui s'étendent sur plusieurs lignes. Le truc qui vous parait sans doute un peu étrange, c'est le texte qui est pivoté de 90 degrés. On n'a pas encore vu comment obtenir cet effet, on le verra au chapitre 11 mais ce n'est pas bien méchant et plutôt intéressant avec les tableaux. On utilise simplement une commande qui se trouve dans le package graphicx
qui est rotatebox
qui prend deux paramètres : un angle de rotation et le texte à pivoter.
|
|
Et voilà, on est déjà au bout du projet, il ne reste plus qu'à remplir les colonnes manquantes, mais il n'y a rien de bien compliqué sauf peut-être pour obtenir le symbole euro, en fait, il suffit d'utiliser la commande euro
fournie dans le package eurosym
et alors vous obtiendrez exactement le même résultat que nous.