Bei der Vereinigung von longtable mit Hilfe tabularx mit Hilfe von ltxtable muss die entsprechende Tabelle bekanntlich als eigene Datei vorliegen, die dann über den Befehl \LTXtable geladen wird. Hat man in einem Dokument mehrere Tabellen, so kann die steigende Anzahl an externen Tabellendateien die Übersicht im Dokument schnell stören. Gibt es eine Möglichkeit, trotz ltxtable die Tabellen in den eigentlichen Dokumentdateien stehen zu haben?

gefragt 20 Sep '13, 06:40

saputello's gravatar image

saputello
18.4k22352
Akzeptiert: 89%

bearbeitet 20 Sep '13, 08:31


Ja, eine solche Möglichkeit gibt es und zwar mit Hilfe des Pakets filecontents. Wie bereits in der Antwort zum Thema VM kurz erklärt, verändert dieses Paket die LaTeX-Standard-Umgebungen filecontents und filecontents* in zweierlei Hinsicht:

  1. Die Umgebung überschreibt eine gleichnamige Datei, wenn sie bereits existiert.
  2. Die Umgebung kann auch noch innerhalb des Dokuments, also nach \begin{document} verwendet werden.

Diese beiden Eigenschaften sind genau das, was man für ltxtable benötigt. Man kann so nämlich die jeweilige Tabelle einfach via filecontents-Umgebung an der jeweiligen Stelle im Dokument, also unmittelbar vor der zugehörigen \LTXtable-Anweisung in eine Hilfsdatei schreiben lassen:

\documentclass{article}
\usepackage{longtable, ltxtable, booktabs}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}, Euro={€}}

\usepackage[ngerman]{babel}
\usepackage{filecontents}

\usepackage{lipsum}

\begin{document}

\section{Beispiel}

\begin{filecontents}{\jobname-ltxtable.tex}
\begin{longtable}{lX}
\caption{Testtabelle}\label{tab:log1}\\ 
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endfirsthead
\caption[]{Testtabelle \small(Fortsetzung)}\\
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endhead
\midrule
\endfoot 
\bottomrule
\endlastfoot 
A & \lipsum[1] \\
B & \lipsum[2] \\
C & \lipsum[3] \\
D & \lipsum[4] \\
\end{longtable}
\end{filecontents}
\LTXtable{\textwidth}{\jobname-ltxtable.tex}

\lipsum[2]

\begin{filecontents}{\jobname-ltxtable.tex}
\begin{longtable}{Xl}
\caption{noch eine Testtabelle}\label{tab:log2}\\ 
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endfirsthead
\caption[]{noch eine Testtabelle \small(Fortsetzung)}\\
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endhead
\midrule
\endfoot 
\bottomrule
\endlastfoot 
\lipsum[1] & A \\
\lipsum[2] & B \\
\lipsum[3] & C \\
\lipsum[4] & D \\
\end{longtable}
\end{filecontents}
\LTXtable{\textwidth}{\jobname-ltxtable.tex}

\end{document}

Wie in dem Beispiel zu sehen ist, kann sogar derselbe Dateiname für die Hilfsdateien mit den Tabellen immer wieder verwendet werden, so dass nicht das gesamte Verzeichnis mit Hilfsdateien überladen wird. Natürlich kann man aber auch immer wieder neue Dateinamen verwenden. In dem Fall bietet es sich an, den Label-Namen in den Dateinamen einfließen zu lassen, beispielsweise als tab-log1.tex und tab-log2.tex statt als \jobname-ltxtable.tex.

Permanenter link

beantwortet 20 Sep '13, 06:54

saputello's gravatar image

saputello
18.4k22352

bearbeitet 20 Sep '13, 07:01

Man kann an Stelle des Pakets ltxtable auch das Paket ltablex verwenden. Dieses erfordert nicht, dass man die langen Tabellen in eine eigene Datei schreibt. Dafür unterstützt es kein leeres optionales Argument für \caption:

\documentclass{article}
\usepackage{ltablex, booktabs}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}, Euro={€}}

\usepackage[ngerman]{babel}
\usepackage{filecontents}

\usepackage{lipsum}

\begin{document}

\section{Beispiel}

\begin{tabularx}{\linewidth}{lX}
\caption{Testtabelle}\label{tab:log1}\\ 
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endfirsthead
\caption*{Testtabelle \small(Fortsetzung)}\\
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endhead
\midrule
\endfoot 
\bottomrule
\endlastfoot 
A & \lipsum[1] \\
B & \lipsum[2] \\
C & \lipsum[3] \\
D & \lipsum[4] \\
\end{tabularx}

\lipsum[2]

\end{document}
Permanenter link

beantwortet 20 Sep '13, 08:23

saputello's gravatar image

saputello
18.4k22352

Das Paket tabu bietet zusammen mit longtable ebenfalls die Möglichkeit X-Spalten in einer seitenübergreifenden Tabelle zu verwenden:

\documentclass{article}
\usepackage{longtable,tabu,booktabs}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä}, germandbls={ß}, Euro={€}}

\usepackage[ngerman]{babel}
\usepackage{filecontents}

\usepackage{lipsum}

\begin{document}

\section{Beispiel}

\begin{longtabu} to \textwidth{lX}
\caption{Testtabelle}\label{tab:log1}\\ 
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endfirsthead
\caption[]{Testtabelle \small(Fortsetzung)}\\
\toprule
Spalte 1 & Spalte 2 \\
\midrule
\endhead
\midrule
\endfoot 
\bottomrule
\endlastfoot 
A & \lipsum[1] \\
B & \lipsum[2] \\
C & \lipsum[3] \\
D & \lipsum[4] \\
\end{longtabu}

\lipsum[2]

\end{document}

Leider ist derzeit der Status des Pakets bzw. dessen Zukunft ungeklärt. Möglicherweise wird diese Lösung daher bei zukünftigen Versionen des Pakets nicht mehr oder ganz anders funktionieren. Dafür kann bei tabu wie von longtable gewohnt auch mit einer \caption-Anweisung mit leerem optionalem Argument gearbeitet werden, um einen Eintrag ins Tabellenverzeichnis für Tabellenfolgeseiten zu vermeiden.

Permanenter link

beantwortet 20 Sep '13, 08:27

saputello's gravatar image

saputello
18.4k22352

bearbeitet 20 Sep '13, 08:29

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:

×185
×31
×23
×3

Frage gestellt: 20 Sep '13, 06:40

Frage wurde angeschaut: 4,969 Mal

Zuletzt aktualisiert: 20 Sep '13, 08:31