Problem mit Tabelle - "sideways Zellen" mit Zeilen

Tabellen und Grafiken erstellen und anordnen


Benutzeravatar
Maggie
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Mo 22. Dez 2008, 02:17

Problem mit Tabelle - "sideways Zellen" mit Zeilen

Beitrag von Maggie »

Hallo zusammen,

ich schreibe gerade meine Diplomarbeit mit LaTeX (MikTex und TeXniccenter) und schlage mich gerade mit meinen Tabellen rum. Leider habe ich auch in keinem Forum etwas zu meinem Problem gefunden. (ausser hier: S. 22 http://www.torsten-schuetze.de/tex/tabsatz-2004.pdf) Das ist für mich allerdings völlig unverständlich, da ich LaTeX-Laie bin. =(

Ich möchte gerne eine x-Spaltige Tabelle bauen, bei der die oberste Zeile um 90° rotiert wird und dann aber auch noch nur eine bestimmte Höhe hat (quasi Zeilenumbruch), da der Text in dieser Zeile zu lang ist um eine "schöne" Tabelle zu erzeugen.
Wie kann das gehen?
Ich hoffe mein Problem ist verständlich.

Hier kommen zwei Minimalbeispiele:
\documentclass[11pt,paper=a4,]{scrbook}            
\title{Minimalbeispiel}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{rotating}

\begin{document}
\begin{tabular}{rccccccccccccc}

           & irgendwas was leider viel zu lang ist &     irgendwas was leider viel zu lang ist & \multicolumn{ 2}{c}{Zu viel Information?} & \multicolumn{ 2}{c}{zu wenig Information?} & \multicolumn{ 2}{c}{redundante Information?} & \multicolumn{ 2}{c}{wird was erklärt, was längst bekannt ist?} & \multicolumn{ 3}{c}{wird war vorausgesetzt, was nicht bekannt ist?} \\
\hline
 1 &        145 & texttexttext & \multicolumn{ 2}{|c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{*} \\

 2 &        173 & texttexttext & \multicolumn{ 2}{|c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{o} \\

 3 &        187 & texttexttext  & \multicolumn{ 2}{|c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{*} \\

\end{tabular}  
\end{document} 
Bei diesem Beispiel habe ich noch nichts mit "sideways" gemacht. So kannst aber nicht bleiben, weil die Spalten viel zu breit sind um auf die Seite zu passen.

-----

Im nächsten Beispiel habe ich versucht das ganze mit multirow und "sideways" zu lösen. Dabei habe ich allerdings den Text aus der oberen Spalte immer doppelt, weil "sideways" mit \multicolumn zu kollidieren scheint.
\documentclass[11pt,paper=a4,]{scrbook}            
\title{Minimalbeispiel}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{rotating}

\begin{document}


\begin{table}[h]
\begin{center}
\begin{tabular}{rccccccccccccc}

           & \begin{sideways}irgendwas was leider viel zu lang ist \end{sideways} &  \begin{sideways}irgendwas was leider viel zu lang ist \end{sideways}    &  \begin{sideways}irgendwas was leider viel zu lang ist\end{sideways} &  \begin{sideways} irgendwas was leider viel zu lang ist?\end{sideways} & \begin{sideways}irgendwas was leider viel zu lang ist \end{sideways} &  \begin{sideways}irgendwas was leider viel zu lang ist? \end{sideways}& \begin{sideways}redundante \end{sideways} &  \begin{sideways}Information? \end{sideways}& \begin{sideways} irgendwas was leider viel zu lang ist \end{sideways} &  \begin{sideways}irgendwas was leider viel zu lang ist\end{sideways}& \begin{sideways} wird etwas voraus-\end{sideways} &  \begin{sideways}irgendwas was leider viel zu lang ist \end{sideways} &  \begin{sideways}bekannt ist? \end{sideways}\\
\hline

 1 &        145 & texttexttext & \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{*} \\

 2 &        173 & texttexttext & \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{o} \\

 3 &        187 & texttexttext  & \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &  \multicolumn{ 2}{c}{o} &               \multicolumn{ 3}{c}{*} \\

\hline
\end{tabular}  
\end{center}  
\end{table}
\end{document} 
Gibt es irgendwie eine elegante (oder auch unelegante, aber effektive) Lösung für mein Problem.

Ich hoffe, das war nicht zu mißverständlich und ich stell mich nicht zu dumm an - aber ich habe mittlerweile schon so einige Nachmittage im Netz verbracht und versucht das Problem selbst zu lösen, aber ich krieg es nicht hin.

So long!

Thomas
Forum-Anfänger
Forum-Anfänger
Beiträge: 32
Registriert: So 23. Nov 2008, 14:25

Beitrag von Thomas »

Hi,
ich hoffe Dein Problem richtig verstanden zu haben. Für das was ich verstanden habe, wäre nachfolgendes meine Lösung. (Eine verbesserte Variante findet sich noch weiter unten.)

\documentclass[11pt,paper=a4,]{scrbook}
\title{Minimalbeispiel}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{graphicx}

\begin{document}
\begin{tabular}{rccccccccccccc}

& \rotatebox{90}{\parbox{25mm}{irgendwas was leider viel zu lang ist}} & \rotatebox{90}{\parbox{25mm}{irgendwas was leider viel zu lang ist}} & \multicolumn{ 2}{c}{\rotatebox{90}{\parbox{25mm}{zu viel Information?}}} & \multicolumn{ 2}{c}{\rotatebox{90}{\parbox{25mm}{zu wenig Information?}}} & \multicolumn{ 2}{c}{\rotatebox{90}{\parbox{25mm}{redundante Information?}}} & \multicolumn{ 2}{c}{\rotatebox{90}{\parbox{25mm}{wird was erklärt, was längst bekannt ist?}}} & \multicolumn{ 3}{c}{\rotatebox{90}{\parbox{25mm}{wird war vorausgesetzt, was nicht bekannt ist?}}} \\ \hline

1 & 145 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{*} \\

2 & 173 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{o} \\

3 & 187 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{*} \\

\end{tabular}
\end{document} 

Ich habe praktisch je Spalte eine 90° gedrehte parbox von bestimmter Breite verwendet. Zum Drehen verwende ich \rotatebox aus dem graphicx-Paket.

Bei genauerer Betrachtung entsteht auf diese Weise im Tabellenkopf absolut unerwünschter Blocksatz. Also muss noch \raggedright dazwischen. Das wird mir selbst dann aber zu unübersichtlich und unhandlich, daher definiere ich die gestürzte parbox mit Breite und rechtsbündigem Text einmal als Befehl \sturz und wende dann nur noch das an. Meine Lösung lautet damit:
\documentclass[11pt,paper=a4,]{scrbook}
\title{Minimalbeispiel}
\usepackage[ngerman]{babel}
\usepackage[ansinew]{inputenc}
\usepackage{graphicx}

\newcommand{\sturz}[1]{\rotatebox{90}{\parbox{30mm}{\raggedright #1}}} 
% Befehlsdefinition für 90 Grad gedrehte parbox von 30mm Breite mit Inhalt als Argument -> \sturz{inhalt}

\begin{document}
\begin{tabular}{rccccccccccccc}

& \sturz{irgendwas was leider viel zu lang ist} & \sturz{irgendwas was leider viel zu lang ist} & \multicolumn{2}{c}{\sturz{zu viel Information?}} & \multicolumn{2}{c}{\sturz{zu wenig Information?}} & \multicolumn{2}{c}{\sturz{redundante Information?}} & \multicolumn{2}{c}{\sturz{wird was erklärt, was längst bekannt ist?}} & \multicolumn{3}{c}{\sturz{wird was vorausgesetzt, was nicht bekannt ist?}} \\ \hline

1 & 145 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{*} \\

2 & 173 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{o} \\

3 & 187 & texttexttext & \multicolumn{ 2}{|c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 2}{c}{o} & \multicolumn{ 3}{c}{*} \\

\end{tabular}
\end{document}
.


Ich hoffe, das ist etwa das, was Du wolltest.

Gruß und Mahlzeit

Thomas
Zuletzt geändert von Thomas am Fr 2. Jan 2009, 15:15, insgesamt 1-mal geändert.

Benutzeravatar
Maggie
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Mo 22. Dez 2008, 02:17

Beitrag von Maggie »

Hey Thomas,

vielen vielen Dank!

Genau das war die Lösung die mir geholfen hat. Ich habe es noch mit "\raggedright" kombiniert und jetzt ist es genauso wie ich es haben möchte.

Merci und schöne Feiertage!


P.S.: Die Verbesserung ist noch viel besser =)

Antworten