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.