US

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.

Résultat du projet 4
fig l1 Résultat du projet 4

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.

Auto-complétion
fig l2 Auto-complétion

TeXnicCenter va automatiquement compléter le code pour vous en insérant un modèle d'utilisation de l'environnement tabular.

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
\documentclass[a4paper,11pt]{article}
 
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
 
\begin{document}
    \begin{tabular}{ccc}
 
    \end{tabular}
\end{document}
listing l1 Projet4.tex : Ajout de tableau par auto-complétion

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.

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
\begin{tabular}{|l|l||l|c|l|c|l|}
    \hline
    Ligne 1 & a & b & c & d & e & f \\
    Ligne 2 & a & b & c & d & e & f \\ \hline \hline
    Ligne 3 & a & b & c & d & e & f \\
    Ligne 4 & a & b & c & d & e & f \\
    Ligne 5 & a & b & c & d & e & f \\
    Ligne 6 & a & b & c & d & e & f \\
    Ligne 7 & a & b & c & d & e & f \\ \hline
    Ligne 8 & a & b & c & d & e & f \\
    Ligne 9 & a & b & c & d & e & f \\
    Ligne 10 & a & b & c & d & e & f \\
    Ligne 11 & a & b & c & d & e & f \\ \hline
\end{tabular}
listing l2 Squelette de base du tableau
Squelette de base du tableau
fig l2 Squelette de base du tableau

Les deux premières lignes

On retrouve plusieurs choses dans les deux premières lignes :

  1. Une cellule coupée en deux par une diagonale : backslashbox ;
  2. Une cellule qui s'étend sur plusieurs colonnes : multicolumn ;
  3. 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.

1 
2 
3 
 
4 
5 
6 
\begin{tabular}{|l|l||l|c|l|c|l|}
    \hline
    \multicolumn{2}{|c||}{\multirow{2}{4cm}{\backslashbox{Produits}{Infos}}} & b & c & d & e & f \\
    \multicolumn{2}{|c||}{} & b & c & d & e & f \\ \hline \hline
    Ligne 3 & a & b & c & d & e & f \\
    % [...]
listing l3 La première cellule
La première cellule
fig l3 La première cellule

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.

1 
2 
3 
 
4 
5 
6 
\begin{tabular}{|l|l||l|c|l|c|l|}
    \hline
    \multicolumn{2}{|c||}{\multirow{2}{4cm}{\backslashbox{Produits}{Infos}}} & \multirow{2}{1cm}{ID} & \multicolumn{2}{c|}{2006} & \multicolumn{2}{c|}{2007} \\ \cline{4-7}
    \multicolumn{2}{|c||}{} &    & & & & \\ \hline \hline
    Ligne 3 & a & b & c & d & e & f \\
    % [...]
listing l4 Les deux premières lignes

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 deux premières lignes
fig l4 Les deux premières lignes

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.

1 
\begin{tabular}{|l|l||l@{\,\vrule width 1mm\,}c|l@{\,\vrule width 1mm\,}c|l|}
listing l5 Lignes verticales épaisses

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.

Lignes verticales épaisses
fig l5 Lignes verticales épaisses

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.

1 
2 
3 
\multirow{5}{.5cm}{\rotatebox{90}{}}
%[...]
\multirow{4}{.5cm}{\rotatebox{90}{Livres}}
listing l6 La première colonne
La première colonne
fig l6 La première colonne

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.

  • Espace membre
  • Learning Center
  • Les forums
  • Livre d'or
  • Imprimer
  • Boutique
  • Info
  • Règlement
  • Erreur
  • Newsletter