PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Darstellungsproblem mit datatool, tabularx und booktabs



Bilbo
26-07-2011, 16:10
Hallo,

nach langer Zeit hab ich mal wieder ein kleines Problem, welches ich nicht gelöst bekomme. Ich möchte mit dem Paket datatool eine Liste von Daten einlesen und diese als Tabelle darstellen. Hierfür nutze ich die Pakete tabularx und booktabs. Hier tauchen zwei Probleme auf.

Problem 1: Scheinbar funktioniert datatool nicht mit booktabs zusammen. Wenn ich die Linien \toprule, \midrule und \bottomrule weglasse, dann geht es.

Problem 2: Da es sich nur um zwei Spalten handelt, möchte ich diese wiederholt nebeneinander ausgeben, bis die Tabelle auf der aktuellen Seite voll ist oder keine Daten mehr vorhanden sind. Eventuell wäre eine longtable die bessere Option.

Angenommen der Datensatz enthält 200 Zeilen. Es passen aber nur ca. 40 Zeilen auf eine DIN A4-Seite. Daher möchte ich, dass die Tabelle automatisch mit den Daten aufgefüllt wird, bis diese voll ist. Sieht vom Layout her besser aus, als eine lange Tabelle, die nur aus 2 Spalten besteht und über mehrere Seiten geht.

Beispiel:

Spalte1 & Spalte2 & Spalte1 & Spalte2 & Spalte1 & Spalte2 ...

Man könnte es natürlich auch manuell lösen, macht aber viel Arbeit beim Formatieren der einzelnen Zeilen :D

Minimalbeispiel:


\documentclass{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{tabularx}

\begin{document}
\begin{center}
\captionof{table}{Testdaten.}
\DTLloaddb{Liste}{data.txt}
\begin{tabularx}{\textwidth}{@{}
>{\hsize=.5\hsize}X
>{\hsize=1.5\hsize}X
@{}}
%\toprule
Spalte1 & Spalte2 \\
%\midrule
\DTLforeach{Liste}{%
\spalte1=Spalte1,\spalte2=Spalte2}{%
\\
\spalte1 & \spalte2}
%\bottomrule
\end{tabularx}
\end{center}
\end{document}

esdd
27-07-2011, 13:35
Hallo,

zu Problem 1: Der Zeilenwechsel (\\) direkt vor \bottomrule fehlt.

\documentclass{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{tabularx}

\begin{document}
\begin{center}
\captionof{table}{Testdaten.}
\DTLloaddb{Liste}{data.txt}
\begin{tabularx}{\textwidth}{@{}>{\hsize=.5\hsize}X>{\hsize=1.5\hsize}X@{}}
\toprule
Spalte1 & Spalte2
\DTLforeach{Liste}{\spalte1=Spalte1,\spalte2=Spalt e2}{%
\DTLiffirstrow{\\ \midrule}{\\}
\spalte1 & \spalte2}
\\
\bottomrule
\end{tabularx}
\end{center}
\end{document}

Gruß
Elke