Przypisy do tabel w LaTeX


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 .


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.


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


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}

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}

1
W moim przypadku dwukrotnie drukuje przypis i zamiast siedzieć na dole strony, znajduje się tuż pod stołem na środku strony.
kakyo



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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.