PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit longtable und arydshln



hardun
14-10-2009, 10:00
Hallo zusammen,
ich habe ein Problem bei der Benutzung von longtable in Kombination mit arydshln.

Eine longtable-Tabelle wird bei der Erstellung von Rechnungen bei mir manchmal so lang, dass sie auf eine neue Seite umbricht.
In seltenen Fällen kommt es vor, dass auf der neuen Seite nur der Kopf der Tabelle (definiert mit \endfirsthead oder \endhead) und der Fuß der Tabelle (definiert mit \endfoot oder \endlastfoot) erscheint, weil keine Inhaltszeile mehr darzustellen ist. Soweit ist das in Ordnung und wie erwartet.

Benutze ich allerdings das arydshln-Paket, welches ich für gestrichelte horizontale Linien benötige, erscheinen in dieser speziellen Situation auf der neuen Seite die vertikalen Linien der Tabelle unterhalb der eigentlichen Tabelle. Siehe Screenshot:
http://www.osla.de/images/longtable_arydshln.gif

Ohne dem arydshln-Paket sind die vertikalen Linien da wo sie sein sollen, nämlich im Kopf und Fuß der Tabelle.

Hier ein Minimalbeispiel:


\documentclass[a4paper,10pt]{scrartcl}

\usepackage{longtable}
\usepackage{arydshln}

\begin{document}

% Abstand um die Tabelle an das Seitenende zu schieben
\vspace*{165mm}

\begin{longtable}[l]{|l|}

% Kopfzeile
\hline
head \tabularnewline
\endhead

% Fußzeile erste Seite
\hline
foot page first \tabularnewline
\endfoot

% Fußzeile jede weitere Seite
\hline
foot \tabularnewline
\hline
\endlastfoot

% Inhalt
\hline
content \tabularnewline
\hline
content \tabularnewline

\end{longtable}

\end{document}


Das Problem tritt sowohl mit MikTeX 2.7 unter Windows als auch mit einer TeXLive 2008 Distribution unter Linux auf.
Wenn man die Zeile 4 (\usepackage{arydshln}) auskommentiert tritt das Problem nicht auf.

Hat jemand einen Rat für mich?
Gibt es eine Alternative zum arydshln-Paket um getsrichelte horizontale Linien in Tabellen zu erzeugen?

Vielen Dank vorab für eine Antwort...

u_fischer
14-10-2009, 10:41
Du kannst lokal deaktivieren mit \ADLinactivate, siehe Dokumentation.

hardun
14-10-2009, 11:08
Vielen Dank für den Hinweis.

Leider weiß ich aber bei der Erstellung der einzelnen Tabellen noch nicht, ob ich gestrichelte Linien benötige oder nicht. Der TeX-Quellcode für meine Tabellen wird von einer Anwendung automatisiert zusammengesetzt.

Mit \ADLinactivate kann ich ja das Paket arydshln auch nur für komplette Tabellen deaktivieren. Somit könnte ich also keine gestrichelte Linien in einer Tabelle erzeugen, bei der nur der Tabellenfuß (und damit auch der Tabellenkopf) auf eine neue Seite springt.

Sieht jemand eine Lösung?

Vielen Dank...

u_fischer
14-10-2009, 12:54
In deinem Fall könnte der einsame Tabellenteil daher kommen, dass der letzte Fuß (wegen der zusätzlichen Linie) etwas größer ist, als der normale Fuß. Wenn du da wirklich keine Linie willst, kannst du versuche mit \noalign eine unsichtbare Linie einzufügen.

Es kann übrigens auch am Anfang der Tabelle zu einsamen Teilen kommen, das kannst du mit needspace unterdrücken.



\documentclass[a4paper,10pt]{scrartcl}

\usepackage{longtable,needspace}


\begin{document}
%\vspace*{170mm}\needspace{4\baselineskip}%
\vspace*{165mm}
\begin{longtable}[l]{|l|}
\hline
head %\\
\endhead
\hline
foot page first\\%\noalign{\vphantom{\rule{2cm}{0.4pt}}}
%\hline %hinzufügen
\endfoot
\hline
foot \\
\hline
\endlastfoot
\hline
content \\
\hline
content2
\end{longtable}

\end{document}

hardun
14-10-2009, 14:47
Vielen Dank für die Hinweise.

Ich ab jetzt eine Lösung gefunden, wobei ich nicht weiß, ob die wirklich "schön" ist.

Das Problem war eindeutig die fehlende \hline beim Fußbereich der ersten Seite(n) der Tabelle. Sobald ich am Ende des Fußbereichs für die ersten Seite(n) eine \hline eingesetzt hatte, funktionierte alles ohne Probleme.
Da an dieser Stelle aber keine Linie erscheinen soll, habe ich sie mit \arrayrulecolor{white} auf weiß gesetzt.

Die \arrayrulecolor{}-Befehle konnte ich allerdings nicht direkt um den \hline setzten, daher die etwas seltsam anmutende Platzierung von \arrayrulecolor{white} und \arrayrulecolor{black}:

\documentclass[a4paper,10pt]{scrartcl}

\usepackage{longtable}
\usepackage{color}
\usepackage{colortbl}
\usepackage{arydshln}

\begin{document}

% Abstand um die Tabelle ans Seitenende zu schieben
\vspace*{168mm}

\begin{longtable}[l]{|l|}
% Kopfzeile
\hline
head \tabularnewline
\endhead

% Fußzeile erste Seite
foot page first \arrayrulecolor{white} \tabularnewline
\hline
\endfoot

% Fußzeile jede weitere Seite
\noalign \arrayrulecolor{black}
\hline
foot \tabularnewline
\hline
\endlastfoot

% Inhalt
\hline
content \tabularnewline
\hline
content \tabularnewline

\end{longtable}

\end{document}

Wie gesagt, ich weiß nicht, ob das alles so "OK" ist, funktioniert aber.

Danke noch mal.