PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle: Text in oberster Zeile gedreht



misterjan
23-03-2011, 15:33
Hallo,
ich möchte eine Tabelle erstellen, bei der der Text in der oberen Zeile nicht von links nach rechts sondern von unten nach oben verläuft. Der Text soll also um 90° gedreht werden. Ein schematische Darstellung sehr ihr hier:
4445

Ich habe schon viel im Internet gesucht, aber leider nicht gefunden, wie ich das mit Latex realisieren kann. So ungewöhnlich ist eine solche Tabellen-Form doch gar nicht?! Weiß das jemand von euch?

Xenara
23-03-2011, 15:54
Du kannst die rotatebox aus dem Paket graphicx verwenden:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}


\begin{document}

\begin{tabular}{cccc}
\toprule
& \rotatebox{90}{Text} & \rotatebox{90}{Überschrift} & \rotatebox{90}{Zelle}\\
\cmidrule(lr){2-4}
Beschriftung & 87.3453 & 54.2 & 234\\
Zeile & Sinnloses & zum Füllen & ---\\
\bottomrule
\end{tabular}

\end{document}

Sonst geht wohl auch rotating, siehe Tabsatz.pdf (http://mirror.switch.ch/ftp/mirror/tex/info/german/tabsatz/tabsatz.pdf)

Kathrin_B
23-03-2011, 17:29
So habe ich es bei mir auch gemacht. Allerdings würde ich den entsprechenden Text (bei langen Überschriften) noch in eine parbox packen, da er ansonsten nicht umgebrochen wird:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}


\begin{document}

\begin{tabular}{cccc}
\toprule
& \rotatebox{90}{etwas längerer Text ohne Zeilenumbruch} & \rotatebox{90}{\parbox{4cm}{etwas längerer Text, der nun auch einen Zeilenumbruch enthält}} & \rotatebox{90}{Zelle}\\
\cmidrule(lr){2-4}
Beschriftung & 87.3453 & 54.2 & 234\\
Zeile & Sinnloses & zum Füllen & ---\\
\bottomrule
\end{tabular}

\end{document}

misterjan
23-03-2011, 18:27
Vielen Dank für eure Antworten. Das hat mir sehr weiter geholfen.

misterjan
23-03-2011, 20:52
Ich habe doch noch ein Problem. Schaut euch bitte folgende Tabelle an:
4446

Wie bekomme ich es hin, dass die beiden Spalten, die rechts oben mit "inhärente 3D-Darstellung" überschrieben sind, gleich breit sind?

Hier ist der Latex-Code mit dem ich die Tabelle realisiert habe:


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{pifont}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}

\newcommand{\dd}{3D\xspace}
\newcommand{\zd}{2D\xspace}


\begin{document}

\begin{table}
\centering
\footnotesize
\begin{tabular}{@{}rcccccc@{}}
\toprule
\multicolumn{1}{c}{\bf\dd-Sprache} & \multicolumn{6}{c}{\bf Art der Klassifikation} \\
\cmidrule(r){1-1} \cmidrule(r){2-7}
\multicolumn{5}{c}{} & \multicolumn{2}{c}{inhärente \dd-Darstellung} \\
\cmidrule(l){6-7}
& \rotatebox{90}{abstrakte Form} & \rotatebox{90}{aus realer Welt} & \rotatebox{90}{erweiterte \zd-Dar.} & \rotatebox{90}{adaptierte \zd-Dar.} & \rotatebox{90}{SK inhärent} & \rotatebox{90}{Anordnung inhärent \dd} \\
\midrule
Cube & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \\
\midrule
SAM & \ding{51} & \ding{51} & \ding{55} & \ding{51} & \ding{51} & \ding{55} \\
\midrule
3D-PP & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \\
\midrule
Lingua Graphica & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \\
\midrule
AgentCubes & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \\
\midrule
LEGO & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \\
\midrule
Molekülmodelle & \ding{51} & \ding{55} & \ding{55} & \ding{55} & \ding{55} & \ding{51} \\
\midrule
\dd-Zustandsdiagramme & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \\
\bottomrule
\end{tabular}
\normalsize
\caption{Klassifikation von \dd-Sprachen.}
\label{tbl:klassifikation3dSprachen}
\end{table}
\end{document}

Kathrin_B
23-03-2011, 21:31
Hallo,

eine Möglichkeit wäre eine tabularx anstelle von tabular, bei der du die letzten beiden Spalten als X-Spalten mit gleicher Breite definierst. Hier musst du dann ein wenig mit der Gesamtbreite der Tabelle (hier .7\linewidth) experimentieren, damit es gut passt. Falls du sowas öfter brauchst, kannst du solche Spalten auch mit \newcolumntype für einen einfacheren Aufruf definieren wie ich es im Beispiel gemacht habe (Y bekommt noch als Argument die Breite mitgegeben). Wichtig: alle Breiten der X-Spalten zusammen müssen die Anzahl der X-Spalten ergeben, hier im Beispiel also 2.


\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{pifont}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{tabularx}

\newcommand{\dd}{3D\xspace}
\newcommand{\zd}{2D\xspace}

\begin{document}

\newcolumntype{C}{>{\centering\hsize=1\hsize\arraybackslash}X} % für Spalten, die genau gleich breit sein sollen

\newcolumntype{Y}[1]{>{\centering\hsize=#1\hsize\arraybackslash}X} % für Spalten, die auch unterschiedlich breit sein können

\begin{table}
\centering
\footnotesize
\begin{tabularx}{.7\linewidth}{@{}rccccCY{1}@{}}
\toprule
\multicolumn{1}{c}{\bf\dd-Sprache} & \multicolumn{6}{c}{\bf Art der Klassifikation} \\
\cmidrule(r){1-1} \cmidrule(r){2-7}
\multicolumn{5}{c}{} & \multicolumn{2}{c}{inhärente \dd-Darstellung} \\
\cmidrule(l){6-7}
& \rotatebox{90}{abstrakte Form} & \rotatebox{90}{aus realer Welt} & \rotatebox{90}{erweiterte \zd-Dar.} & \rotatebox{90}{adaptierte \zd-Dar.} & \rotatebox{90}{SK inhärent} & \rotatebox{90}{Anordnung inhärent \dd} \\
\midrule
Cube & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \\
\midrule
SAM & \ding{51} & \ding{51} & \ding{55} & \ding{51} & \ding{51} & \ding{55} \\
\midrule
3D-PP & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \\
\midrule
Lingua Graphica & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \\
\midrule
AgentCubes & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \\
\midrule
LEGO & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \\
\midrule
Molekülmodelle & \ding{51} & \ding{55} & \ding{55} & \ding{55} & \ding{55} & \ding{51} \\
\midrule
\dd-Zustandsdiagramme & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \\
\bottomrule
\end{tabularx}
\normalsize
\caption{Klassifikation von \dd-Sprachen.}
\label{tbl:klassifikation3dSprachen}
\end{table}
\end{document}

Schweinebacke
24-03-2011, 07:33
eine Möglichkeit wäre eine tabularx anstelle von tabular, bei der du die letzten beiden Spalten als X-Spalten mit gleicher Breite definierst. Hier musst du dann ein wenig mit der Gesamtbreite der Tabelle (hier .7\linewidth) experimentieren, damit es gut passt.
Wenn man mit der Breite ohnehin experimentieren muss, kann man auch gleich tabular mit zwei p-Spalten am Ende verwenden. p-Spalten sind in jeder guten LaTeX-Einführung erklärt.

Xenara
24-03-2011, 08:29
Noch eine Anmerkung zu Katrins_Bs MB:
Für Fettdruck sollte man nicht \bf verwenden, sondern entweder \bfseries oder \textbf{...}. Im LaTeX-Sündenregister l2tabu.pdf ist der Hintergrund erklärt.

misterjan
24-03-2011, 10:44
Vielen Dank für die hilfreichen Kommentare! Ich habe mich jetzt doch dafür entschieden es mit den p-Spalten zu lösen. Dies hatte ich bereits gestern Abend versucht, doch ich hatte es wegen zig Fehlermeldungen aufgegeben: Ich Trottel hatte vergessen \\ durch \tabularnewline zu ersetzen :(
Jetzt habe ich noch eine kleine Frage: Warum sind die mit cmidrule erstellten Linien nicht ganz durchgehend (was genau ich meine, seht ihr in dieser Abbildung: 4447)?

Mein aktueller Code ist der Folgende:



\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}

\usepackage{pifont}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}

\newcommand{\dd}{3D\xspace}
\newcommand{\zd}{2D\xspace}

\begin{document}

\begin{table}
\centering
\footnotesize
\begin{tabular}{@{}rcccc|>{\centering}p{1.6cm}>{\centering}p{1.6cm}@{}}
\toprule
\multicolumn{1}{c}{\textbf{\dd-Sprache}} & \multicolumn{6}{c}{\textbf{Art der Klassifikation}} \tabularnewline
\cmidrule(r){1-1} \cmidrule(r){2-7}
\multicolumn{5}{c}{} & \multicolumn{2}{c}{inhärente \dd-Darstellung} \tabularnewline
\cmidrule(l){6-7}
& \rotatebox{90}{abstrakte Form} & \rotatebox{90}{aus realer Welt} & \rotatebox{90}{erweiterte \zd-Dar.} & \rotatebox{90}{adaptierte \zd-Dar.} & \rotatebox{90}{SK inhärent} & \rotatebox{90}{Anordnung inhärent \dd} \tabularnewline
\midrule
Cube & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \tabularnewline
\midrule
SAM & \ding{51} & \ding{51} & \ding{55} & \ding{51} & \ding{51} & \ding{55} \tabularnewline
\midrule
3D-PP & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \tabularnewline
\midrule
Lingua Graphica & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \tabularnewline
\midrule
AgentCubes & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \tabularnewline
\midrule
LEGO & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \tabularnewline
\midrule
Molekülmodelle & \ding{51} & \ding{55} & \ding{55} & \ding{55} & \ding{55} & \ding{51} \tabularnewline
\midrule
\dd-Zustandsdiagramme & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \tabularnewline
\bottomrule
\end{tabular}
\normalsize
\caption{Klassifikation von \dd-Sprachen.}
\label{tbl:klassifikation3dSprachen}
\end{table}
\end{document}

Xenara
24-03-2011, 11:22
Vertikale Linien in Tabellen sind "böse", daher werden sie vom Paket booktabs (das midrule, toprule, bottomrule, cmidrule zur Verfügung stellt) nicht unterstützt.
Wenn du senkrechte Striche verwenden willst, musst du für die horizontalen Linien das normale \hline (bzw. \cline) verwenden.

Neben den Linienarten kümmert sich booktabs auch um etwas schönere Abstände, das fällt mit \hline dann natürlich weg.

misterjan
24-03-2011, 11:36
Die eine vertikale Linie hatte ich nur zur Veranschaulichung eingezeichnet, die zeigen sollte, dass die horizontale Linie nicht direkt am Spaltenanfang beginnt. Ich konnte das Problem aber selber lösen: Und zwar mit dem Parameter in runden Klammern von \cmidrule (z.B.: \cmidrule(l){2-7}), mit dem man links oder rechts bestimmt. Jetzt ist alles so, wie ich es mir vorstelle.

Xenara
24-03-2011, 11:42
Da hatte ich dich falsch verstanden.
Ja, die Parameter in den runden Klammern schneiden rechts/links etwas von der Linie ab, steht auch entsprechend in der booktabs-Doku.
Das ist vor allem dann sinnvoll, wenn man mehrere kurze Linien nebeneinander hat, da die sonst nicht getrennt sind. In deinem Fall ist das aber natürlich nicht gewünscht.

misterjan
01-04-2011, 19:18
Hallo,
ich habe doch noch ein kleines Problem mit der Tabelle. Eigentlich sollten die horizontalen Linien durch den @{}-Befehl mit dem dem weitesten linken bzw. rechten Buchstaben enden. Dies ist aber bei meiner Tabelle leider nicht der Fall: 4464

Der Code für die Tabelle ist hier:



\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}

\usepackage{pifont}

\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{booktabs}

\newcommand{\dd}{3D\xspace}
\newcommand{\zd}{2D\xspace}

\begin{document}

\begin{tabular}{@{}rcccc>{\centering}p{1.6cm}>{\centering}p{1.6cm}@{}}
\toprule
\multicolumn{1}{c}{\textbf{\dd-Sprache}} & \multicolumn{6}{c}{\textbf{Art der Klassifikation}} \tabularnewline
\cmidrule(r){1-1} \cmidrule(lr){2-7}
\multicolumn{5}{c}{} & \multicolumn{2}{c}{inhärente \dd-Darstellung} \tabularnewline
\cmidrule(lr){6-7}
& \rotatebox{90}{\parbox{3cm}{Objekte mit abstrakter Form}} & \rotatebox{90}{\parbox{3cm}{Objekte aus der realen Welt}} & \rotatebox{90}{\parbox{3cm}{erweiterte \zd-Dar\-stellung}} & \rotatebox{90}{\parbox{3cm}{adaptierte \zd-Dar\-stellung}} & \rotatebox{90}{\parbox{3cm}{Sprachkonstrukte inhärent \dd}} & \rotatebox{90}{\parbox{3cm}{Beziehung zwischen Sprachkonstrukten inhärent \dd}} \tabularnewline
\midrule
Cube & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \tabularnewline
\midrule
SAM & \ding{51} & \ding{51} & \ding{55} & \ding{51} & \ding{51} & \ding{55} \tabularnewline
\midrule
3D-PP & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} & \ding{55} \tabularnewline
\midrule
Lingua Graphica & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \tabularnewline
\midrule
AgentCubes & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \tabularnewline
\midrule
LEGO & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{51} & \ding{55} \tabularnewline
\midrule
Molekülmodelle & \ding{51} & \ding{55} & \ding{55} & \ding{55} & \ding{55} & \ding{51} \tabularnewline
\midrule
\dd-Zustandsdiagramme & \ding{51} & \ding{55} & \ding{51} & \ding{55} & \ding{55} & \ding{55} \tabularnewline
\bottomrule
\end{tabular}
\end{document}


Wäre schön, wenn mir nochmal jemand auf die Sprünge helfen könnte.

rais
03-04-2011, 16:56
Moin moin,

Eigentlich sollten die horizontalen Linien durch den @{}-Befehl mit dem dem weitesten linken bzw. rechten Buchstaben enden. Dies ist aber bei meiner Tabelle leider nicht der Fall
setze mal bei zumindest allen \multicolumn-Befehlen, die die letzte Spalte mit umschließen sollen, nicht nur {c}, sondern {c@{}} als Spaltendeklaration.
Ggf. kannst Du Dir so auch die `r' in den umliegenden \cmidrule-Befehlen sparen.;)

MfG

misterjan
03-04-2011, 17:05
Hallo Rainer,
vielen Dank für die Hilfe. Alles genau so wie du sagst. Jetzt passt es.