Notes de bas de page pour les tableaux en LaTeX

87

Lorsque je le fais \footnote{}pour une valeur dans un tableau, la note de bas de page ne s'affiche pas. Comment puis-je le faire apparaître? De plus, est-il possible de le faire apparaître en bas du tableau plutôt qu'en bas de page?

polk
la source

Réponses:

72

C'est une difficulté classique dans LaTeX.

Le problème est de savoir comment faire la mise en page avec des flottants (figures et tableaux, objets similaires) et des notes de bas de page. En particulier, il est difficile de choisir un emplacement pour un flotteur avec la certitude que faire de la place pour les notes de bas de page associées ne causera pas de problèmes. Donc, la norme tabularet les figureenvironnements n'essaient même pas.

Que pouvez-vous faire:

  1. Faites semblant. Mettez simplement un saut vertical codé en dur au bas de la légende, puis écrivez vous-même la note de bas de page (à utiliser \footnotesizepour la taille). Vous devez également gérer vous-même les symboles ou les nombres \footnotemark. Simple, mais pas très attrayant, et la note de bas de page n'apparaît pas en bas de page.
  2. Utilisez le tabularx, longtable, threeparttable[x](félicitations à Joseph ) ou ctablequi soutiennent ce comportement.
  3. Gérez-le à la main. Utilisez [h!](ou [H]avec le package float) pour contrôler où le float apparaîtra, et \footnotetextsur la même page pour placer la note de bas de page où vous le souhaitez. Encore une fois, utilisez \footnotemarkpour installer le symbole. Fragile et nécessite un outillage manuel à chaque instance.
  4. Le footnotespackage fournit lesavenote environnement, qui peut être utilisé pour ce faire.
  5. Minipage (code volé purement et simplement , et lisez l'avertissement sur les longs textes de légende dans ce cas):
    \ begin {figure}
      \ begin {minipage} {\ textwidth}
        ...
        \ caption [Légende pour LOF]%
          {Véritable légende \ footnote {blah}}
      \ end {minipage}
    \ end {figure}

Référence supplémentaire: élément de la FAQ TeX Notes de bas de page dans les tableaux .

dmckee --- chaton ex-modérateur
la source
texblog.org/2012/02/03/using-footnote-in-a-table me semble une belle alternative
Pio
1
@dmckee Est-il possible d'obtenir troisparttable dans la table x: quelque chose comme print.xtable (df, tabular.environment = "threeparttable")?
Anusha le
@Pio link est une excellente référence. L'utilisation du package de notes de bas de page a résolu mon problème.
JOHN
Comment se fait-il que la réponse la plus votée ne soit pas au sommet?
Eduardo Reis le
60

La meilleure façon de le faire sans aucun mal de tête est d'utiliser la \tablefootnotecommande du tablefootnotepackage. Ajoutez ce qui suit à votre préambule:

\usepackage{tablefootnote}

Cela fonctionne simplement sans avoir besoin d'astuces supplémentaires.

Francesquini
la source
17
Dans mon cas, l'utilisation de \ tablefootnote a fait apparaître la note de bas de page, mais malheureusement sur la page avant celle avec le tableau.
Nu-hin
Avez-vous un exemple pour démontrer ce comportement?
Francesquini
2
Existe-t-il un moyen d'obtenir la note de bas de page sur la même page que le tableau?
Anusha
3
Cela ne fonctionne pas pour moi dans les tableaux imbriqués (les notes de bas de page sont répétées autant de fois que les tableaux imbriqués)
fffred
1
Travailler pour moi en utilisant le package float et [H] pour le tableau afin d'avoir des notes de bas de page sur la même page du tableau.
mao95
15

Une méthode peut-être pas si élégante, qui, je pense, n'est qu'une variante de ce que d'autres personnes ont dit, consiste simplement à la coder en dur. De nombreuses revues ont un modèle qui permet d'une certaine manière les notes de bas de page, donc j'essaie de garder les choses assez basiques. Cependant, il existe déjà des packages incroyables, et je pense que ce fil fait un bon travail pour le souligner.

\documentclass{article}
\begin{document}
\begin{table}[!th]
\renewcommand{\arraystretch}{1.3} % adds row cushion
\caption{Data, level$^a$, and sources$^b$}
\vspace{4mm}
\centering
\begin{tabular}{|l|l|c|c|}
  \hline      
  \textbf{Data}  & \textbf{Description}   & \textbf{Level} & \textbf{Source} \\
  \hline      
  \hline
  Data1  &  Description. . . . . . . . . . . . . . . . . .   &  cnty & USGS \\
  \hline
  Data2  &  Description. . . . . . . . . . . . . . . . . .   &  MSA & USGS \\
  \hline
  Data3  &  Description. . . . . . . . . . . . . . . . . .   &  cnty & Census  \\
  \hline  
\end{tabular}
\end{table}
\footnotesize{$^a$ The smallest spatial unit is county, $^b$ more details in appendix A}\\
\end{document}

Sortie du code ci-dessus

Scott Worland
la source
11

Si votre table fonctionne déjà avec tabular, le plus simple est de la basculer vers longtable, en vous rappelant d'ajouter

\usepackage{longtable}

Par exemple:

\begin{longtable}{ll}
  2014--2015 & Something cool\footnote{first footnote} \\
  2016-- & Something cooler\footnote{second footnote}
\end{longtable}
Doute
la source
2
Cela n'a pas fonctionné pour moi. Cela n'apparaît toujours pas. Y a-t-il autre chose que je dois changer à part ajouter cette ligne?
Emanuel Berg
2
Aha, la commande de début / fin de la table doit également être modifiée. Je t'ai eu.
Emanuel Berg
1
Pouvez-vous donner un exemple complet s'il vous plaît? Je ne peux pas faire fonctionner cela
user2808117
7

Utilisez l'environnement de minipage. Voici un exemple:

\begin{minipage}{6cm}
\begin{tabular}{|l|c|c|}
    \hline
    A & 1 & 2 \footnote{This is a footnote.} \\
    \hline
    B & 2 & 1 \\
    \hline
    C & 3 & 3 \\
    \hline
\end{tabular}
\end{minipage}
wgzhao
la source
1
Dans mon cas, il imprime la note de bas de page deux fois, et au lieu de s'asseoir en bas de page, il se trouve juste sous le tableau au milieu de la page.
kakyo
5

La meilleure solution est probablement de regarder les packages threeparttable / threeparttablex.

Joseph Wright
la source
1
Voici quelques informations sur l'utilisation de threeparttable. Cela a fonctionné pour moi! dound.com/2009/06/…
Veridian
2

Dans les tableaux, j'ai utilisé \ footnotetext.

MSB
la source
2
\begin{figure}[H]
\centering
{\includegraphics[width=1.0\textwidth]{image}}
\caption{captiontext\protect\footnotemark}
\label{fig:}
\end{figure}
\footnotetext{Footnotetext} 
Ramosta
la source
0

Ce que @dmckee a dit.

Il n'est pas difficile d'écrire votre propre code de mise en file d'attente de notes de bas de page. Ce que vous devez faire est:

  1. Ecrire du code dans la file d'attente Code Latex - comme un hook dans emacs: technique très standard, sinon tous les hackers Latex peuvent réellement faire cela correctement;
  2. Redéfinissez temporairement \footnotepour ajouter une macro de note de bas de page à votre file d'attente;
  3. Assurez-vous que le hook est appelé lorsque le tableau / la figure se termine et que nous revenons au mode vertical normal.

Si cela est intéressant, je montre du code qui fait cela.

Charles Stewart
la source