Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
2_composition:tableaux:construire_un_tableau [2002/09/07 13:36] markey créée |
2_composition:tableaux:construire_un_tableau [2020/12/12 12:11] (Version actuelle) dbitouze Correction de balises de codes LaTeX |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | \question{Comment faire un tableau ?} %7.1 | + | ====== 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. | ||
- | L'argument optionnel d\'efinit la position vertical du tableau | + | $\Reponse$ L'environnement permettant de faire un tableau en mode texte |
- | par rapport \`a la ligne courante : \texttt t pour \texttt{top} (le haut du | + | s'appelle ''tabular''. Il prend un argument optionnel et un argument obligatoire. |
- | tableau sera align\'e avec la ligne courante), \texttt c pour \texttt{center}, | + | |
- | et \texttt b pour \texttt{bottom} (le bas du | + | |
- | tableau sera align\'e avec la ligne courante). | + | |
- | L'argument obligatoire d\'ecrit le format des colonnes du tableau. Une colonne | + | <code latex> |
- | est repr\'esent\'ee par une lettre parmi \texttt l (pour que le texte soit | + | \begin{tabular}[position]{format} |
- | align\'e \`a gauche dans la colonne), \texttt c (pour que le texte soit | + | contenu du tableau |
- | centr\'e dans la colonne) et \texttt r pour que le texte soit align\'e \`a | + | \end{tabular} |
- | droite. Il existe d'autres possibilit\'es, que nous verrons plus bas. Chaque | + | </code> |
- | colonne peut \^etre s\'epar\'ee de sa voisine par une ou plusiurs lignes | + | |
- | verticales, que l'on indique \`a l'aide du caract\`ere \texttt{\string|}. | + | 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 <latex>\TeX</latex> affichera un message | ||
+ | d'erreur. Une colonne est représentée par une lettre parmi | ||
+ | * ''l'' (pour que le texte soit aligné à gauche dans la colonne), | ||
+ | * ''c'' (pour que le texte soit centré dans la colonne) et | ||
+ | * ''r'' (pour que le texte soit aligné à droite). | ||
+ | |||
+ | Les trois types de colonne (''l'', ''c'' et ''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 ''p{larg}'' (''p'' comme | ||
+ | \gui{paragraphe}) qui compose le contenu de la cellule dans un | ||
+ | paragraphe justifié de largeur \meta{larg}. | ||
+ | |||
+ | Une répétition $n$ fois d'un motif élémentaire est facilitée par | ||
+ | ''*{n}{motif}''. ''*{20}{lcc}'' est équivalent à ''lcclcclcc...lcc'' (en tout | ||
+ | 60 colonnes), plus concrètement le tableau~\vref{ex=tab2} donne un exemple | ||
+ | utilisant ce genre de descriptions. | ||
- | \`A l'int\'erieur de l'environnement \env{tabular}, on remplit chaque case du | + | Exemple de tableau (remarquez que le second ''|'' fait partie de l'argument de ''*''). |
- | tableau, ligne par ligne, de gauche \`a droite et de haut en bas. Deux cases | + | |
- | cons\'ecutives doivent \^etre | + | |
- | s\'epar\'ees par le caract\`ere \texttt\&, deux lignes cons\'ecutives par \cmd{\char92\relax}. | + | |
- | Deux lignes peuvent \^etre s\'epar\'ees par un trait horizontal en pla\c cant | + | |
- | la commande \cmd{hline} apr\`es le \cmd{\char92\relax}. | + | |
- | La figure~\ref{extab} donne un exemple de tableau simple. | + | <code latex> |
- | \DeleteShortVerb{\|} | + | |
- | \begin{exemple}{Exemple de tableau\label{extab}} | + | |
\begin{center} | \begin{center} | ||
- | \begin{tabular}{|l|r|c||r|} | + | \begin{tabular}{|*{5}{p{1cm}|}} |
\hline | \hline | ||
- | Article & Prix unitaire & Quantit\'e & Prix total \\ | + | 0 & 1 & 2 & 3 & 4 \\ |
\hline | \hline | ||
- | Arrosoir & $19,90$~\EUR & 2 & $39,80$~\EUR \\ | + | 1 & 2 & 3 & 4 & 5 \\ |
- | Brouette & $129,00$~\EUR & 1 & $129,00$~\EUR \\ | + | \hline |
- | Rateau & $9,90$~\EUR & 1 & $9,90$~\EUR \\ | + | 2 & 3 & 4 & 5 & 6 \\ |
\hline | \hline | ||
- | Total & & & $178,70$~\EUR \\ | ||
- | \hline | ||
\end{tabular} | \end{tabular} | ||
\end{center} | \end{center} | ||
- | \end{exemple} | + | </code> |
- | \MakeShortVerb{\|} | + | |
- | \medskip | ||
- | Il existe quelques autres descripteurs de colonnes ; en particulier, le | ||
- | descripteur \texttt{p\marg{<longueur>}}, qui sp\'ecifie une colonne de | ||
- | longueur donn\'ee, et dont le texte est align\'e \`a gauche. On peut aussi | ||
- | utiliser la construction \texttt{*\marg{<nombre>}{<description>}}, qui permet | ||
- | de d\'efinir de mani\`ere succinte en ensemble de colonnes similaires. Le | ||
- | tableau~\ref{extab2} donne un exemple utlisant ce genre de descriptions. | ||
- | Enfin, il est possible de s\'eparer deux colonnes par autre chose qu'un trait | ||
- | vertical, en rempla\c cant le \text{\string|} par \texttt{@\marg{...}}. Dans | ||
- | ce cas, l'espacement entre les colonnes est supprim\'e, et l'argument de | ||
- | \texttt{\string@} est mis \`a la place. | ||
- | \DeleteShortVerb{\|} | + | L'argument optionnel \meta{position} définit la position verticale du |
- | \begin{exemple}{Exemple de tableau\label{extab2}} | + | tableau par rapport à la ligne courante~: ''t'' pour //top// |
+ | (le haut du tableau sera aligné avec la ligne courante), ''c'' | ||
+ | pour //center// et ''b'' pour //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} | ||
+ | |||
+ | Démonstration de l'effet de l'argument optionnel de ''tabular'': | ||
+ | |||
+ | <code latex> | ||
+ | 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} | ||
+ | </code> | ||
+ | |||
+ | |||
+ | 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{\|}. | ||
+ | |||
+ | |||
+ | À l'intérieur de l'environnement ''tabular'', on remplit ligne par | ||
+ | ligne, chaque ligne se terminant par ''\\'' (ou | ||
+ | ''tabularnewline''): | ||
+ | |||
+ | <code latex> | ||
+ | \meta{ligne $1$} \ ''\\'' | ||
+ | \meta{ligne $2$} \ ''\\'' | ||
+ | \ \ \ $\vdots$ | ||
+ | \meta{ligne $n$} \ ''\\'' | ||
+ | </code> | ||
+ | |||
+ | 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 | ||
+ | ''&'': | ||
+ | |||
+ | <code latex> | ||
+ | \meta{cellule $1$} \& \meta{cellule $2$} \& \dots \& \meta{cellule $m$} | ||
+ | </code> | ||
+ | |||
+ | L'exemple~\vref{ex=tab} présente un tableau simple. | ||
+ | |||
+ | Exemple de tableau\label{ex=tab} | ||
+ | |||
+ | <code latex> | ||
\begin{center} | \begin{center} | ||
- | \begin{tabular}{|*{5}{p{1cm}|}} | + | \begin{tabular}{|l|r|c||r|} |
\hline | \hline | ||
- | 0 & 1 & 2 & 3 & 4 \\ | + | Article & Prix unitaire & Quantité & Prix total \\ |
\hline | \hline | ||
- | 1 & 2 & 3 & 4 & 5 \\ | + | Arrosoir & $19,90$~\EUR & 2 & $39,80$~\EUR \\ |
- | \hline | + | Brouette & $129,00$~\EUR & 1 & $129,00$~\EUR \\ |
- | 2 & 3 & 4 & 5 & 6 \\ | + | R\^ateau & $9,90$~\EUR & 1 & $9,90$~\EUR \\ |
\hline | \hline | ||
+ | Total & & & $178,70$~\EUR \\ | ||
+ | \hline | ||
\end{tabular} | \end{tabular} | ||
\end{center} | \end{center} | ||
- | \end{exemple} | + | </code> |
- | \MakeShortVerb{\|} | + | |
+ | |||
+ | Pour placer des filets verticaux (traits délimitant les colonnes), il | ||
+ | faudra insérer ''|'' dans l'argument \meta{format} de | ||
+ | l'environnement ''tabular''. Placer des filet horizontaux se fait | ||
+ | en plaçant la commande ''\hline'' (//horizontal line//) après le | ||
+ | ''\\''. | ||
+ | |||
+ | Par défaut, toutes les colonnes, quel que soit leur type, sont | ||
+ | entourées par un blanc contrôlé par le paramètre \tabcolsep. | ||
+ | Deux colonnes successives sont donc séparées par la valeur $2 \times \textrm{\backslash tabcolsep}$. | ||
+ | Dans un tableau à trois colonnes, on aurait | ||
+ | |||
+ | <code latex> | ||
+ | \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} | ||
+ | \end{center} | ||
+ | </code> | ||
+ | |||
+ | où $x = \text{\param{\\tabcolsep}}$. | ||
+ | |||
+ | Enfin, il est possible de séparer deux colonnes par autre chose qu'un | ||
+ | filet vertical, en remplaçant le ''|'' par ''@{code}''. | ||
+ | Dans ce cas, l'espacement entre les colonnes est supprimé, | ||
+ | et l'argument \meta{code} de ''@'' remplace la barre verticale «~classique~». | ||
+ | |||
+ | |||
+ | $\Reponse$ Pour faire un tableau en mode mathématique, on utilisera | ||
+ | l'environnement ''array'', dont l'utilisation est similaire. Voir la | ||
+ | question~\vref{tableau-maths} pour un exemple. | ||
+ | |||
+ | |||
+ | $\Reponse$ L'environnement ''tabbing'' permet également de créer des | ||
+ | tableaux, avec une optique assez différente. Voir la section~\ref{tabbing} | ||
+ | pour des informations complémentaires. | ||
+ | |||
+ | |||
+ | ===== Où 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 ''table'' défini par la plupart des classes | ||
+ | classiques (les classes standard, et leurs clones ''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 ''\caption'') accompagnée d'un numéro que l'on peut | ||
+ | référencer par le mécanisme habituel (''\label'', ''\ref''). | ||
+ | |||
+ | |||
+ | <code latex> | ||
+ | \dots{}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} | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | $\Reponse$ Si l'on désire que le tableau ne flotte pas, on pourra | ||
+ | utiliser les environnements ''center'', ''flushleft'', qui | ||
+ | placeront le tableau dans un paragraphe à part avec un peu d'espace | ||
+ | pour le séparer du texte. | ||
+ | |||
+ | |||
+ | <code latex> | ||
+ | \dots{}le tableau suivant: | ||
+ | |||
+ | \begin{center} | ||
+ | \begin{tabular}{ll} | ||
+ | A & B \\ | ||
+ | C & D \\ | ||
+ | \end{tabular} | ||
+ | \end{center} | ||
+ | </code> | ||
+ | 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}. | ||
- | \reponse Pour faire un tableau en mode math\'ematiques, on utilisera | ||
- | l'environnement \env{array}, donc l'utilisation est similaire. Voir la | ||
- | question~\ref{tableau-maths} pour un exemple. | ||
- | \reponse L'environnement \env{tabbing} permet \'egalement de cr\'eer des | + | {{htmlmetatags>metatag-keywords=(LaTeX) |
- | tableaux, avec une optique assez diff\'erente. Voir la section~\ref{tabbing} | + | metatag-og:title=(Comment faire un tableau?) |
- | pour des informations compl\'ementaires. | + | metatag-og:site_name=(FAQ LaTeX francophone) |
+ | }} | ||