Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Seitenumbruch in supertabular

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44

    Seitenumbruch in supertabular

    Hallo,
    ich verwende supertabular um lange Tabellen über mehrere Seiten zu erstellen. Hierbei hat aber die supertabular Umgebung probleme mit dem Umbruch und der Text läuft über den Rand hinaus.
    Wie kann ich supertabular sagen, dass ich an einer bestimmten Stelle einen Umbruch haben möchte?

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Zitat Zitat von roadrunner87 Beitrag anzeigen
    Hallo,
    ich verwende supertabular um lange Tabellen über mehrere Seiten zu erstellen. Hierbei hat aber die supertabular Umgebung probleme mit dem Umbruch und der Text läuft über den Rand hinaus.
    Wie kann ich supertabular sagen, dass ich an einer bestimmten Stelle einen Umbruch haben möchte?
    Über welchen Rand? Links, rechts, unten? Minimalbeispiel?

    Für den Zeilenumbruch innerhalb von Zellen muss du auch eine Spaltendefinitionen verwenden, die das unterstützt (z.B. p-Spalte).

    Der Seitenumbruch zwischen den Tabellenzeilen wird automatisch durch supertabular erledigt. (Siehe auch die Antworten in deinem alten Thread)

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Habe jetzt mal die Tabelle hinterlegt.

    Code:
    \documentclass[
        11pt, 	% Schriftgröße
        a4paper, % Papierformat
        oneside, % einseitiges Dokument
        titlepage, % es wird eine Titelseite verwendet
        final % Status des Dokuments (final/draft)
    ]{report}
    
    \usepackage[utf8]{inputenc}
    \usepackage{lmodern}
    \usepackage{supertabular} 
    \usepackage{array}
    \usepackage{ragged2e}
    \usepackage{xcolor,colortbl}
    \usepackage{lscape}			
    \usepackage{pdflscape}
    \usepackage{multicol}
    \usepackage{multirow}
    
    
    \begin{document} 
    
    \begin{landscape}
    
    \bottomcaption{Überschrift}
    \tablehead
    {
    		% Header
    		\hline
    		\rowcolor{gray}
    		\textbf{Spalte 1}	
    		&	\textbf{Spalte 2}	
    		&	\textbf{Spalte 3} 
    		&	\textbf{S 4} \\\hline \hline
    }
    
    \tabletail{
    
      \hline}
    \tablelasttail{}
    
    \centering
    \begin{supertabular} {|p{7cm}|p{6cm}|p{8cm}|c|}
    
    
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 1
    	A
    	&	B
    	& C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 2
    	A
    	& B
    	& C\newline
    		C\newline
    		C
    	& D	\\\hline
    	
    	% Zeile 3
    	A
    	& B		
    	& C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 4
    	A
    	&	B 
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 5
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	
    	% Zeile 6
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline	
    	
    	
    	% Zeile 7
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C
    	&	D	\\\hline		
    		
    			
    			
    			
    			
    			
    			
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 9
    	A
    	&	B
    	&	C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 10
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 11
    	A
    	&	B
    	&	C\newline	
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 15
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 16
    	A
    	&	B
    	&	C\newline
    		C
    	&	D	\\\hline
    	
    	
    
    
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 17
    	A
    	&	B
    	& \multirow{5}{8cm}{C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C}
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 18
    	A
    	&	B
    	&	
    	&	D\\\cline{1-2}
    	
    %	% Zeile 19
    %	High-level requirements are compatible with target computer.		
    %	&	SW Verification Results	
    %	&	
    %	&	\\\cline{1-2}
    	
    	% Zeile 20
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    					
    	% Zeile 21
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 22
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 23
    	A
    	&	B
    	&	
    	&	D \\\hline	
    	
    	\end{supertabular}
    \end{landscape}
    
    \end{document}
    Wenn ich nun dieses kompiliere ist bei mir
    • die erste Seite der Tabelle leer
    • die zweite Seite der Tabelle ist sehr weit im unteren Bereich der Seite (hier sollte schon eine Zeile zuvor umgebrochen werden)
    • die dritte Seite der Tabelle ist noch extremer ohne Umbruch


    Meine Idee ist diese, dass ich an diesen Stellen einen manuellen Umbruch einfüge.

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.468
    So weit ich weiß, findet der Seitenumbruch nur zwischen zwei Tabellenzeilen, nicht aber innerhalb einer Tabellenzeile statt, und ich glaube nicht, dass man das ändern kann.

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Dann verstehe ich aber nicht, warum er bei der zweiten Seite nicht umbricht.
    Hier ist die Tabelle ja schon am Ende.

    Ich habe schon longtable probiert. Hier ist aber die Darstellung nicht die gleiche wie bei supertabular und bei den "normalen" Tabellen. Daher kann ich dies aus konsistenz Gründen nicht verwenden.

    Was gibt es dann als Alternative noch?

  6. #6
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Das Problem mit der leeren Seite und dem suboptimalen Verteilung kannst mit
    Code:
    \shrinkheight{26pt} % oder ein bisschen mit dem Wert experimentieren
    nach der ersten Tabellenzeile lösen. Das Ergebnis ist dann aber immer noch alles andere als perfekt.

    .. wie auch supertabular, was durch deine (dank forcierten Umbrüchen) mehrzeiligen Tabellenzellen aus dem Konzept kommt und deshalb halb leere Seiten produziert.

    Beim letzten Fall "weiss" Latex einfach nicht, wo der Platz herkommen soll. Du gibst der multirow nur 5 Zeilen vor, aber gleichzeitig packst du 15 (!!!) Zeilen Inhalt rein.

    Da könnte man zum Beispiel die Zelle mit dem "A" in der letzten Zeile vergrößern:
    Code:
    ...
    	% Zeile 23
    \parbox[t]{7cm}{A \vspace{8\baselineskip}}
    	&	B
    	&	
    	&	D \\\hline	
    ...
    Das ist aber nicht schön, aber aktuell fällt mir aber auch nix besseres ein.

    Vielleicht hat noch jemand einen besseren Vorschlag oder du überlegst dir, was du noch an der Tabellen oder am Inhalt umbauen kannst.

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Gibt es nicht irgendwas wie in der Art
    Code:
    pagebreak
    ?
    Oder dass ich eine Unsichtbare Zeile an diesen Stellen anfüge?

  8. #8
    Registrierter Benutzer
    Registriert seit
    06.08.2008
    Beiträge
    1.015
    Mit longtabu (longtable+tabu) klappt die Verteilung auf den Seiten besser:
    Code:
    \documentclass[
        11pt, 	% Schriftgröße
        a4paper, % Papierformat
        oneside, % einseitiges Dokument
        titlepage, % es wird eine Titelseite verwendet
        final % Status des Dokuments (final/draft)
    ]{report}
    
    \usepackage[utf8]{inputenc}
    \usepackage{lmodern}
    \usepackage{longtable,tabu} 
    \usepackage{array}
    \usepackage{ragged2e}
    \usepackage{xcolor,colortbl}
    \usepackage{lscape}			
    \usepackage{pdflscape}
    \usepackage{multicol}
    \usepackage{multirow}
    
    
    \begin{document} 
    
    \begin{landscape}
    \centering
    \begin{longtabu} {|p{7cm}|p{6cm}|p{8cm}|c|}
    \hline
    		\rowcolor{gray}
    		\textbf{Spalte 1}	
    		&	\textbf{Spalte 2}	
    		&	\textbf{Spalte 3} 
    		&	\textbf{S 4} \\\hline \hline
     \endhead
    \hline
    \endfoot \endlastfoot
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 1
    	A
    	&	B
    	& C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 2
    	A
    	& B
    	& C\newline
    		C\newline
    		C
    	& D	\\\hline
    	
    	% Zeile 3
    	A
    	& B		
    	& C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 4
    	A
    	&	B 
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 5
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	
    	% Zeile 6
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D	\\\hline	
    	
    	
    	% Zeile 7
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C
    	&	D	\\\hline		
    		
    			
    			
    			
    			
    			
    			
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 9
    	A
    	&	B
    	&	C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 10
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C
    	&	D	\\\hline
    	
    	% Zeile 11
    	A
    	&	B
    	&	C\newline	
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 15
    	A
    	&	B
    	&	C\newline
    		C\newline
    		C\newline
    		C
    	&	D \\\hline
    	
    	% Zeile 16
    	A
    	&	B
    	&	C\newline
    		C
    	&	D	\\\hline
    	
    	
    
    
    	\multicolumn{4}{|l|}{\cellcolor{gray}\textbf{Kopf über alle Spalten}} \\\hline
    	
    	% Zeile 17
    	A
    	&	B
    	& \multirow{6}{8cm}{C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C\newline
    	C}
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 18
    	A
    	&	B
    	&	
    	&	D\\\cline{1-2}
    	
    %	% Zeile 19
    %	High-level requirements are compatible with target computer.		
    %	&	SW Verification Results	
    %	&	
    %	&	\\\cline{1-2}
    	
    	% Zeile 20
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    					
    	% Zeile 21
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 22
    	A
    	&	B
    	&	
    	&	D	\\\cline{1-2}\cline{4-4}
    	
    	% Zeile 23
     A	%\parbox[t]{7cm}{A \vspace*{8\baselineskip}}
    	&	B
    	&	
    	&	D \\\hline	
    	
    	\end{longtabu}
    \end{landscape}
    
    \end{document}
    Das multirow-Desaster wird dadurch allerdings nicht gelöst.

  9. #9
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Das mit longtabu habe ich versucht. Ist aber das gleiche Problem wie mit longtable. Hier ist die Beschriftung der Tabelle und dessen Aussehen verschieden zu den anderen.

    Könnte ich keine "versteckte" Tabelle oder einen Abstand an den kritischen Stellen packen?

  10. #10
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von roadrunner87 Beitrag anzeigen
    Hier ist die Beschriftung der Tabelle und dessen Aussehen verschieden zu den anderen.
    Das ließe sich doch ändern...

  11. #11
    ctansearch
    Gast
    Um Seitenumbrüche in Tabellen zu steuern, muß man wissen, in welcher Spalte und in welcher Zeile man sich befindet. Dazu habe ich folgenden Vorschlag:

    Code:
    \documentclass[a4paper,10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage{longtable,blindtext}
    \newcounter{tablines}
    \newcounter{tabcols}
    \newcommand{\colbreak}{\stepcounter{tabcols} Col: \thetabcols &}
    \newcommand{\tabbreak}{\stepcounter{tablines}\stepcounter{tabcols}
      Col: \thetabcols{} Line: \thetablines{} \setcounter{tabcols}{0} \\ }
    
    \begin{document}
    \begin{longtable}{p{4cm}p{4cm}p{4cm}}
    Test \colbreak Test \colbreak Test  \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    Test \colbreak Test \colbreak Test \tabbreak
    
    \end{longtable}
    \end{document}
    Hier werden zunächst nur die Werte der Spalten und Zeilen ermittelt, diese werden hier nur zur Veranschaulichung dargestellt (cols, lines) Diese Werte könnte man mit einer \if \else Bedingung im \newcommand versehen, was eine direkte Steuerung von Zeilen-, Spalten- und Seitenumbrüchen ermöglichen würde.

    Vielleicht hat jemand eine Idee, wie man diese Bedingungen geschickt in die \newcommands einbauen kann.

  12. #12
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Dann verstehe ich aber nicht, warum er bei der zweiten Seite nicht umbricht.
    Du rennst in einen der in der Dokumentation beschriebenen "Weak Points"

    Gibt es nicht irgendwas wie in der Art "pagebreak"
    Wenn du bereit bist, die Tabelle manuell zu beenden, warum benutzt du dann nicht einfach

    Code:
    \end{supertabular}
    \begin{supertabular}
    ?

  13. #13
    ctansearch
    Gast

    Zeilen- und Seitenumbruch bei longtable mit p{} Spalten

    Hallo.
    Mit diesem Code kann man mit longtable Tabellen erzeugen, die bei einer definierten Zeilenzahl umgebrochen und neu begonnen werden. Man kann zwischen die Tabellen einen Text, Bilder etc. einfügen.

    Code:
    \documentclass[a4paper,10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage{longtable,ifthen,graphicx}
    
    %definition zähler für Spalten und Zeilen>
    \newcounter{tablines}
    \newcounter{tabcols}
    %definition zähler für Spalten und Zeilen<
    
    %definition tabellenstruktur>
    \newcommand{\tabhead}
    {
    \begin{longtable}{p{4cm}p{4cm}p{4cm}} \caption{Lange Tabelle } \\ 
    \endfirsthead Das ist der Tabellenkopf \endhead 
    }
    %definitiontabellenstruktur<
    
    %definition Tabellenumbruch>
    \newcommand{\tabbreak}{
    \setcounter{tabcols}{0} 
    \end{longtable} 
    Manueller Umbruch. Neue Tabelle Optionaler Zwischentext
    \includegraphics[width=1cm,height=1cm]{test}
    \begin{picture}(0,0)\put(0,0){\rule{1cm}{1cm}}\end{picture}
    \tabhead 
    \endfirsthead Das ist der Tabellenkopf
    \endhead }
    %definition tabelleumbruch<
    
    %definition spaltenumbruch>
    \newcommand{\colbreak}{
    \stepcounter{tabcols} Col: \thetabcols &
    }
    %definition spaltenumbruch<
    
    %definition Zeilenumbruch mit Zeilennummer>
    \newcommand{\tabline}{
    \stepcounter{tablines}
    \stepcounter{tabcols}
      Col: \thetabcols{} 
    Line: \thetablines{} 
    \setcounter{tabcols}{0} \ifnum
    \thetablines = 15 \tabbreak \\ 
    \setcounter{tablines}{0} \else \\ \fi
    }
    %definition Zeilenumbruch mit Zeilennummer<
    
    \begin{document}
    \tabhead
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    Test \colbreak Test \colbreak Test \tabline
    \end{longtable}
    \end{document}
    Geändert von ctansearch (13-07-2012 um 17:28 Uhr) Grund: Titelzeile ergänzt

  14. #14
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Zitat Zitat von u_fischer Beitrag anzeigen
    Wenn du bereit bist, die Tabelle manuell zu beenden, warum benutzt du dann nicht einfach

    Code:
    \end{supertabular}
    \begin{supertabular}
    ?
    Da habe ich gerade versucht. Funktioniert aber nicht. Reicht einfach ein:
    Code:
    \end{supertabular}
    dann ein
    Code:
    \begin{supertabular}
    und anschließend alle Einstellungen erneut, wie in der Vorherigen Tabelle?

  15. #15
    Registrierter Benutzer
    Registriert seit
    17.06.2011
    Beiträge
    44
    Zitat Zitat von sommerfee Beitrag anzeigen
    Das ließe sich doch ändern...
    Und wie genau.
    Es muss umbedingt die gleiche Schrift wie bei Supertabular sein.
    Vor allem wenn ich zweimal
    Code:
    \hline
    angebe, muss ebenfalls die Linie + Abstand + Linie erscheinen!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •