Seite 1 von 1
Text hochkant in Tabelle mit verbunden Zellen
Verfasst: Di 8. Mär 2016, 18:10
von snake
Servus liebe Gemeinde,
ich kämpfe schon den ganzen Tag vergeblich mit meiner Tabelle. Darin gibt es mehrere verbundene Zellen, in denen der Text hochkant und vertikal zentriert dargestellt werden soll (s.
http://www.directupload.net/file/d/4287 ... or_png.htm).
Bisher habe ich folgende beide Varianten versucht:
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}lll@{}}
\toprule
\multirow{3}{*}{\rotatebox{90}{vertikaler Text}} & 1 & abc \\
& 2 & def \\
& 3 & ghi \\ \bottomrule
\end{tabular}
\end{table}
\begin{table}[]
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}lll@{}}
\toprule
\rotatebox{90}{\multirow{3}{*}{vertikaler Text}} & 1 & abc \\
& 2 & def \\
& 3 & ghi \\ \bottomrule
\end{tabular}
\end{table}
Dies führt zu den beiden Ergebnissen hier:
Das funktioniert ganz offensichtlich nicht, ich habe auch schon den ganzen Tag dahingehend gegoogelt. Habe auch hier und was gefunden, aber nichts hat funktioniert.
Könnt ihr mir weiterhelfen? Ich verzweifele noch...
Verfasst: Di 8. Mär 2016, 18:35
von Noch so einer
Wenn der rotierte Text in die Höhe von drei Zeilen (das ist die Angabe bei \multirow) passen soll, dann darf er nur diese Breite haben. Da er aber bei Dir breiter ist, müsste er umbrochen werden.
\rotatebox ist eine horizontale Box wie \mbox. Es gibt also darin weder Umbruch noch Trennung. Um in einer horizontalen Box Umbruch und Trennung zu ermöglichen, muss man eine vertikale Box wie \parbox darin verwenden.
\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{multirow,booktabs,graphicx}
\begin{document}
\begin{table}
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}lll@{}}
\toprule
\multirow{3}{*}{\rotatebox[origin=c]{90}{\parbox{3\normalbaselineskip}{\centering\hspace{0pt}vertikaler Text}}} & 1 & abc \\
& 2 & def \\
& 3 & ghi \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
Übrigens solltest Du immer ein
Minimalbeispiel angeben und nicht nur einen Code-Schnippsel. Dafür kannst Du Dir dann externe Links auf Abbildungen sparen, weil wir uns das dann einfach im Online-Editor anschauen können.
Verfasst: Di 8. Mär 2016, 19:30
von snake
Hi,
vielen, vielen Dank! Das funktioniert soweit, jedoch wäre es schön, wenn sich der vertikale Text an die Höhe der gesamten Zeile anpassen würde. Wenn in den Zellen daneben sich ein Zeilenumbruch ergibt, könnte der vertikale Text in diesem Fall ja sogar einen \normalbaselineskip mehr einnehmen. Denn bei einem Zeilenumbruch in den Zellen daneben ist der vertikale Text dann auch nicht mehr zentriert...
Sorry, das ist irgendwie nicht ganz einfach zu erklären. Mein letztes Bild, versprochen!
http://www.directupload.net/file/d/4287 ... lw_png.htm
Verfasst: Di 8. Mär 2016, 21:12
von Noch so einer
In dem Fall musst Du doch ohnehin das erste Argument von \multirow anpassen, damit es über genügend Zeilen geht. Ich kann Dir allenfalls ersparen, jedes Mal zwei Werte anpassen zu müssen:
\documentclass[12pt]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{multirow,booktabs,graphicx}
\makeatletter
% Ich verwende hier Wissen über die Implementierung von \multirow
% das sich mit jeder Version ändern könnte. Daher ist das nicht
% unbedingt eine ideale Implementierung.
\newcommand{\specialrotate}[1]{{%
\rotatebox[origin=c]{90}{\parbox{\@tempdima}{%
\centering\hspace{0pt}#1}}%
}}
\makeatother
\begin{document}
\begin{table}
\centering
\caption{My caption}
\label{my-label}
\begin{tabular}{@{}llp{2em}@{}}
\toprule
\multirow{8}{*}{\specialrotate{vertikaler Text}} & 1 & abc \\
& 2 & def def def def def def \\
& 3 & ghi \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
Und bitte, mach künftig ein
Minimalbeispiel, das das Problem zeigt, und nicht ein Bild davon. Ich habe keine Lust mehr, für Dich erst den Problemfall zu konstruieren, bevor ich die Lösung basteln kann. Das ist wirklich nicht meine Aufgabe! Ich habe auch keine Lust auf irgendwelche externen Links.
Verfasst: Di 8. Mär 2016, 22:57
von snake
Du hast natürlich recht mit dem Minimalbeispiel
Ich danke dir für deine Lösung! Aber da muss ich wohl immer von Hand nachzählen, wie viele rows durch etwaige Zeilenumbrüche zusätzlich entstehen und das bei \multirow zusätzlich draufschlagen...