Fließtext um Tabelle in landscape-Umgebung

Tabellen und Grafiken erstellen und anordnen


shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Fließtext um Tabelle in landscape-Umgebung

Beitrag von shardur »

Hallo,

ich habe folgendes Problem: Ich habe ein große Tabelle, dich ich als Querformat anzeigen lassen muss. Ich nutze hierfür den landscape Befehl. Wie bekomme ich die Tabelle denn in den Fließtext? Bisher wird alles was nach der Tabelle geschrieben ist einfach danach eingefügt ohne evtl. eine nicht ganz volle Seite auszufüllen.

Hier ein Minimalbsp:
\documentclass[11pt]{article}

\pagestyle{headings}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[scaled]{helvet}
\usepackage{courier}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% Tables
\usepackage{longtable}          % zum erstellen von Tabellen ber mehrere Seiten
\usepackage{multirow}           % zum Verbinden von Zeilen innerhalb einer Tabelle
\usepackage{booktabs}
% Align table
\usepackage{siunitx}
\sisetup{table-text-alignment = center,table-align-exponent = false}
\usepackage{geometry}
\usepackage{lscape}
\usepackage[flushleft]{threeparttable} 
\usepackage{tabularx}
\usepackage{multirow}

\begin{document}

Text vor der Tabelle

\begin{landscape}
\setlength{\tabcolsep}{4mm}
\begin{table}[p]
\centering
\footnotesize
  \caption{Titel}
\begin{threeparttable}
\begin{tabular}{l S[table-format = -1.4]*{7}{S[table-format = -1.4]}}
\toprule
 & \multicolumn{1}{c}{\text{Bla}}  & \multicolumn{1}{r}{\text{Bla}} & \multicolumn{1}{r}{\text{Bla}} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} \\  \midrule
    Kennzahl & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ 
  \end{tabular}
  \begin{tablenotes}
  \item Angaben
  \end{tablenotes}
  \end{threeparttable}
  \label{label}
\end{table}
\end{landscape}

Text nach der Tabelle

\end{document}
Der Text vor und nach der Tabelle soll also als Fließtext um die Tabelle ausgerichtet werden. Kann mir hier jemand weiterhelfen?

Vielen Dank bereits im Voraus!

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Wenn Du auf die Änderung von tabcolsep verzichten kannst, dann könntest Du beim Hochformat bleiben:
\documentclass[11pt]{article}

\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[scaled]{helvet}
\usepackage{courier}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[showframe]{geometry}
\usepackage[flushleft]{threeparttable} 
\usepackage[tableposition=top]{caption}
\usepackage{blindtext}

\begin{document}
\blindtext

\begin{table}[htbp]
	\centering
	\small
	\begin{threeparttable}
		\caption{Titel}
		\label{tab:titel}
		\sisetup{table-format = -1.4}
		\begin{tabular}{l *8S}
		\toprule
 		& {Bla} & {Bla} & {Bla} & {Bla} & {Bla} & {Bla} & {Bla} & {Bla} \\  
		\midrule
		Kennzahl & -1.0000 & -2.0000 & -3.0000 & -4.0000 & -5.0000 & -6.0000 & -7.0000 & -8.0000 \\ 
		\bottomrule
		\end{tabular}
		\begin{tablenotes}
		\footnotesize
		\item Angaben
		\end{tablenotes}
	\end{threeparttable}
\end{table}

\blindtext
\end{document}

Gast

Beitrag von Gast »

landscape aus lscape oder dem eher zu empfehlenden pdflscape beginnt am Anfang und Ende immer eine neue Seite. Will man das nicht, so kann man ggf. auf \rotatebox aus graphicx ausweichen. In Kombination mit varwidth funktioniert das für deinen Zweck recht ordentlich:
\documentclass[11pt]{article}

\pagestyle{headings}
\usepackage[english]{babel}
\usepackage{mathptmx}
\usepackage[scaled]{helvet}
\usepackage{courier}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% Tables
\usepackage{longtable}          % zum erstellen von Tabellen ber mehrere Seiten
\usepackage{multirow}           % zum Verbinden von Zeilen innerhalb einer Tabelle
\usepackage{booktabs}
% Align table
\usepackage{siunitx}
\sisetup{table-text-alignment = center,table-align-exponent = false}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage[flushleft]{threeparttable} 
\usepackage{tabularx}
\usepackage{varwidth}
\usepackage{multirow}

\begin{document}

Text vor der Tabelle

\begin{table}[ht!]% Die Option ht! in der Realität besser weglassen, ich verwende sie hier nur, weil bei der Breite der verwendeten Tabelle sonst nie Text zusammen mit der Tabelle auf einer Seite landet. Siehe dazu https://texwelt.de/wissen/fragen/2528/wie-funktionieren-gleitobjekte-und-wie-kann-man-ihre-positionierung-beeinflussen
\setlength{\tabcolsep}{4mm}
  \rotatebox{90}{\begin{varwidth}{\textheight}
\centering
\footnotesize
  \caption{Titel}
\begin{threeparttable}
\begin{tabular}{l S[table-format = -1.4]*{7}{S[table-format = -1.4]}}
\toprule
 & \multicolumn{1}{c}{\text{Bla}}  & \multicolumn{1}{r}{\text{Bla}} & \multicolumn{1}{r}{\text{Bla}} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} & \multicolumn{1}{r}{Bla} \\  \midrule
    Kennzahl & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ 
  \end{tabular}
  \begin{tablenotes}
  \item Angaben
  \end{tablenotes}
  \end{threeparttable}
  \label{label}
  \end{varwidth}}
\end{table}

Text nach der Tabelle

\end{document}
Wie gezeigt muss \rotatebox natürlich innerhalb der table-Umgebung verwendet werden.

Allerdings ist anzumerken, dass es wenig sinnvoll erscheint, eine Tabelle, die wegen Überbreite gedreht wird, also in ihrer gedrehten Form vertikal sehr viel Platz verbraucht, zusammen mit weiterem Text über oder unter der Tabelle zu kombinieren. Ob es sinnvoll wäre, daneben Text zu setzen, darf ebenfalls bezweifelt werden. Ich empfehle daher im konkreten Fall eher Bartmans Lösung.

Es sei auch noch darauf hingewiesen, dass bereits \begin{table} natürlich verhindern würde, dass Text mit der Tabelle auf einer Seite steht. Bitte ggf. in einer LaTeX-Einführung nachlesen, warum das so ist.

shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Beitrag von shardur »

Danke euch beiden für die hilfreichen Anmerkungen!

Da meine eigentlichen Spaltenüberschriften teils etwas länger sind wie "Bla" (sorry, hätte vllt was anderes wie Bla wählen sollen), wird es nicht möglich sein die Tabelle im Hochformat auf eine Seite zu quetschen.
Ich wollte auch nicht noch Text auf die Seite der Tabelle dazunehmen - da sie auch ziemlich ganz eine Querseite ausfüllt im Original - sondern es so einstellen, dass die Seite im Querformat den Text davor und danach nicht abhackt, sondern die eine Seite vollschreibt, dann die Seite im Querformat anführt und dann im Hochformat mit dem weitern Text weitermacht. Entschuldigt, falls ich mich undeutlich ausgedrückt habe.

Geht das irgendwie oder sollte ich wenn ich meinen Text fertig geschrieben habe einfach mit dem clearpage Befehl dafür sorgen, dass der Text richtig aufgefüllt wird bevor, die Querseite folgt?

Ratgeber

Passendes Paket

Beitrag von Ratgeber »

shardur hat geschrieben:[…]

Da meine eigentlichen Spaltenüberschriften teils etwas länger sind wie "Bla" (sorry, hätte vllt was anderes wie Bla wählen sollen), wird es nicht möglich sein die Tabelle im Hochformat auf eine Seite zu quetschen.
Ich wollte auch nicht noch Text auf die Seite der Tabelle dazunehmen - da sie auch ziemlich ganz eine Querseite ausfüllt im Original - sondern es so einstellen, dass die Seite im Querformat den Text davor und danach nicht abhackt, sondern die eine Seite vollschreibt, dann die Seite im Querformat anführt und dann im Hochformat mit dem weitern Text weitermacht. Entschuldigt, falls ich mich undeutlich ausgedrückt habe.

Geht das irgendwie oder sollte ich wenn ich meinen Text fertig geschrieben habe einfach mit dem clearpage Befehl dafür sorgen, dass der Text richtig aufgefüllt wird bevor, die Querseite folgt?
\documentclass[11pt,a4paper,ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß},
  Euro={€}
}
\usepackage{babel}

\usepackage[margin=3cm,includeheadfoot]{geometry}
\usepackage[font=small,labelfont=bf]{caption}

\usepackage{booktabs}

%% Anleitung lesen! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{rotating}  % https://ctan.org/pkg/rotating
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[svgnames]{xcolor}  % U. a. für farbigen Text (s. u.)

\usepackage{lmodern}
\usepackage{microtype}

\usepackage{blindtext}  % Fülltext

\pagestyle{headings}

\begin{document}
  \tableofcontents

  \blinddocument

  \begin{sidewaystable}
    \caption{Platzhalter}
    \label{tab:platzhalter}
    \centering
    \begin{tabular}{*{5}{l}}\toprule
      Tabellenkopf & Tabellenkopf & Tabellenkopf & Tabellenkopf & Tabellenkopf \\ \midrule
            Inhalt &       Inhalt &       Inhalt &       Inhalt &       Inhalt \\
            Inhalt &       Inhalt &       Inhalt &       Inhalt &       Inhalt \\
            Inhalt &       Inhalt &       Inhalt &       Inhalt &       Inhalt \\
            Inhalt &       Inhalt &       Inhalt &       Inhalt &       Inhalt \\
            Inhalt &       Inhalt &       Inhalt &       Inhalt &       Inhalt \\ \bottomrule
    \end{tabular}
  \end{sidewaystable}

  % Nächster farbiger Text fängt vor der Tabelle an
  \color{red}  % Färbung zur Kontrolle
  \blinddocument
\end{document}

Gast

Beitrag von Gast »

shardur hat geschrieben:Geht das irgendwie oder sollte ich wenn ich meinen Text fertig geschrieben habe einfach mit dem clearpage Befehl dafür sorgen, dass der Text richtig aufgefüllt wird bevor, die Querseite folgt?
Mach mal in meinem Beispiel oben das [ht!] bei der table-Umgebung weg.

shardur
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Do 30. Okt 2014, 16:50

Beitrag von shardur »

Danke an euch nochmal.

Habe Ratgebers Vorschlag benutz mit sidewaystable - funktioniert einwandfrei!

Antworten