Przypisy do tabel w LaTeX

87

Kiedy robię \footnote{}dla wartości w tabeli, przypis nie pojawia się. Jak sprawić, by się pojawił? Czy jest możliwe wyświetlenie go na dole tabeli, a nie na dole strony?

polk
źródło

Odpowiedzi:

72

To klasyczna trudność w LaTeX.

Problem polega na tym, jak zrobić układ z elementami zmiennoprzecinkowymi (rysunki i tabele, podobne obiekty) i przypisami. W szczególności trudno jest wybrać miejsce na float mając pewność, że zrobienie miejsca na przypisy nie sprawi kłopotów. Więc standard tabulari figureśrodowiska nawet nie próbują.

Co możesz zrobić:

  1. Sfałszuj to. Po prostu umieść zakodowany na stałe pionowy przeskok na dole podpisu, a następnie samodzielnie napisz przypis (użyj \footnotesizedla rozmiaru). Musisz także samodzielnie zarządzać symbolami lub numerować \footnotemark. Prosty, ale niezbyt atrakcyjny, a przypis nie pojawia się na dole strony.
  2. Użyj tabularx, longtable, threeparttable[x](uznanie dla Józefa ) lub ctablektóre obsługują ten problem.
  3. Zarządzaj ręcznie. Użyj [h!](lub [H]z pakietem float), aby kontrolować, gdzie pojawi się zmiennoprzecinkowa, i \footnotetextna tej samej stronie, aby umieścić przypis tam, gdzie chcesz. Ponownie użyj, \footnotemarkaby zainstalować symbol. Kruchy i wymaga ręcznej obsługi każdego wystąpienia.
  4. footnotesPakiet zawiera savenoteśrodowisko, które mogą być wykorzystane do tego celu.
  5. Minipage it (kod został skradziony i przeczytaj wyłączenie odpowiedzialności dotyczące długich napisów w tym przypadku):
    \ begin {figure}
      \ begin {minipage} {\ textwidth}
        ...
        \ caption [Podpis dla LOF]%
          {Real caption \ footnote {blah}}
      \ end {minipage}
    \ end {figure}

Dodatkowe odniesienie: pozycja TeX FAQ Przypisy w tabelach .

dmckee --- kociak ex-moderator
źródło
texblog.org/2012/02/03/using-footnote-in-a-table wydaje mi się fajną alternatywą
Pio
1
@dmckee Czy w xtable można uzyskać tabelę trzech części: coś takiego jak print.xtable (df, tabular.environment = "threeparttable")?
Anusha
Link @Pio to świetne odniesienie. Korzystanie z pakietu przypisów rozwiązało mój problem.
JAN,
61

Najlepszym sposobem na zrobienie tego bez bólu głowy jest użycie \tablefootnotepolecenia z tablefootnotepakietu. Dodaj następujące informacje do swojej preambuły:

\usepackage{tablefootnote}

Po prostu działa bez dodatkowych sztuczek.

Francesquini
źródło
18
W moim przypadku użycie \ tablefootnote spowodowało wyświetlenie przypisu, ale niestety na stronie poprzedniej niż ta ze tabelą.
Nu-hin
1
Czy masz przykład, aby zademonstrować to zachowanie?
Francesquini
2
Czy istnieje sposób, aby przypis znajdował się na tej samej stronie co tabela?
Anusha
3
To nie działa dla mnie w tabelach zagnieżdżonych (przypisy są powtarzane tyle razy, ile tabel zagnieżdżonych)
fffred
1
Pracuję dla mnie przy użyciu pakietu float i [H] dla tabeli, aby przypisy były na tej samej stronie tabeli.
mao95
17

Być może niezbyt elegancką metodą, która moim zdaniem jest tylko odmianą tego, co powiedzieli inni ludzie, jest po prostu zakodowanie. Wiele czasopism ma szablon, który w pewien sposób pozwala na przypisywanie do tabeli, więc staram się, aby wszystko było dość proste. Chociaż naprawdę jest już kilka niesamowitych pakietów i myślę, że ten wątek dobrze na to wskazuje.

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

Wyjście z powyższego kodu

Scott Worland
źródło
11

Jeśli Twój stół już działa tabular, najłatwiej jest go przełączyć longtable, pamiętając o dodaniu

\usepackage{longtable}

Na przykład:

\begin{longtable}{ll}
  2014--2015 & Something cool\footnote{first footnote} \\
  2016-- & Something cooler\footnote{second footnote}
\end{longtable}
Wątpić
źródło
2
To mi się nie udało. Nadal się nie pojawia. Czy jest jeszcze coś, co muszę zmienić, oprócz dodania tej linii?
Emanuel Berg
2
Aha, należy również zmienić polecenie początku / końca tabeli. Mam cię.
Emanuel Berg,
1
Czy możesz podać pełny przykład? Nie mogę tego
uruchomić
7

Użyj środowiska minipage. Oto przykład:

\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
źródło
1
W moim przypadku dwukrotnie drukuje przypis i zamiast siedzieć na dole strony, znajduje się tuż pod stołem na środku strony.
kakyo
5

Prawdopodobnie najlepszym rozwiązaniem jest przyjrzenie się pakietom threeparttable / threeparttablex.

Joseph Wright
źródło
1
Oto kilka informacji na temat korzystania z trzech tabel. U mnie zadziałało! dound.com/2009/06/…
Veridian
2

W tabelach użyłem \ footnotetext.

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

Co powiedział @dmckee.

Nie jest trudno napisać własny kod do kolejkowania przypisów. Musisz:

  1. Napisz kod do kolejkowania kodu Latex - jak hak w emacsie: bardzo standardowa technika, jeśli nie każdy haker Latex może to zrobić dobrze;
  2. Tymczasowo przedefiniuj, \footnoteaby dodać makro przypisu do kolejki;
  3. Upewnij się, że hook zostanie wywołany, gdy tabela / figura wyjdzie i powrócimy do zwykłego trybu pionowego.

Jeśli to jest interesujące, pokażę kod, który to robi.

Charles Stewart
źródło