Ceci est une ancienne révision du document !
\question{Comment faire un tableau~?} %7.1 \label{q=Comment_faire_un_tableau}
\reponse L'environnement permettant de faire un tableau en mode texte s'appelle \env{tabular}. Il prend un argument optionnel et un argument obligatoire. % \begin{syntax} \\begin\{tabular\}\oarg{position}\marg{format} \ \ \meta{contenu du tableau} \\end\{tabular\} \end{syntax}
L'argument obligatoire \meta{format} décrit le format des colonnes du tableau. Cela suppose que vous connaissiez à l'avance le nombre de colonnes que vous aller produire, sinon \TeX{} affichera un message d'erreur. Une colonne est représentée par une lettre parmi \texcode{l} (pour que le texte soit aligné à gauche dans la colonne), \texcode{c} (pour que le texte soit centré dans la colonne) et \texcode{r} (pour que le texte soit aligné à droite). % % Joss Wed Nov 16 23:14:36 CET 2005 % Les trois types de colonne (\texcode{l}, \texcode{c} et \texcode{r}) ne passent jamais à la ligne et sont, par conséquent, adaptées aux cellules dont le contenu est court. Lorsque les cellules sont bien remplies, il faut opter pour \texcode{p\marg{larg}} (\texcode{p} comme \gui{paragraphe}) qui compose le contenu de la cellule dans un paragraphe justifié de largeur \meta{larg}.
Une répétition ~fois d'un motif élémentaire est facilitée par
\texcode{*\marg{
}\marg{motif}}. \texcode{*\{20\}\{lcc\}} est
équivalent à \texcode{lcclcclcc\dots{}lcc} (en tout
~colonnes),
plus concrètement le tableau~\vref{ex=tab2} donne un exemple utilisant
ce genre de descriptions.
\begin{exemple}{Exemple de tableau (remarquez que le second
\texcode{\|} fait partie de l'argument de \texcode{*}).\label{ex=tab2}}
\begin{center}
\begin{tabular}{|*{5}{p{1cm}|}}
\hline
0 & 1 & 2 & 3 & 4
\hline
1 & 2 & 3 & 4 & 5
\hline
2 & 3 & 4 & 5 & 6
\hline
\end{tabular}
\end{center}
\end{exemple}
L'argument optionnel \meta{position} définit la position verticale du tableau par rapport à la ligne courante~: \texcode{t} pour \en{top} (le haut du tableau sera aligné avec la ligne courante), \texcode{c} pour \en{center} et \texcode{b} pour \en{bottom} (le bas du tableau sera aligné avec la ligne courante). L'effet de ces options est démontré dans l'exemple~\vref{ex=Arguments_optionnels_tabular}
\begin{exemple}{Démonstration de l'effet de l'argument optionnel de
\env{tabular}\label{ex=Arguments_optionnels_tabular}}
b \begin{tabular}[b]{l} A
B \end{tabular}\quad
c \begin{tabular}[c]{l} A
B \end{tabular}\quad
t \begin{tabular}[t]{l} A
B \end{tabular}
\end{exemple}
% % Fin
% Joss Wed Nov 16 23:16:31 CET 2005 % % Il existe d'autres possibilités, que % nous verrons plus bas. Chaque colonne peut être séparée de sa % voisine par un ou plusieurs filets verticaux, que l'on indique à % l'aide du caractère \texcode{\|}. % % Fin
À l'intérieur de l'environnement \env{tabular}, on remplit ligne par ligne, chaque ligne se terminant par \cmd{\\} (ou \cmd{tabularnewline}): % \begin{syntax}
\meta{ligne $1$} \ \cmd{\\} \meta{ligne $2$} \ \cmd{\\} \ \ \ $\vdots$ \meta{ligne $n$} \ \cmd{\\}
\end{syntax} % et à l'intérieur de chaque ligne, on remplit cellule par cellule de gauche à droite, chaque cellule étant séparée de la suivante par \texcode{\&}: % \begin{syntax}
\meta{cellule $1$} \& \meta{cellule $2$} \& \dots \& \meta{cellule $m$}
\end{syntax}
L'exemple~\vref{ex=tab} présente un tableau simple.
\begin{exemple}{Exemple de tableau\label{ex=tab}}
\begin{center}
\begin{tabular}{|l|r|c||r|}
\hline
Article & Prix unitaire & Quantit\'e & Prix total
\hline
Arrosoir & ~\EUR & 2 &
~\EUR
Brouette & ~\EUR & 1 &
~\EUR
R\^ateau & ~\EUR & 1 &
~\EUR
\hline
Total & & & ~\EUR
\hline
\end{tabular}
\end{center}
\end{exemple}
Pour placer des filets verticaux (traits délimitant les colonnes), il faudra insérer \texcode{\|} dans l'argument \meta{format} de l'environnement \env{tabular}. Placer des filet horizontaux se fait en plaçant la commande \cmd{hline} (\en{horizontal line}) après le \cmd{\\}.
Par défaut, toutes les colonnes, quel que soit leur type, sont
entourées par un blanc contrôlé par le paramètre \param{\\tabcolsep}.
Deux colonnes successives sont donc séparées par la valeur . Dans un tableau à trois colonnes, on
aurait
%
\begin{center}
\setlength{\tabcolsep}{12pt} \def \tempa #1{% \makebox[0pt][#1]{% \setlength{\unitlength}{\tabcolsep}% \raisebox{.4ex}{% \begin{picture}(1,0) \put(0.5,0){\vector(-1,0){0.5}} \put(0.5,0){\vector( 1,0){0.5}} \put(0.5,.3){\makebox[0pt]% {\fboxsep=1pt \fcolorbox{white}{white}% {$\scriptstyle \vphantom{p} x$}}} \end{picture}% }% }% } \def \tempb {% \makebox[0pt][r]{% \setlength{\unitlength}{2\tabcolsep}% \raisebox{.4ex}{% \begin{picture}(1,0) \put(0.5,0){\vector(-1,0){0.5}} \put(0.5,0){\vector(1,0){0.5}} \put(0.5,0.15){\makebox[0pt]% {\fboxsep=1pt \fcolorbox{white}{white}% {$\scriptstyle \vphantom{p} 2x$}}} \end{picture}% }% }% } \begin{tabular}{|c|c|c|} \hline \tempa{r}Cellule 1 & \tempb Cellule 2 & \tempb Cellule 3\tempa{l} \\ \hline \end{tabular}
Enfin, il est possible de séparer deux colonnes par autre chose qu'un filet vertical, en remplaçant le \texcode{\|} par \texcode{@\marg{code}}. Dans ce cas, l'espacement entre les colonnes est supprimé, et l'argument \meta{code} de \texcode{@} remplace la barre verticale «~classique~».
\reponse Pour faire un tableau en mode mathématique, on utilisera l'environnement \env{array}, dont l'utilisation est similaire. Voir la question~\vref{tableau-maths} pour un exemple.
\reponse L'environnement \env{tabbing} permet également de créer des tableaux, avec une optique assez différente. Voir la section~\ref{tabbing} pour des informations complémentaires.
% Joss Sun Nov 20 10:23:41 CET 2005 \question{Où placer son tableau?} \label{q=Ou_placer_son_tableau}
\reponse Placé tel quel dans un paragraphe, votre tableau va s'intégrer au texte avec les règles d'alignement évoquées à la question~\ref{q=Comment_faire_un_tableau} et illustrées dans l'exemple~\ref{ex=Arguments_optionnels_tabular}.
\reponse Le flottant \env{table} défini par la plupart des classes classiques (les classes standard, et leurs clones \class{memoir} et les classe KOMA-script). Le tableau peut alors flotter (c'est-à-dire trouver la place la plus confortable) et être affublé d'une légende (commande \cmd{caption}) accompagnée d'un numéro que l'on peut référencer par le mécanisme habituel (\cmd{label}, \cmd{ref}). % \begin{noexemple} … Voir le tableau~\ref{tab=Un_tableau_simple}. % \begin{table}
\begin{tabular}{ll} A & B \\ C & D \\ \end{tabular} \caption{Un tableau simple} \label{tab=Un_tableau_simple}
\end{table} \end{noexemple}
\reponse Si l'on désire que le tableau ne flotte pas, on pourra utiliser les environnements \env{center}, \env{flushleft}, qui placeront le tableau dans un paragraphe à part avec un peu d'espace pour le séparer du texte. % \begin{noexemple} … le tableau suivant: % \begin{center}
\begin{tabular}{ll} A & B \\ C & D \\ \end{tabular}
\end{center} \end{noexemple}
On perd cependant toute possibilité d'attacher une légende et de référencer le tableau. Lisez les réponses à la question \gui{Comment
est géré le positionnement des flottants?}~\ref{q=Comment_est_gere_le_positionnement_des_flottants},
p.~\pageref{q=Comment_est_gere_le_positionnement_des_flottants}.
\endinput