PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Packages arydshln und ltxtable unverträglich?



Zapicheri
13-12-2010, 08:30
Hallo zusammen!

In einem Dokument, das ich am schreiben bin, brauche ich eine Longtable mit Tabularx-Formatierung, daher das ltxtable-Package, wie auch, für andere Tabellen, gestrichelte Linien, also das arydshln-Package.

Hier ein Minimalbeispiel von meinen Tabellen:

\listfiles
\documentclass{article}%
\usepackage[ngerman]{babel}
\usepackage{colortbl}
\usepackage{ltxtable}
\usepackage{tabularx}%
\usepackage{arydshln}

\begin{filecontents}{langetabelle.tex}
\begin{longtable}{|X||*{2}{m{1.4cm}}||*{4}{m{1.2cm }}|}
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endhead
\multicolumn{7}{c}{\dots }\tabularnewline
\endfoot
\endlastfoot
AA & A & A & A & A & A & A \tabularnewline
AA & A & A & A & A & A & A \tabularnewline\hline
\end{longtable}
\end{filecontents}

\begin{document}%

\LTXtable{\textwidth}{langetabelle.tex}

\begin{tabularx}{\linewidth}{|m{1.5cm}|*{2}{m{1.2c m}}||*{2}{m{1.2cm}}||*{3}{X}|X|}
\hline
BB & B & B & B & B & 2 & 3 & 4 & 5 \tabularnewline\cdashline{2-9}
& Z & Z & C & C & A & B & C & D \tabularnewline\hline
\end{tabularx}
\end{document}


Beim Compilieren habe ich dann folgende Situation:

- wenn arydshln aktiv ist (also nicht auskommentiert) kommt die zweite Tabelle (mit gestrichelten Linien) richtig und in der ersten kommen die horizontalen Linien richtig (doppeltes \hline wird zu zwei Strichen), aber senkrechte Linien sind völlig falsch (bzw. bis auf die erste, inexistent). Ich kriege aber keine Fehlermeldungen, nur eine hässliche erste Tabelle.
- wenn arydshln auskommentiert ist, kommt die erste Tabelle recht gut, bis auf das doppelte \hline, das einen dicken statt 2 separate Linien macht. Dafür gibt es Fehler in der 2. Tabelle: cdashline ist dann unbekannt. (Logisch, aber ist bisher der einzige Weg, den ich gefunden habe, um die erste Tabelle wieder richtig zu haben)

Hab ewig gegoogelt aber nirgends Infos zu diesem Problem gefunden. Kann jemand helfen bitte?
Danke Euch!

rstuby
13-12-2010, 08:45
Müssen denn unbedingt senkrechte Linien sein? Die gelten ja normalerweise als kontraproduktiv für die Lesbarkeit.

Zu deinem eigentlichen Problem kann ich dir erst mal so noch nicht helfen.

Xenara
13-12-2010, 08:51
Mit longtable statt ltxtable scheint es zu funktionieren:

\documentclass{article}%
\usepackage[ngerman]{babel}
\usepackage{colortbl}
\usepackage{longtable}
\usepackage{tabularx}%
\usepackage{arydshln}

\usepackage{filecontents}
\begin{filecontents}{langetabelle.tex}
\begin{longtable}{|l||*{2}{m{1.4cm}}||*{4}{m{1.2cm }}|}
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endhead
\multicolumn{7}{c}{\dots }\tabularnewline
\endfoot
\endlastfoot
AA & A & A & A & A & A & A \tabularnewline
AA & A & A & A & A & A & A \tabularnewline\hline
\end{longtable}
\end{filecontents}

\begin{document}%

%\LTXtable{\textwidth}{langetabelle.tex}
\input{langetabelle.tex}

\begin{tabularx}{\linewidth}{|m{1.5cm}|*{2}{m{1.2c m}}||*{2}{m{1.2cm}}||*{3}{X}|X|}
\hline
BB & B & B & B & B & 2 & 3 & 4 & 5 \tabularnewline
\cdashline{2-9}
& Z & Z & C & C & A & B & C & D \tabularnewline\hline
\end{tabularx}
\end{document}


Da vertikale Linien für gewöhnlich aber sowieso als "böse" angesehen werden, könntest du dir überlegen, deine Tabellen ohne sie zu formatieren. Dann würde es mit arydshln kein Problem geben und du könntest booktabs nutzen, was schönere horizontale Linien und bessere Abstände generiert.
Das könnte dann z.B. so aussehen:


\documentclass{article}%
\usepackage[ngerman]{babel}
\usepackage{tabularx}%
\usepackage{arydshln}
\usepackage{booktabs}

\begin{document}%

\begin{tabularx}{\linewidth}{>{\centering\arraybackslash}m{1.5cm}*{2}{>{\centering\arraybackslash}m{1.2cm}}*{2}{m{1.2cm}} *{3}{X}X}
\toprule
Titel & Spalte 1 & Spalte 2 & B & B & 2 & 3 & 4 & 5 \tabularnewline
\cmidrule(lr){1-1}
\cmidrule(lr){2-2}
\cmidrule(lr){3-3}
\cmidrule(lr){4-9}
Blabla & Z & Z & C & C & A & B & C & D \tabularnewline
\cdashline{2-9}\\[-2.25ex]
& Z & Z & C & C & A & B & C & D \tabularnewline
\bottomrule
\end{tabularx}
\end{document}

voss
13-12-2010, 08:59
In einem Dokument, das ich am schreiben bin, brauche ich eine Longtable mit Tabularx-Formatierung, daher das ltxtable-Package, wie auch, für andere Tabellen, gestrichelte Linien, also das arydshln-Package.

- wenn arydshln aktiv ist (also nicht auskommentiert) kommt die zweite Tabelle (mit gestrichelten Linien) richtig und in der ersten kommen die horizontalen Linien richtig (doppeltes \hline wird zu zwei Strichen), aber senkrechte Linien sind völlig falsch (bzw. bis auf die erste, inexistent). Ich kriege aber keine Fehlermeldungen, nur eine hässliche erste Tabelle.
- wenn arydshln auskommentiert ist, kommt die erste Tabelle recht gut, bis auf das doppelte \hline, das einen dicken statt 2 separate Linien macht. Dafür gibt es Fehler in der 2. Tabelle: cdashline ist dann unbekannt. (Logisch, aber ist bisher der einzige Weg, den ich gefunden habe, um die erste Tabelle wieder richtig zu haben)


Versuche es so:

\listfiles
\documentclass{article}%
\usepackage[ngerman]{babel}
\usepackage{ltxtable}
\usepackage{arydshln}
\renewcommand\tabularxcolumn[1]{m{#1}}

\usepackage{filecontents}
\begin{filecontents}{langetabelle.tex}
\begin{longtable}{@{\vline\kern\tabcolsep} X
@{\kern\tabcolsep\vline\kern2pt\vline\kern\tabcols ep}*{2}{m{1.4cm}}
@{\vline\kern2pt\vline\kern\tabcolsep}*{4}{m{1.2cm }}
@{\vline}}\hline
%\begin{longtable}{|X||*{2}{m{1.4cm}}||*{4}{m{1.2c m}}|}
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endfirsthead
\hline
1 & 2 & 3 & 4 & 5 & 6 & 7 \tabularnewline \hline\hline
\endhead
\multicolumn{7}{c}{\dots }\tabularnewline
\endfoot
\endlastfoot
AA & A & A & A & A & A & A \tabularnewline
AA & A & A & A & A & A & A \tabularnewline\hline
\end{longtable}
\end{filecontents}

\begin{document}%

\LTXtable{\textwidth}{langetabelle.tex}

\begin{tabularx}{\linewidth}{|m{1.5cm}|*{2}{m{1.2c m}}||*{2}{m{1.2cm}}||*{3}{X}|X|}\hline
BB & B & B & B & B & 2 & 3 & 4 & 5 \tabularnewline\cdashline{2-9}
& Z & Z & C & C & A & B & C & D \tabularnewline\hline
\end{tabularx}

\end{document}

Herbert

Zapicheri
13-12-2010, 09:45
Ihr seid echt super hier! Genau deshalb suche ich meine Latex-Antworten immer zuerst auf diesem Forum.

Auf die senkrechten Striche kann ich leider nicht verzichten: Leserwunsch... Aber die Lösung von Herbert scheint vielversprechend zu sein. Jetzt baue ich sie ins Dokument ein und dann versuche ich noch die verschiedenen Lösungsansätze zu verstehen. In den paar Antworten ist ja ganz viel zum Lernen drin!

1000 Dank!