PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rotierte Spaltenüberschriften und Zeilenhöhe



thedragon
10-04-2007, 12:40
Hallo zusammen

ich möchte gerne die Spaltenüberschriften einer Tabelle rotiert haben, funktioniert auch. Leider wird die Spaltenhöhe nicht automatisch angepasst, so dass der rotierte Text über der Tabelle liegt.

Was geht da schief?



\begin{tabular}{|l|c|}
\hline
\begin{rotate}{-90}abcd \end{rotate} & \begin{rotate}{-90}abcdefg \end{rotate}\\
\hline\hline
abc & abc \\
\end{tabular}



Danke für Eure Hilfe

Gruß

countbela666
10-04-2007, 13:41
Hallo,

für gestürzte Spaltenköpfe solltest du dir eine eigene Spaltendefinition schaffen und dann in der Tabelle für die entsprechenden Zellen per multicolumn-Befehl das Format übersteuern:

\documentclass[
tablecaptionabove % korrekten Abstand der Tabellenüberschriften erzeugen
]{scrartcl}
\usepackage{
rotating, % für die turn-Umgebung
array, % zur Erzeugung neuer Spaltentypen
booktabs, % ästhetischeres Tabellenlayout
relsize % für \smaller-Befehl
}
\newcolumntype{R}[1]{% Spaltentyp für gestürzten Tabellenkopf
>{\begin{turn}{90}\begin{minipage}{#1}%
\smaller\raggedright\hspace{0pt}}l% \smaller: Schrift in Tabellenköpfen
<{\end{minipage}\end{turn}}% einen Grad kleiner setzen
}
\begin{document}
\begin{table}\centering
\caption{bla}
\begin{tabular}{@{}ll@{}}
\toprule
\multicolumn{1}{@{}R{2em}}{abcd} & % Höhenangabe der Zelle erforderlich
\multicolumn{1}{R{2em}@{}}{laber suelz} \\ % (ggf. mit \widthof-Befehl aus calc-Paket)
\midrule
a & b \\
c & d \\
\bottomrule
\end{tabular}
\end{table}
\end{document}Grüße
Marcel

pfeffersalami
28-06-2007, 14:31
Gute Sache das!

Kann mir dann auch noch einer sagen, wie ich die senkrecht stehenden Überschriften in der Zeile zentriert bekomme?
Die stehen momentan immer linksbündig, auch wenn ich in
\begin{tabular}{@{}ll@{}} die l's mit nem c's ersetze.

Und noch was:
In der ersten Spalte habe ich kleine Bilder, die ihre Beschreibung in der zweiten bekommen. Nun steht die Beschreibung aber unten in der jeweiligen Zeile. Wie bekomme ich den Text mittig zum Bild bzw. zur jeweiligen Zeile?


Und mit dem Verdacht, daß ich hier Schläge bekomme:
wofür steht das
@{}


Gruß
pfeffersalami

localghost
28-06-2007, 14:40
Das musst Du die von Marcel erstellte turn-Umgebung etwas abändern.

\newcolumntype{R}[1]{% Spaltentyp für gestürzten Tabellenkopf
>{\begin{turn}{90}\begin{minipage}{#1}%
\smaller\centering\hspace{0pt}}l% \smaller: Schrift in Tabellenköpfen
<{\end{minipage}\end{turn}}% einen Grad kleiner setzen
Damit sollte das schon erledigt sein.

countbela666
28-06-2007, 15:13
Das musst Du die von Marcel erstellte turn-Umgebung etwas abändern.

\newcolumntype{R}[1]{% Spaltentyp für gestürzten Tabellenkopf
>{\begin{turn}{90}\begin{minipage}{#1}%
\smaller\centering\hspace{0pt}}l% \smaller: Schrift in Tabellenköpfen
<{\end{minipage}\end{turn}}% einen Grad kleiner setzen
Damit sollte das schon erledigt sein.Damit wird der Inhalt des Spaltenkopfes vor dem Drehen zentriert. IMHO will der OP den Spaltenkopfinhalt jedoch nach dem Drehen zentrieren. Das ist komplizierter (siehe MB).

In der ersten Spalte habe ich kleine Bilder, die ihre Beschreibung in der zweiten bekommen. Nun steht die Beschreibung aber unten in der jeweiligen Zeile. Wie bekomme ich den Text mittig zum Bild bzw. zur jeweiligen Zeile?Nutze den Spaltentyp m{} (siehe MB).

\documentclass[
demo, % fürs Minimalbeispiel
tablecaptionabove
]{scrartcl}
\usepackage{
rotating,
array,
booktabs,
relsize,
graphicx,
calc % für \widthof
}
\newcolumntype{R}[2]{% zwei Parameter: #1 Höhe, #2 Breite
>{\begin{turn}{90}\begin{minipage}[][#2][c]{#1}%
\smaller\raggedright\hspace{0pt}}l%
<{\end{minipage}\end{turn}}%
}
\begin{document}
\begin{table}\centering
\caption{bla}
\begin{tabular}{@{}m{3cm}l@{}} % Spaltentyp m{Breite} für vert. Zentrierung
\toprule
\multicolumn{1}{@{}R{2em}{3cm}}{abcd} &
\multicolumn{1}{R{2em}{\widthof{rhabarber}}@{}}{la ber suelz} \\
\midrule
\includegraphics[width=3cm,height=2cm]{foo} & blablabla \\
\includegraphics[width=3cm,height=2cm]{foo} & rhabarber \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

Und mit dem Verdacht, daß ich hier Schläge bekomme: wofür steht das @{}Das @ setzt anstelle des üblichen Abstandes \tabcolsep den Inhalt seines Parameters (in diesem Fall nüscht ;)) zwischen Spaltentrenner (hier nicht vorhanden) und Spalteninhalt. Das folgende Beispiel sollte das ganz gut demonstrieren:

\documentclass[12pt,a5paper,pagesize]{scrartcl}
\usepackage{ragged2e,array,booktabs}
\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\RaggedLeft\arraybackslash}p{#1}}
\def\klotz{\rule{\tabcolsep}{1em}}
\def\tabelle{\toprule Anfang & Ende \\\bottomrule}
\begin{document}
\begin{tabular}{L{2cm}R{2cm}}
\tabelle
\end{tabular}
\par\medskip
\begin{tabular}{@{}L{2cm}R{2cm}@{}}
\tabelle
\end{tabular}
\par\medskip
\begin{tabular}{@{\klotz}L{2cm}R{2cm}@{\klotz}}
\tabelle
\end{tabular}
\end{document}Grüße
Marcel

pfeffersalami
29-06-2007, 14:38
Das Beispiel klappt danke, aber ich kann es nicht erweitern?!


\documentclass[
demo, % fürs Minimalbeispie
tablecaptionabove
]{scrartcl}
\usepackage{
rotating,
array,
booktabs,
relsize,
graphicx,
calc % für \widthof
}
\newcolumntype{R}[2]{% zwei Parameter: #1 Höhe, #2 Breite
>{\begin{turn}{90}\begin{minipage}[][#2][c]{#1}%
\smaller\raggedright\hspace{0pt}}l%
<{\end{minipage}\end{turn}}%
}
\begin{document}
\begin{table}\centering
\caption{bla}
\begin{tabular}{@{}m{3cm}l@{}} % Spaltentyp m{Breite} für vert. Zentrierung
\toprule
\multicolumn{1}{@{}R{2em}{3cm}}{abcd} &
\multicolumn{1}{@{}R{2em}{3cm}}{efgh} &
\multicolumn{1}{R{2em}{\widthof{rhabarber}}@{}}{la ber suelz} \\
\midrule
\includegraphics[width=3cm,height=2cm]{foo} & blablabla & schubidu \\
\includegraphics[width=3cm,height=2cm]{foo} & rhabarber \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

Die Sachen werden in eine neue Zeile gesetzt? Obwohl da ein & und kein \\ steht.

Und für was ist dies
{\widthof{rhabarber}} gut? Dies rahbaber wird garnicht angezeigt.

:confused::confused:nu bin ich total verwirrt:confused::confused:

Gruß
Ole

countbela666
29-06-2007, 14:44
Und für was ist dies \widthof{rhabarber} gut? Dies rahbaber wird garnicht angezeigt.Der Befehl \widthof{} gibt die Breite des als Parameter übergebenen Textes zurück, ohne diesen Text irgendwo auszugeben. In meinem Beispiel soll die Breite des Spaltenkopfes also genau der Breite des Wortes "rhabarber" entsprechen, um zu gewährleisten, dass der Spaltenkopf genauso breit ist wie die breiteste Zelle der Spalte.

nu bin ich total verwirrtIch auch. Willst du eine neue Zeile oder eine neue Spalte einfügen, falls letzteres: welchen Typs? Wenn ich davon ausgehe, dass es eine neue l-Spalte sein soll, muss diese der tabular-Umgebung natürlich noch bekannt gemacht werden. Außerdem musst du auf die korrekte Zuordnung der Spaltenkopfbreiten mittels \widthof-Parameter und Spalteninhalt achten:

\documentclass[
demo, % fürs Minimalbeispiel
tablecaptionabove
]{scrartcl}
\usepackage{
rotating,
array,
booktabs,
relsize,
graphicx,
calc % für \widthof
}
\newcolumntype{R}[2]{% zwei Parameter: #1 Höhe, #2 Breite
>{\begin{turn}{90}\begin{minipage}[][#2][c]{#1}%
\smaller\raggedright\hspace{0pt}}l%
<{\end{minipage}\end{turn}}%
}
\begin{document}
\begin{table}\centering
\caption{bla}
\begin{tabular}{@{}m{3cm}ll@{}} % Spaltentyp m{Breite} für vert. Zentrierung
\toprule
\multicolumn{1}{@{}R{2em}{3cm}}{abcd} &
\multicolumn{1}{R{2em}{\widthof{rhabarber}}}{efgh} &
\multicolumn{1}{R{2em}{\widthof{schubidu}}@{}}{lab er suelz} \\
\midrule
\includegraphics[width=3cm,height=2cm]{foo} & blablabla & schubidu\\
\includegraphics[width=3cm,height=2cm]{foo} & rhabarber \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

Grüße
Marcel

pfeffersalami
29-06-2007, 15:33
Danke Dir vielmals!

Hatte lediglich
\begin{tabular}{@{}m{3cm}ll@{}} denn da vergessen. Und schon ging garnichts.
Nu gehts aber!

Gruß
Ole