Notas de rodapé para tabelas em LaTeX

87

Quando eu faço \footnote{}para um valor em uma tabela, a nota de rodapé não aparece. Como faço para que apareça? Além disso, é possível fazer com que apareça na parte inferior da tabela em vez de na parte inferior da página?

polk
fonte

Respostas:

72

Esta é uma dificuldade clássica em LaTeX.

O problema é como fazer layout com flutuadores (figuras e tabelas, objetos semelhantes) e notas de rodapé. Em particular, é difícil escolher um lugar para um flutuador com a certeza de que abrir espaço para as notas de rodapé associadas não causará problemas. Portanto, o padrão tabulare os figureambientes nem tentam.

O que você pode fazer:

  1. Falsificá-lo. Basta colocar um salto vertical codificado na parte inferior da legenda e, em seguida, escrever a nota de rodapé (use \footnotesizepara o tamanho). Você também deve gerenciar os símbolos ou números com \footnotemark. Simples, mas não muito atraente, e a nota de rodapé não aparece no final da página.
  2. Utilize o tabularx, longtable, threeparttable[x](parabéns para Joseph ) ou ctableque suportam esse comportamento.
  3. Gerencie manualmente. Use [h!](ou [H]com o pacote float) para controlar onde o float aparecerá, e \footnotetextna mesma página para colocar a nota de rodapé onde você deseja. Novamente, use \footnotemarkpara instalar o símbolo. Frágil e requer ferramentas manuais em cada instância.
  4. O footnotespacote fornece o savenoteambiente, que pode ser usado para fazer isso.
  5. Minipage it (código roubado imediatamente e leia a isenção de responsabilidade sobre textos de legendas longas nesse caso):
    \ begin {figura}
      \ begin {minipage} {\ textwidth}
        ...
        \ caption [Legenda para LOF]%
          {Legenda real \ nota de rodapé {blah}}
      \ end {minipage}
    \ end {figura}

Referência adicional: Item TeX FAQ Notas de rodapé em tabelas .

dmckee --- gatinho ex-moderador
fonte
texblog.org/2012/02/03/using-footnote-in-a-table parece-me uma boa alternativa
Pio
1
@dmckee É possível obter threeparttable na xtable: algo como print.xtable (df, tabular.environment = "threeparttable")?
Anusha
O link @Pio é uma ótima referência. Usar o pacote de notas de rodapé resolveu meu problema.
JOHN
Por que a resposta mais votada não está no topo?
Eduardo Reis
59

A melhor maneira de fazer isso sem dor de cabeça é usar o \tablefootnotecomando do tablefootnotepacote. Adicione o seguinte ao seu preâmbulo:

\usepackage{tablefootnote}

Ele simplesmente funciona sem a necessidade de truques adicionais.

Francesquini
fonte
17
No meu caso, usar \ tablefootnote fez a nota de rodapé aparecer, mas infelizmente na página anterior a da tabela.
Nu-hin
Você tem um exemplo para demonstrar esse comportamento?
Francesquini
2
Existe alguma maneira de colocar a nota de rodapé na mesma página da tabela?
Anusha
3
Isso não funciona para mim em tabelas aninhadas (as notas de rodapé são repetidas tantas vezes quanto as tabelas aninhadas)
publicado em
1
Trabalhando para mim usando o pacote float e [H] para a tabela para ter notas de rodapé na mesma página da tabela.
mao95
15

Um método talvez não tão elegante, que eu acho que é apenas uma variação do que algumas outras pessoas disseram, é apenas codificá-lo. Muitos periódicos têm um modelo que de alguma forma permite notas de rodapé de tabela, então tento manter as coisas bem básicas. Embora, realmente já existam alguns pacotes incríveis por aí, e eu acho que este tópico faz um bom trabalho ao apontar isso.

\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}

Saída do código acima

Scott Worland
fonte
11

Se a sua mesa já está funcionando tabular, o mais fácil é mudá-la para longtable, lembrando-se de adicionar

\usepackage{longtable}

Por exemplo:

\begin{longtable}{ll}
  2014--2015 & Something cool\footnote{first footnote} \\
  2016-- & Something cooler\footnote{second footnote}
\end{longtable}
Dúvida
fonte
2
Isso não funcionou para mim. Ainda não apareceu. Há algo mais que devo alterar, exceto adicionar essa linha?
Emanuel Berg
2
Aha, o comando start / end da tabela deve ser alterado também. Peguei vocês.
Emanuel Berg
1
Você pode fornecer um exemplo completo, por favor? Não consigo fazer isso funcionar
user2808117,
7

Use o ambiente de minipage. Aqui está um exemplo:

\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
fonte
1
No meu caso, ele imprime a nota de rodapé duas vezes e, em vez de ficar no final da página, fica bem embaixo da mesa no meio da página.
kakyo
5

Provavelmente, a melhor solução é examinar os pacotes threeparttable / threeparttablex.

Joseph Wright
fonte
1
Aqui estão algumas informações sobre como usar threeparttable. Funcionou para mim! dound.com/2009/06/…
Veridian
2

Nas tabelas usei \ footnotetext.

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

O que @dmckee disse.

Não é difícil escrever seu próprio código de enfileiramento de notas de rodapé sob medida. O que você precisa fazer é:

  1. Escreva código para enfileirar o código do Latex - como um gancho no emacs: técnica muito padrão, senão todo hacker do Latex pode realmente fazer isso direito;
  2. Redefina temporariamente \footnotepara adicionar uma macro de nota de rodapé à sua fila;
  3. Certifique-se de que o gancho seja chamado quando a tabela / figura sair e retornarmos ao modo vertical normal.

Se isso for interessante, mostro um código que faz isso.

Charles Stewart
fonte