FAQ LaTeX/TeXConsultez toutes les FAQ

Nombre d'auteurs : 27, nombre de questions : 148, dernière mise à jour : 31 août 2017  Ajouter une question

 

Bienvenue sur la FAQ LaTeX, elle répondra aux questions les plus fréquemment posées.
Je tiens à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose soient correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète.


SommaireLes tableauxPersonnalisation et amélioration des tableaux (13)
précédent sommaire suivant
 

Pour insérer une barre oblique dans une cellule, il est possible d'utiliser l'extension slashbox.

Cette extension n'est pas par défaut dans les distributions courantes. Il faudra installer cette extension manuellement.

Une autre solution est d'utiliser l'extension diagbox, disponible sur une distribution comme Tex Live.
Ainsi le code suivant (trouvé dans la documentation de diagbox) :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
\begin{tabular}{|l|ccc|} 
\hline 
\diagbox{Time}{Day} & Mon & Tue & Wed \\ 
\hline 
Morning & used & used &\\ 
Afternoon && used & used \\ 
\hline 
\end{tabular}

donne :

Mis à jour le 3 mai 2014 -Nikopol-

Pour réaliser un filet vertical interrompu, il existe la commande \cline[a-b] où :

  • a est le numéro de la colonne de début de filet ;
  • b est le numéro de la colonne de fin de filet.

Ainsi le code suivant :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
\begin{tabular}{|c|c|c|c|c|c|} 
\hline  
a & b & c & d & e & f \\  
\cline{2-3}\cline{5-6}  
1 & 2 & 3 & 4 & 5 & 6 \\  
\cline{1-1}\cline{6-6}  
7 & 8 & 1 & 2 & 3 & 4 \\  
\hline 
\end{tabular}
donne :

Mis à jour le 4 mai 2014 -Nikopol-

L'astuce consiste à combiner les commandes \cline et \multicolumn. Il faut faire une \multicolumn{1}{c|}{}, donc vide, et ne pas tracer le filet vertical au-dessus de cette cellule.
Ainsi le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
\begin{tabular}{|c|c|c|} 
\cline{2-3}  
\multicolumn{1}{c|}{} & Entr\'ee A & Entr\'ee B \\  
\hline 
Entr\'ee 1 & 10 & 20 \\  
\hline 
Entr\'ee 2 & 40 & 60 \\  
\hline 
\end{tabular}
donne :

Mis à jour le 4 mai 2014 -Nikopol-

Pour imprimer une liste de tableaux, il suffit d'ajouter la commande \listoftables à l'endroit du document où vous voulez la voir imprimer. Tous les tableaux se trouvant dans un environnement table se verront référencés dans cette liste.
Comme les références des pages sont indiquées dans cette liste, il faut compiler deux fois.

Mis à jour le 5 mai 2014 -Nikopol-

Pour changer le séparateur de colonnes, il faut remplacer le caractère « | » ( tube ou pipe) qui se trouve entre deux descripteurs de colonnes par @{ <sep> }<sep> sera le nouveau séparateur de colonnes. Vous pouvez y mettre un mot ou un symbole (mathématique ou non).
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
\begin{tabular}{|l @{ ou } l|} 
noir & blanc\\  
bien & mal \\  
tout & rien\\  
\end{tabular}
donne :


Il existe aussi !{<sep>} qui conservera l'espacement des colonnes.

Mis à jour le 8 mai 2014 -Nikopol-

L'extension array fournit deux nouveaux descripteurs :

  • m{<largeur>} : le texte de ce type de colonne se comportera comme un paragraphe (retour à la ligne) et les autres cellules seront centrées par rapport à cette colonne ;

  • b{<largeur>} : le texte de ce type de colonne se comportera comme un paragraphe (retour à la ligne) et les autres cellules seront alignées en bas (b : bottom).


Pour définir un type de colonne personnel, il faut utiliser la commande \newcolumntype{<nom>}[1]{>{<commande>}<type>{#1}} où :
  • <nom> : nom que l'on donne à notre nouvelle colonne ;

  • <commande> : on y mettra les commandes qui régiront notre colonne ;

  • <type> : type de colonne ("c", "l", "r", "p", "m", "b") que l'on veut redéfinir

Dans le préambule du document, il est possible d'ajouter :
Code LaTeX : Sélectionner tout
1
2
3
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}m{#1}} 
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}} 
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
On a donc à notre disposition trois nouvelles colonnes, semblables à "l", "c" et "r", sauf que maintenant il possible de fixer la largeur de ces colonnes.
La commande \arraybackslash sert à rendre à la commande \\ la fonction \tabularnewline. Cela est nécessaire lorsqu'on utilise des commandes telles que \raggedleft, \raggedright, \centering qui redéfinissent la commande \\.
Ainsi, le code :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
\begin{tabular}{|L{3cm}|C{3cm}|R{3cm}|}  
\hline   
\raggedright  
Une cellule contenant un texte tr\`es long & Une autre cellule contenant un texte encore plus long, beaucoup, beaucoup plus long  & 
Une autre cellule contenant un texte encore plus long, beaucoup, beaucoup plus long\\ 
\hline   
\end{tabular}
donne :

Mis à jour le 8 mai 2014 -Nikopol-

Les descripteurs >{...} et <{...} permettent de modifier le comportement d'une colonne complète : ils permettent de mettre une colonne en couleur (voir section les tableaux en couleur) mais ont aussi d'autres utilisations :

  • >{...} permet par exemple de rajouter du texte "avant" la colonne et <{...} "après" la colonne.

    Ainsi, le code suivant :
    Code LaTeX : Sélectionner tout
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    \begin{tabular}{|ll|} 
    chat & les souris\\  
    chien & les chats \\  
    cheval & l'avoine\\  
    \end{tabular}\hfill 
    \begin{tabular}{|>{le }l<{ aime :}l|} 
    chat & les souris\\  
    chien & les chats \\  
    cheval & l'avoine\\  
    \end{tabular}


    donne :



  • >{...} accepte les commandes LaTeX telles que \bfseries ou \Large, ce qui peut s’avérer très pratique.

    Ainsi, le code :
    Code LaTeX : Sélectionner tout
    1
    2
    3
    4
    5
    \begin{tabular}{|>{\bfseries}l|>{\Large}l|} 
    une & une \\  
    colonne & colonne \\  
    en  gras  & avec \verb!\Large!\\  
    \end{tabular}
    donne :



  • >{...} et <{...} permettent de passer une colonne entière en mode mathématique.
    Ainsi, le code suivant :
    Code LaTeX : Sélectionner tout
    1
    2
    3
    4
    5
    \begin{tabular}{|l|>{$}c<{$}|} 
    un symbole & \alpha\\  
    une fraction & \frac{2}{3} \\  
    une \'equation & e^{i\pi}+1=0\\  
    \end{tabular}

    donne :



Mis à jour le 8 mai 2014 -Nikopol-

La commande \caption{<legende>} permet de mettre une légende à un tableau. Cette commande doit se trouver dans un environnement flottant tel que l'environnement table.
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
\begin{table} 
\begin{center} 
\begin{tabular}{|c|c|c|}  
\hline   
Voici &un tableau& et une l\'egende\\ 
\hline   
\end{tabular} 
\end{center} 
\caption{mon tableau} 
\end{table}
donne :


Pour les options et la configuration, il y a la (future) section sur les flottants)

Mis à jour le 8 mai 2014 -Nikopol-

La commande \footnote{<note>} ne fonctionne pas à l'intérieur d'un environnement tel que tabular. Il va donc falloir utiliser les commandes \footnotemark dans le tableau, à l'endroit où l'on souhaite voir apparaître l'appel de note et la commande \footnotetex{<note>} à l'extérieur du tableau.
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
\begin{tabular}{|c|c|c|}  
\hline   
Voici &un tableau\footnotemark& avec une note de bas de page\\ 
\hline   
\end{tabular} 
\footnotetext{ma note de bas de page}
donne :

Mis à jour le 8 mai 2014 -Nikopol-

La commande \multicolumn{<nombre de cellules à fusionner>}{<descripteur de colonne>}{<texte>} permet de fusionner les colonnes d'une même ligne.
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
\begin{tabular}{|c|c|c|}  
\hline   
1&2&3\\ 
\hline   
\multicolumn{2}{|c|}{a}&b\\ 
\hline 
\end{tabular}
donne :


L'emploi de « | » ( tube ou pipe) peut être délicat.
En effet, le code suivant :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
\begin{tabular}{|c|c|c|}  
\hline   
1&2&3\\ 
\hline   
b&\multicolumn{2}{|c|}{a}\\ 
\hline 
\end{tabular}
donne :


Les filets verticaux entre "a" et "b" sont tracés deux fois, ce qui est gênant. Dans ce cas, il suffit de supprimer | dans la commande \multicolumn.
Ainsi, le code suivant :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
\begin{tabular}{|c|c|c|}  
\hline   
1&2&3\\ 
\hline   
b&\multicolumn{2}{c|}{a}\\ 
\hline 
\end{tabular}
donne :


La commande \multicolumn permet de supprimer la première cellule d'un tableau : Comment supprimer la première cellule d'un tableau ?

Mis à jour le 16 mai 2014 -Nikopol-

Pour fusionner les cellules d'une même colonne, on utilisera l'extension multirow. Il faut donc ajouter \usepackage{multirow} dans le préambule et utiliser dans le tableau la commande \multirow{<nombre de lignes à fusionner>}{<taille>}{<texte>}. <taille> est la largeur de la cellule, elle peut être remplacée par * qui ajustera automatiquement la taille au contenu de la cellule.
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
\begin{tabular}{|c|c|c|}  
\hline   
1&2&3\\ 
\hline   
\multirow{2}{*}{A}&4&5\\ 
\cline{2-3} 
&6&7\\ 
\hline 
\end{tabular}
donne :


On peut remarquer la présence de la commande \cline. En effet, \hline tracerait une ligne sur tout le tableau sans se soucier des cellules fusionnées.

Mis à jour le 16 mai 2014 -Nikopol-

Il est possible de combiner les commandes \multirow et \multicolumn pour fusionner plusieurs cellules juxtaposées.
Ainsi, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
\begin{tabular}{|c|c|c|} 
\hline 
 1 & 2 & 3 \\ 
\hline 
 \multicolumn{2}{|c|}{\multirow{2}{*}{ABC}} & 4 \\ 
\cline{3-3} 
 \multicolumn{2}{|c|}{} & 5 \\ 
\hline 
\end{tabular}
donne :

Mis à jour le 16 mai 2014 -Nikopol-

L'espace entre les filets horizontaux et le texte d'une cellule peut être trop faible, notamment si l'on veut des fractions dans une cellule.
En effet, le code suivant :

Code LaTeX : Sélectionner tout
1
2
3
4
5
6
\begin{document} 
\begin{tabular}{|c|c|c|} 
\hline 
$\dfrac{1}{2}$&$\dfrac{3}{7}$&$\dfrac{12}{9}$\\ 
\hline 
\end{tabular}
donne :


Une solution pour pallier ce défaut est de modifier la valeur de \arraystretch à l'aide de \renewcommand.
Ainsi, le code suivant :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
\renewcommand{\arraystretch}{2} 
\begin{tabular}{|c|c|c|} 
\hline 
$\dfrac{1}{2}$&$\dfrac{3}{7}$&$\dfrac{12}{9}$\\ 
\hline 
\end{tabular}
donne :


Une autre solution est d'utiliser l'extension cellspace. On ajoutera dans le préambule \usepackage{cellspace} ainsi que \cellspacetoplimit=<h1> et \cellspacebottomlimit=<h2> où :
  • h1 est la distance entre le texte et le filet supérieur de la cellule ;
  • h2 est la distance entre le texte et le filet inférieur de la cellule.

Il faudra aussi rajouter "S" devant les descripteurs de colonnes.
Ainsi le code suivant :
Code LaTeX : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass[10pt,a4paper]{article} 
\usepackage{amsmath} 
\usepackage{amsfonts} 
\usepackage{amssymb} 
  
\usepackage{cellspace} 
\cellspacetoplimit=4pt 
\cellspacebottomlimit=4pt 
  
\begin{document} 
\begin{tabular}{|Sc|Sc|Sc|} 
\hline 
$\dfrac{1}{2}$&$\dfrac{3}{7}$&$\dfrac{12}{9}$\\ 
\hline 
\end{tabular} 
\end{document}
donne :

Mis à jour le 16 mai 2014 -Nikopol-

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique LaTeX : Sébastien Lataix (Nikopol) -