Comment créer des notes de bas de page dans un tableau?

$\Reponse$ Pour des raisons trop longues à expliquer ici, il n'est pas possible d'utiliser directement la commande \footnote à l'intérieur d'un tableau: un appel à \footnote ne conserve que l'appel de note, la note elle-même est perdue. Une solution simple pour contourner le problème est d'inclure le tableau dans une minipage. Dans ce cas, la note n'est pas perdue, mais elle sera placée dans la minipage, donc juste au-dessous du tableau, et non en bas de la page. L'inconvénient est que minipage oblige à passer une largeur explicite qui peut ne pas être adaptée au tableau dont on ne connaît pas toujours la largeur finale. Un recours possible pourra être trouvé en l'environnement varwidth du package varwidth. Reportez-vous à l'exemple~\ref{expl=Utilisation_varwidth}.

Utilisation de l'environnement varwidth:

\documentclass{article}
 
\usepackage{varwidth}
\setlength{\tabcolsep}{15pt}      % Tableaux aérés
 
\begin{document}
 
\begin{table}
  \centering                      % Centrer le tableau
  \renewcommand*{\footnoterule}{} % Pas de trait
  \begin{varwidth}{\linewidth}    % minipage de largeur
    \begin{tabular}{ll}           %  maximale \linewidth
      \hline
      Cépage     & Nouaison (\%) \\
      \hline
      Chasselat  & 29\footnote{En 2001} \\
      Pinot gris & 28\footnote{En 2005} \\
      Riesling   & 32\footnote{En 1997} \\
      Sylvaner   & 53\footnote{En 1999} \\
      \hline
    \end{tabular}
  \end{varwidth}
  \caption{Valeurs de nouaison pour quelques cépages}
\end{table}
 
\end{document}

$\Reponse$ Une première solution consiste à utiliser le package threeparttable qui définit un environnement du même nom. Il a été conçu pour faciliter la création de tableaux avec un titre et des notes en bas de tableau. Les références sont produites à l'aide de la commande tnote. Quant aux descriptions, elles sont précisées à l'aide de l'environnement tablenotes. L'exemple~\vref{ex=3parttab} met tout cela en pratique.

Pour l'instant, il n'y a pas de méthode commode et élégante pour numéroter automatiquement les notes.

Insertion de notes dans un tableau\label{ex=3parttab}

\documentclass{article}
\usepackage{threeparttable}
\begin{document}
\begin{center}
 \begin{threeparttable}
  \caption{Les angles biaisés ($\beta$) pour 
  $\fam0 Mu(H)+X_2$ et $\fam0 Mu(H)+HX$~\tnote{a}}
  \begin{tabular}{rlcc}% ou tabluarx, etc.
   \hline
   &   & $\fam0 H(Mu)+F_2$ & $\fam0 H(Mu)+Cl_2$ \\
   \hline
   &$\beta$(H)  & $80.9^\circ\tnote{b}$
       & $83.2^\circ$ \\
   &$\beta$(Mu) & $86.7^\circ$ & $87.7^\circ$ \\
   \hline
  \end{tabular}
  \begin{tablenotes}
   \item[a] pour la réaction d'abstraction,
     $\fam0 Mu+HX \rightarrow MuH+X$.
   \item[b] 1 degré${} = \pi/180$ radians.
  \end{tablenotes}
 \end{threeparttable}
\end{center}
\end{document}

$\Reponse$ Pour pallier le problème de la commande \footnote, on peut la décomposer en deux : la commande \footnotemark, qui place le numéro de la note en exposant, et \footnotetext, qui place le texte de la note en bas de la page. Cette dernière commande devra être exécutée en dehors du tableau.

La méthode simple est décrite dans l'exemple suivant:

\begin{tabular}{ll}
  Pierre & 01.34.65.23.12 \\
  Jean   & 06.12.43.23.21 \\ 
  Michel\footnotemark &   \\
  Jean-Claude & 03.23.76.45.01
\end{tabular}%
\footnotetext{Je n'ai pas son numéro.}

% Notez en particulier le caractère \texcode{\%} suivant le \eenv{tabular}. Si vous ne le mettez pas, la note risque d'être insérée sur la mauvaise page.

Cette méthode présente cependant le problème suivant : si l'on a plusieurs notes dans le même tableau, les valeurs des compteurs ne seront pas les bonnes, puisque la commande \footnotemark va incrémenter plusieurs fois le compteur avant que ce même compteur soit utilisé par \footnotetext. Une solution, pour contourner ce problème, est de mémoriser la valeur du compteur avant le tableau, et de remettre le compteur de notes à cette valeur avant d'exécuter les \footnotetexts (qui, elles, n'incrémentent pas le compteur de notes) ; Par exemple : %

\newcounter{footnoteaux}
\setcounter{footnoteaux}{\value{footnote}}
\begin{tabular}{ll}
  Pierre  & 01.34.65.23.12\footnotemark \\
  Jean    & 06.12.43.23.21 \\ 
  Michel\footnotemark &    \\
  Jean-Claude & 03.23.76.45.01 \\
\end{tabular}%
\setcounter{footnote}{\value{footnoteaux}}%
\stepcounter{footnote}%
\footnotetext{Il a un répondeur.}%
\stepcounter{footnote}%
\footnotetext{Je n'ai pas son numéro.}

Une autre solution apportée sur fctt est la définition de commandes \footmark et \foottext définies ainsi:

\usepackage{ifthen}        % Utilisation des booléens
\newboolean{footmark}      % Un booléen
\newcounter{savedfootnote} % Compteur utilisé pour sauvegarder
                           %   la valeur du compteur footnote
\newcommand*{\footmark}{%
  \unless \iffootmark
    \global \footmarktrue
    \setcounter{savedfootnote}{\value{footnote}}%
  \fi
  \footnotemark
}
\newcommand*{\foottext}{%
  \iffootmark
    \global \footmarkfalse
    \setcounter{footnote}{\value{savedfootnote}}%
  \fi
  \refstepcounter{footnote}%
  \footnotetext
}

Les commandes s'utilisent ainsi (attention aux %):

\begin{tabular}{ll}
  Essai\footmark & Essai\footmark \\
  Essai\footmark & Essai\footmark \\
\end{tabular}%
\foottext{Une footnote}%
\foottext{Une deuxième}%
\foottext{Une troisième}%
\foottext{Une quatrième}

Les restrictions sont les suivantes:

\begin{enumerate} \item la méthode est inapplicable dans un flottant table, \item un paquet de footmark doit être suivi du même nombre de \foottext, \item l'utilisation des arguments optionnels est déconseillée. \end{enumerate}

$\Reponse$ Les notes au sein des tableaux produits à l'aide des packages longtable et supertabular fonctionnent, elles.

$\Reponse$ Le package mdwtab implémente les mêmes fonctionnalités que array mais, en outre, refait fonctionner les notes de bas de page. Toutefois, n'envisagez cette solution que si votre document n'est pas trop complexe. En effet, mdwtab est incompatible avec bon nombre de packages.

composition/tableaux/notes_de_bas_de_tableau.txt · Dernière modification: 2018/12/09 11:25 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0