Wird eine tabularx-Tabelle verwendet, hat die nachfolgende Tabelle einen um +2 erhöhten Zähler.

Open in Online-Editor
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}     
\usepackage{caption}    
\usepackage{ltablex}    
\usepackage{hyperref}

\begin{document}

\listoftables

\begin{table}
\caption{caption table 1}
\begin{tabularx}{\linewidth}{cX}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabularx}%
\end{table}

\begin{table}
\caption{caption table 2}
\begin{tabular}{cc}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabular}%
\end{table}

\end{document}

alt text

ltablex ist in diesem Beispiel überflüssig und könnte durch tabularx ersetzt werden. Die echte Tabelle ist länger als 1 Seite. Gibt es einen workaround für lange Tabellen mit X-Spalten und ltablex oder ist ein anderes Paket dafür besser?

gefragt 06 Feb '15, 04:32

BraBra's gravatar image

BraBra
429515
Akzeptiert: 88%

bearbeitet 27 Feb '15, 04:54

saputello's gravatar image

saputello
18.4k22352


Wie in der Anleitung zum Paket erklärt, gehört \caption bei ltablex (genau wie bei bei longtable) in die Tabelle:

Open in Online-Editor
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}     
\usepackage{caption}    
\usepackage{ltablex}    
\usepackage{hyperref}

\begin{document}

\listoftables

\begin{table}
\begin{tabularx}{\linewidth}{cX}
\caption{caption table 1}\\
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabularx}%
\end{table}

\begin{table}
\caption{caption table 2}
\begin{tabular}{cc}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabular}%
\end{table}

\end{document}

Zur Erklärung: longtable ebenso wie die tabularx-Umgebung von ltablex, die ja letztlich eine erweiterte longtable ist, erhöht den Tabellenzähler table bereits selbst. Dafür erhöht die \caption-Anweisung innerhalb der Umgebung dann den Zähler nicht mehr. Hat man allerdings eine \caption (oder \captionof) außerhalb der Umgebung, dann wird natürlich davon der Zähler ebenfalls erhöht. Dadurch kam bei Dir die doppelte Erhöhung zustande.

Darüber hinaus sollte man eine Tabelle, die über mehrere Seiten umbrochen werden soll, niemals in eine Gleitumgebung packen, weil Gleitumgebungen nun einmal immer komplett auf einer Seite ausgegeben werden müssen und nicht über mehrere Seiten umbrochen werden können:

Open in Online-Editor
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}     
\usepackage{caption}    
\usepackage{ltablex}    
\usepackage{hyperref}

\begin{document}

\listoftables

\begin{tabularx}{\linewidth}{cX}
\caption{caption table 1}\\
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabularx}%

\begin{table}
\caption{caption table 2}
\begin{tabular}{cc}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabular}%
\end{table}

\end{document}

Da hier die Tabelle tatsächlich kürzer als eine Seite ist, ergibt sich allerdings das altbekannte Problem, dass die Nummerierungsreihenfolge nicht mehr stimmt. Daher sollte man in solchen Fällen zusätzlich eine \FloatBarrier mit Hilfe des Pakets placeins einfügen:

Open in Online-Editor
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}     
\usepackage{caption}    
\usepackage{ltablex}
\usepackage{placeins}    
\usepackage{hyperref}

\begin{document}

\listoftables

\FloatBarrier% Damit keine Gleittabellen hinter die nicht gleitende gleiten können.

\begin{tabularx}{\linewidth}{cX}
\caption{caption table 1}\\
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabularx}%

\FloatBarrier % Damit keine Gleittabellen an den Anfang der Seite
              % mit der nicht gleitenden Tabelle gleiten können.

\begin{table}
\caption{caption table 2}
\begin{tabular}{cc}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabular}%
\end{table}

\end{document}

Es sei auch noch erwähnt, dass longtable und die tabularx-Umgebung von ltablex auch dann den table-Zähler erhöhen, wenn man gar keine \caption für – korrekt also: in – der Tabelle hat. Daher muss man in solchen Fällen, den Zähler selbst wieder korrigieren:

Open in Online-Editor
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}     
\usepackage{caption}    
\usepackage{ltablex}
\usepackage{hyperref}

\begin{document}

\listoftables

\begin{tabularx}{\linewidth}{cX}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabularx}%
\addtocounter{table}{-1}% Tabellenzähler für longtable ohne \caption korrigiert.

\begin{table}
\caption{caption second table (first with caption)}
\begin{tabular}{cc}
\textbf{A} & \textbf{B} \\
1     & 2 \\
\end{tabular}%
\end{table}

\end{document}
Permanenter link

beantwortet 06 Feb '15, 04:49

saputello's gravatar image

saputello
18.4k22352

bearbeitet 27 Feb '15, 04:53

@saputello: danke für die tolle Erklärung!

(08 Feb '15, 08:50) BraBra
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×31
×31
×4
×2

Frage gestellt: 06 Feb '15, 04:32

Frage wurde angeschaut: 2,925 Mal

Zuletzt aktualisiert: 27 Feb '15, 04:54