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, 10:32

BraBra's gravatar image

BraBra
4294915
Akzeptiert-Rate: 20%

bearbeitet 27 Feb '15, 10:54

saputello's gravatar image

saputello
11.1k154365


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, 10:49

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 27 Feb '15, 10:53

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

(08 Feb '15, 14:50) BraBra
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×49
×39
×7
×2

gestellte Frage: 06 Feb '15, 10:32

Frage wurde gesehen: 11,330 Mal

zuletzt geändert: 27 Feb '15, 10:54