goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Gleittabelle in mehreren Tabellen

 

Hacks
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2017, 18:10     Titel: Gleittabelle in mehreren Tabellen
  Antworten mit Zitat      
Hallöle,
ich versuche ein A4 Blatt im Querformat zu benutzen, das in 3 Spalten eingeteilt ist und auf diesen Spalten sind Tabellen, die auch gerne nach "Spaltenende" in der nächsten Spalte weiterführen sollen.

Es ist sehr schwer dazu was zu googlen, weil der Begriff Spalte in diesem Fall ja mehrdeutig ist.

Hier ist mein aktuelles Konstrukt:
Code • Öffne in Overleaf
\documentclass[paper=landscape,pagesize,DIV=14]{scrartcl}
\usepackage{geometry}
\geometry{top=10mm, left=10mm, right=10mm, bottom=10mm,
headsep=0mm, footskip=0mm
}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{multicol}

\begin{document}
\begin{multicols}{3}

\section*{Tabelle 1}
\begin{tabular}{lcr}
 Linie & Richtung & Zeit \\
 RE7 & Schönefeld, Dessau & x:18 Uhr\\
 RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:55 Uhr\\
\end{tabular}
 
\section*{Tabelle 2}
\begin{tabular}{lcr}
 Linie & Richtung & Zeit \\
RE7  & Schönefeld, Dessau & x:31 (13-18U, -4)\\
RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:09\\
S2  & Bernau  & x:04, x:24, x:44\\
RE5  & Dabendorf, Wünsdorf & x:49\\
RE7  &Dabendorf, Wünsdorf & :31\\
\end{tabular}

% hier waren weitere Tabellen, die ich zur Codeübersichtlichkeit herausstrich
\end{multicols}
\end{document}


(wie man unschwer erkennt ist es eine Abfahrtstafel für Bahnlinien an für mich relevanten Bahnhöfen)

Das Problem hierbei ist, dass die Tabellen
a) Unendlich breit werden und nicht umklappen in die nächste Zeile, daher überlappen sich die drei Dokumentspalten auch so blöd.
b) die Tabellen als komplettes ganzes automatisch in die nächste Spalte springen, wenn ein Teil davon nicht mehr unten hinpasst. Ein Teil der Tabelle darf aber gerne wenn er passt auf der Vorspalte sein.

Hat hier jemand eine interessante Idee für mich?
Wie gesagt, es ist schwierig weil man es unter diesen Begriffen schlecht in Suchmaschinen recherchieren kann.

Danke und schönen Sonntag!

markusv
Forum-Guru
Forum-Guru

Beiträge: 373
Anmeldedatum: 03.09.15
Wohnort: Leipzig
Version: ---
     Beitrag Verfasst am: 16.10.2017, 07:12     Titel:
  Antworten mit Zitat      
Moin.

Du benutzt mit c,l und r Spaltendefinitionen, die kein automatischen Zeilenumbruch kennen.
Für die erste Tabelle würde sich stattdessen {lp{5cm}r} anbieten.

Alternativ kannst du auch das Paket Paket auf CTANtabularx nutzen, das mit dem Spaltentyp X daher kommt. Hier kannst du der Tabelle per Argument eine definierte Länge geben, die X-Spalte wird automatisch so angepasst, dass es stimmt.

Für Tabellen, die über die "Seitenspalte" hinaus gehen sollen, ist vermutlich Paket auf CTANlongtable (erlaubt Seitenumbrüche) oder Paket auf CTANltablex (longtable in Verb. mit tabularx) notwendig.

Beide erwähnten Varianten im Bsp.:
Code • Öffne in Overleaf
\documentclass[paper=landscape,pagesize,DIV=14]{scrartcl}
\usepackage{geometry}
\geometry{top=10mm, left=10mm, right=10mm, bottom=10mm,
headsep=0mm, footskip=0mm
}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{multicol}
\usepackage{tabularx}

\begin{document}
\begin{multicols}{3}
 
\section*{Tabelle 1}
\begin{tabular}{l>{\centering}p{5cm}r}%\centering ergänzt
 Linie & Richtung & Zeit \\
 RE7 & Schönefeld, Dessau & x:18 Uhr\\
 RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:55 Uhr\\
\end{tabular}
 
\section*{Tabelle 2}
\begin{tabularx}{\linewidth}{l>{\centering}Xr}%\centering ergänzt
 Linie & Richtung & Zeit \\
RE7  & Schönefeld, Dessau & x:31 (13-18U, -4)\\
RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:09\\
S2  & Bernau  & x:04, x:24, x:44\\
RE5  & Dabendorf, Wünsdorf & x:49\\
RE7  &Dabendorf, Wünsdorf & :31\\
\end{tabularx}
\end{multicols}
\end{document}

_________________

Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Books heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden

Hacks
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 09:58     Titel:
  Antworten mit Zitat      
Hallo und Danke für Deine Antwort,
also das mit c,l und r hab ich nun verstanden. danke. Das würde gut klappen. Aber das behebt dann wie von Dir schon angemerkt noch nicht das Multicolumn Problem, das kann dann sehr schlimm aussehen stellte ich fest.
LongTable arbeitet nicht in mehreren Spalten eines Multicolumn, wie ich durch eine Fehlermeldung und einen Internetbeitrag erfuhr, siehe hier: https://tex.stackexchange.com/quest.....ot-in-1-column-mode-error


Also hab ich es mal mit supertabular probiert. Das funktioniert nun über mehrere Seiten, wie es longtable auch tut, aber es ignoriert einfach die Existenz der Spalten auf einen Blatt und arbeitet immer auf einer Spalte und geht dann in die nächste A4 Seite. Sehr seltsam.

Eingefügt hab ich diesen Code hier zwischen die \begin{multicols}{3} und \end{multicols} Befehle:
Code • Öffne in Overleaf

\section*{Dabendorf}
\begin{supertabular}{p{1cm}|p{5cm}|p{2cm}}
 %Linie & Richtung & Zeit \\ \hline
 RE7 & Schönefeld, Dessau & x:18 Uhr\\
 RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:55 Uhr\\
\end{supertabular}
 
\section*{Blankenfelde}
\begin{supertabular}{p{1cm}|p{5cm}|p{2cm}}
RE7  & Schönefeld, Dessau & x:31 (13-18U, -4)\\
RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:09\\
S2  & Bernau  & x:04, x:24, x:44\\
RE5  & Dabendorf, Wünsdorf & x:49\\
RE7  &Dabendorf, Wünsdorf & :31\\
\end{supertabular}

Bartman
Forum-Meister
Forum-Meister


Beiträge: 993
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: Windows 7 64 Bit MiKTeX 2.9 32-Bit
     Beitrag Verfasst am: 16.10.2017, 11:02     Titel:
  Antworten mit Zitat      
Kennst Du auch schon die Antworten, auf die Herr Mittelbach verweist?
Private Nachricht senden Benutzer-Profile anzeigen

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 11:05     Titel:
  Antworten mit Zitat      
Bitte keine Codeschnipsel, sondern immer ein InfoMinimalbeispiel angeben, damit auch die Chance besteht, das ganze über den Overleaf-Link angezeigt zu bekommen (und dort ggf. bearbeiten zu können).

Was man auch probieren könnte ist, für jede Zeile eine eigene Tabelle zu verwenden. Dazu muss man natürlich feste Spaltenbreiten verwenden (wie in deinem supertabular-Beispiel. Damit die vertikalen Linien nicht unterbrochen werden, müsste man wohl noch \lineskip auf 0 setzen (nicht verwechseln mit \baselineskip). Besser ist aber ohnehin auf vertikale Linien zu verzichten. Das versteckt man dann natürlich besser in einem Makro (mit einem Argument je Spalte).

Natürlich könnte man die Tabelle auch manuell umbrechen, also nur an den Spaltengrenzen eine neue Tabelle beginnen.

Hacks
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 11:34     Titel:
  Antworten mit Zitat      
Hallo,
ich hab mir gerade den Kram von Herrn Mittelbach angesehen:
Code • Öffne in Overleaf
\documentclass[11pt, a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage{longtable}
\usepackage{multicol}

\newsavebox\ltmcbox

\def\shortlipsum{\par Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.\par}

\newcounter{entryno}
\setcounter{entryno}{1}
\def\tabline{Test & \the\value{entryno} & Description\addtocounter{entryno}{1}\\}
\def\tablines{\tabline\tabline\tabline\tabline\tabline}


\begin{document}





\begin{multicols}{2}
\shortlipsum
\medskip

\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne
\begin{longtable
}{|l|l|l|}
\tablines\tablines\tablines\tablines\tablines\tablines
\end{longtable}
\unskip
\unpenalty
\unpenalty}

\unvbox\ltmcbox




\medskip
\shortlipsum
\end{multicols}
\shortlipsum
\end{document}


Da besitze ich jetzt ein gewisses Hemmnis dagegen. Meine LaTeX Kenntnisse sind jetzt nicht besonders schlecht, aber ich verstehe kein Wort von dem was da steht. Ein Quelltext den ich nicht anpassen kann weil ich nichts verstehe, also das stupide Kopieren von irgendwas graut mir noch viel mehr als den Quatsch einfach in Word zu machen und LaTeX ad acta zu legen.

@Gast: Entschuldige das mit dem Minimalbeispiel, danke für den Hinweis.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 11:57     Titel:
  Antworten mit Zitat      
Das Prinzip dieses Codes ist es, zunächst eine Box mit der gesamten Tabelle zusammen zu basteln (das ist die \setbox-Anweisung). Eine solche vertikale Box besteht im Innern aus einer sogenannten vertikalen Liste. Grob gesagt ist das eine Liste der Zeilen in der vertikalen Box (etwas genauer besteht sie wiederum aus vertikalen oder horizontalen Boxen oder schlicht horizontalem Inhalt). Mit \unvbox wird genau diese vertikale Liste als Eingabe für die multicols-Umgebung verwendet. Es wird also quasi die Tabelle zeilenweise wieder als Eingabe verwendet. Damit kann zwischen den Zeilen die Spalte umbrochen werden.

Der Unterschied zwischen \usebox (LaTeX) oder \copy (TeX) ist also, dass die Box nicht an ganzes, sondern in ihren Bestandteile eingefügt wird.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 12:17     Titel:
  Antworten mit Zitat      
Der Vorschlag oben mit den einzelnen Tabellenstücken könnte übrigens so aussehen:
Code • Öffne in Overleaf
\documentclass[11pt, a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage{longtable}
\usepackage{multicol}
\usepackage{mwe}

\newcounter{entryno}
\setcounter{entryno}{1}
\newcommand*{\dotabline}[3]{\begin{tabular}{|p{2em}|p{1.2em}|p{2cm}|} #1 & #2 & #3\\\end{tabular}\vskip-\lineskip}
\newcommand*{\dotabhline}[3]{\begin{tabular}{|p{2em}|p{1.2em}|p{2cm}|} #1 & #2 & #3\\\hline\end{tabular}\vskip-\lineskip}
\newcommand*{\tabline}{\dotabline{Test}{\theentryno\stepcounter{entryno}}{Description}}
\def\tablines{\tabline\tabline\tabline\tabline\tabline}

\begin{document}

\begin{multicols}{2}
\blindtext
\begin{center}
\dotabhline{Test}{Nr.}{Description}
\tablines\tablines\tablines\tablines\tablines\tablines
\end{center}
\blindtext
\end{multicols}
\blindtext
\end{document}

Wie zu sehen ist, sind die vertikalen Linien in der Tat etwas problematisch. Besser ohne:
Code • Öffne in Overleaf
\documentclass[11pt, a4paper]{article}
\usepackage[margin=3cm]{geometry}
\usepackage{longtable}
\usepackage{multicol}
\usepackage{booktabs}
\usepackage{mwe}

\newcounter{entryno}
\setcounter{entryno}{1}
\newcommand*{\dotabline}[4][]{\begin{tabular}{p{2em}p{1.2em}p{2cm}} #2 & #3 & #4\\#1\end{tabular}\\}
\newcommand*{\dotabhead}[3
]{\begin{tabular}{p{2em}p{1.2em}p{2cm}}\toprule #1 & #2 & #3\\\midrule\end{tabular}\\*}
\newcommand*{\tabline}{\dotabline{Test}{\theentryno\stepcounter{entryno}}{Description}}
\def\tablines{\tabline\tabline\tabline\tabline\tabline}

\begin{document}

\begin{multicols}{2}
\blindtext
\begin{center}
\dotabhead{Test}{Nr.}{Description}
\tablines\tablines\tablines\tablines\tablines\tablines
\dotabline[\bottomrule]{Test}{\theentryno}{Description}
\end{center}
\blindtext
\end{multicols}
\blindtext
\end{document}

Hacks
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 12:18     Titel:
  Antworten mit Zitat      
Hallo und Danke für die Antwort,

es funktioniert nun tatsächlich und sieht nicht schockierend aus!
Ich bin nur mit dem Code nicht ganz zufrieden und würde gerne wissen, ob ich das vielleicht effektiver zusammenfassen kann.
Das sieht sehr repetitiv aus:
Code • Öffne in Overleaf
\documentclass[paper=landscape,pagesize,DIV=14]{scrartcl}
\usepackage{geometry}
\geometry{top=10mm, left=10mm, right=10mm, bottom=10mm,headsep=0mm, footskip=0mm}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{multicol}
\usepackage{longtable}

%\setlength{\columnseprule}{1pt}
\setlength{\columnsep}{1cm}
\newsavebox\ltmcbox
       
\begin{document}
\begin{multicols}{2}



\section*{Dabendorf}
\vspace{-0.5cm}
\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne
\begin{longtable
}{p{1.8cm}|p{7cm}|p{3cm}}
 RE7 & Schönefeld, Dessau & x:18 Uhr\\
 RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:55 Uhr\\
\end{longtable}
\unskip
\unpenalty
\unpenalty}

\unvbox\ltmcbox

\vspace{0.5cm}
\section*{Blankenfelde}
\vspace{-0.5cm}

\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne
\begin{longtable
}{p{1.8cm}|p{7cm}|p{3cm}}
RE7  & Schönefeld, Dessau & x:31 (13-18U, -4)\\
RE5  & Südkreuz, Stralsund (2n), Rostock (2n+1) & x:09\\
S2  & Bernau  & x:04, x:24, x:44\\
RE5  & Dabendorf, Wünsdorf & x:49\\
RE7  &Dabendorf, Wünsdorf & :31\\
\end{longtable}
\unskip
\unpenalty
\unpenalty}

\unvbox\ltmcbox

\vspace{0.5cm}
\section*{Schönefeld}
\vspace{-0.5cm}

\setbox\ltmcbox\vbox{
\makeatletter\col@number\@ne
\begin{longtable
}{p{1.8cm}|p{7cm}|p{3cm}}
 RE7  & Dessau  & x:44\\
RE7  & Dabendorf, Wünsdorf  & x:20\\
S9  & Adlershof, Ostkreuz, Pankow  & x:12, x:32, x:52\\
S45  & Adlershof, Südkreuz  & x:00, x:20, x:40\\
B 163, 164  & Adlershof  & 20minütlich\\
B 162, 164  & HU-Sport (Rud.Straße 1Cool  & 20minütlich\\
\end{longtable}
\unskip
\unpenalty
\unpenalty}

\unvbox\ltmcbox

\vspace{0.5cm}

% hier stehen noch viel mehr davon

\end{multicols}
\end{document}

u_fischer
Forum-Meister
Forum-Meister

Beiträge: 3574
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2017, 12:44     Titel:
  Antworten mit Zitat      
Ich würde sowas nicht mit Tabellen machen, sondern entweder mit \parboxen, oder mit einer Liste:

Code • Öffne in Overleaf
\documentclass[paper=landscape,pagesize,DIV=14]{scrartcl}
\usepackage{geometry}
\geometry{top=10mm, left=10mm, right=30mm, bottom=10mm,
headsep=0mm, footskip=0mm,columnsep=3cm
}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{multicol}

\newcommand\placezeit[1]{\makebox[0pt][l]{\makebox[\dimexpr\linewidth+3cm][r]{#1}}}

\textheight=3cm %nur damit die Spalten gefüllt werden ...

\begin{document}

\begin{multicols*}{3}\raggedright\raggedcolumns

\section*{Tabelle 1}
\begin{description}
 \item[\placezeit{x:18 Uhr}RE7] Schönefeld, Dessau
 \item[\placezeit{x:55 Uhr}RE5] Südkreuz, Stralsund (2n), Rostock (2n+1)
\end{description}

\section*{Tabelle 2}
\begin{description}
 \item[\placezeit{x:18 Uhr}RE7] Schönefeld, Dessau
 \item[\placezeit{x:55 Uhr}RE5] Südkreuz, Stralsund (2n), Rostock (2n+1)
 \item[\placezeit{x:18 Uhr}RE7] Schönefeld, Dessau
 \item[\placezeit{x:55 Uhr}RE5] Südkreuz, Stralsund (2n), Rostock (2n+1)
 \item[\placezeit{x:18 Uhr}RE7] Schönefeld, Dessau
 \item[\placezeit{x:55 Uhr}RE5] Südkreuz, Stralsund (2n), Rostock (2n+1)
\end{description}

\end{multicols*}
\end{document}

_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen Gehe zu Seite 1, 2  Weiter



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de