PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelleneinträge vertikal zentriert



zauser
10-01-2008, 12:55
Hallo liebes Forum,

obwohl ich zuerst - wie empfohlen - die FAQ lass und mich der Forensuche bediente, ist es mir bei folgendem Minimalbeispiel nicht gelungen die Einträge mit den Ziffern (5, 4, 3, 2, 1) vertikal zu zentrieren:

\documentclass{article}
\usepackage{array}
\usepackage{longtable}
\begin{document}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\setlongtables
\begin{longtable}{||c||p{9,5cm}||{c}|{c}|{c}|{c}|{ c}||}
\hline
\textbf{} & \textbf{Aussagen}&\multicolumn{5}{c||}{\textbf{Einschaetzung}}\\
\hline
\hline
1.\ & Ich rede mit den Lernenden auch ueber den Unterricht und ueber die Klasse. &5 &4 &3 &2 &1\\
\hline
\end{longtable}
\end{document}

In anderen Beiträgen wurde das Packet array verwendet sowie der Befehl \newcolumntype, weswegen ich mich dem anschloß. Dachte eigentlich, dass ein m statt p funktioniert. Ach ja, ich bin - was Latex betrifft - ein ziemlicher Neuling und für jede Hilfe von Euch sehr dankbar!

Beste Grüße,
zauser

rais
10-01-2008, 14:17
Hallo und Herzlich Willkommen :)
naja, Du definierst Dir zwar einen neuen Spaltentyp, benutzt aber weiterhin p{..} in der Tabelle -- da kannst Du es mit m{..} oder C{..} mal ausprobieren.
Falls Du formale Tabellen generieren willst, schau mal in tabsatz.pdf, mori.pdf und/oder die booktabs-Doku -- tabsatz und mori findest Du z. B. hier (http://www.mrunix.de/forums/showthread.php?t=53764) verlinkt, `texdoc booktabs' auf ner Konsole sollte die entsprechende Doku anwerfen.
MfG,

zauser
10-01-2008, 15:38
Hallo rais,

vielen Dank für Deine Hilfe!

Wenn ich aus p{9,5cm} ein m{9,5cm} mache, dann werden alle Spalten vertikal zentriert - an sich schon ein Erfolg! Es sollte allerdings die erste Spalte so wie vorher sein, also in dem Beispiel die Nummerierung 1. nicht zentriert, sondern oben platziert. Nur, wie geht das? Zudem ist es egal, ob ich den Befehl \newcolumntyp verwende oder nicht. Irgendetwas stimmt leider noch nicht.

Unklar ist mir auch, warum im "großen" Dokument (beim Minimalbeispiel funktioniert es) bei der Longtable-Umgebung bei \hline\hline eine fette Linie erscheint und bei der Tabular-Umgebung zwei dünne Linien mit Abstand. Ich hätte nämlich lieber zwei dünne Linien mit Abstand, benötige aber die Longtable-Umgebung.

Vielen Dank!!!

rais
10-01-2008, 20:45
Moin zauser,


Es sollte allerdings die erste Spalte so wie vorher sein, also in dem Beispiel die Nummerierung 1. nicht zentriert, sondern oben platziert.

sorry, das war mir nicht klar -- bisher war ja auch nur der Wunsch nach `Zentrieren' geäußert;-) OTOH: jetzt, wo Du das sagst...
vergleiche mal:


\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel,array,booktabs,longtable}
\begin{document}
\setlongtables
\begin{longtable}{@{}m{0.75em}<{\vfil}m{9,5cm}*{5}{c}@{}}
\toprule
\multicolumn{1}{c}{~}& \textbf{Aussagen}&\multicolumn{5}{@{}c@{}}{\textbf{Einschätzung}}\\
\midrule
1.\ & Ich rede mit den Lernenden auch über den Unterricht und über die Klasse. &5 &4 &3 &2 &1\\
\bottomrule
\end{longtable}
\end{document}


Unklar ist mir auch, warum im "großen" Dokument (beim Minimalbeispiel funktioniert es) bei der Longtable-Umgebung bei \hline\hline eine fette Linie erscheint und bei der Tabular-Umgebung zwei dünne Linien mit Abstand.
dazu sag ich nur: schau in die booktabs-Doku...

MfG,

zauser
11-01-2008, 14:45
Hallo rais,

noch einmal vielen Dank für Deine Bemühungen!

Die von Dir entworfene Tabelle ist bis auf einen Aspekt perfekt! Es fehlen die vertikalen Linien (OK, habe aber auch inzwischen gelesen, dass eine gute Tabelle keine vertikalen Linien enthält - möchte trotzdem welche :)). Beim Versuch diese hinzufügen war ich nur bedingt erfolgreich. Insbesondere an den Rändern links und rechts kleben die Einträge dann förmlich auf der Linie. Als Neuling fällt es mir schwer die von Dir verwendete Spaltendefinition nachzuvollziehen, um diese meinen Vorstellungen anpassen zu können.

Die Problematik mit einer dicken statt zwei dünnen Linien mit Abstand in der longtable-Umgebung habe ich insofern lösen können, indem ich statt \hline\hline die Befehle \midrule \addlinespace[0,5mm] \midrule verwende, was ich der booktabs Dokumentation entnehmen konnte - wie von Dir empfohlen :)

Nach langem hin- und herprobieren bin ich mit folgender Lösung - bis auf die Nummerierung, die oben mittig perfekt wäre - zu einem für mich akzeptablen Ergebnis gekommen:

\documentclass{article}
\usepackage{array,longtable,booktabs}
\begin{document}
\begin{longtable}{||c||m{9,5cm}||{c}|{c}|{c}|{c}|{ c}||}
\toprule
\textbf{} & \textbf{Aussagen}&\multicolumn{5}{c||}{\textbf{Einschaetzung}}\\
\midrule \addlinespace[0,5mm] \midrule
1.\ & Ich rede mit den Lernenden auch ueber den Unterricht und ueber die Klasse. &5 &4 &3 &2 &1\\
\bottomrule
\end{longtable}
\end{document}

Vielleicht fällt jemandem noch etwas dazu ein!

Schöne Grüße,
zauser

rais
11-01-2008, 18:23
ich kann meine Spaltendefinition ja mal auseinandernehmen;-)


\begin{longtable}{@{}m{0.75em}<{\vfil}m{9,5cm}*{5}{c}@{}}

die @{} links und rechts schneiden die Freiräume links und rechts ab, m{0.75em}<{\vfil} definiert eine m-Spalte mit 0,75 em Breite, dessen Inhalt nach oben geschoben wird, m{9,5cm} eine m-Spalte mit 9,5 cm Breite und *{5}{c} fünf c-Spalten.
Wenn die erste Spalte vertikal oben und horizontal zentriert ausgerichtet sein soll, dann versuche es einmal so:


\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}<{\vfil}}
-- doch wieder, nur ein wenig anders -- in der Präambel und dann z. B. C{0.75em} statt dem ersten c bei Dir -- bzw. statt dem m{0.75em}<{\vfil} bei obiger Definition.
Dann solltest Du auch


\multicolumn{1}{c}{~}
in die linke obere Zelle setzen, sonst wirkt sich der \vfil auch auf die erste Zeile aus.;)

Aber die vielen Linien...:eek::D
MfG,

zauser
13-01-2008, 11:23
Hallo rais,

Dank Deiner hervorragenden didaktischen Aufbereitung konnte ich auch die Funktionsweise Deiner Spaltendefinition erschließen!

Trotz mehrere Versuche gelang es mir nicht, die erste Spalte vertikal oben und horizontal zentriert zu gestalten. Soweit ich Deiner Beschreibung folgen konnte, sieht der Code bei mir so aus:

\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel,array,booktabs,longtable}
\begin{document}
\setlongtables
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}<{\vfil}}
\begin{longtable}{@{}C{0.75em}m{9,5cm}*{5}{c}@{}}
\toprule
\multicolumn{1}{c}{~}& \textbf{Aussagen}&\multicolumn{5}{@{}c@{}}{\textbf{Einschätzung}}\\
\midrule
1.\ & Ich rede mit den Lernenden auch über den Unterricht und über die Klasse. &5 &4 &3 &2 &1\\
\bottomrule
\end{longtable}
\end{document}

Also, der Befehl \newcolumntyp{...} habe ich neu aufgenommen und statt m{0.75em}<{\vfil} habe ich ein C{0.75em} gesetzt. Beim nächsten Schritt bin ich mir nicht sicher, ob ich den richtig verstanden habe, da ein \multicolumn{1}{c}{~} doch bereits in die linke obere Zelle gesetzt ist. Wenn ich statt 1.\ ein \multicolumn{1}{c}{1.} setze, verändern sich nur die Abstände der ersten Reihe, falls Du das gemeint haben solltest.

Tut mir leid, wenn ich ein bißchen auf dem Schlauch stehe :)

Beste Grüße,
zauser

rais
13-01-2008, 13:29
Moin zauser,


Trotz mehrere Versuche gelang es mir nicht, die erste Spalte vertikal oben und horizontal zentriert zu gestalten.

die C-Spalte wird schon horizontal zentriert, aber links davon schneidest Du den Rand ab (mein Fehler), rechts davon aber nicht. Etwas deutlicher vielleicht zum Vergleich:


\begin{longtable}{@{}C{3em}@{}m{9,5cm}*{5}{c}@{}}

Hinzu kommt noch


1.\ & Ich rede mit den Lernenden auch über den Unterricht und über die Klasse. &5 &4 &3 &2 &1\\
dadurch fügst Du ein Leerzeichen an dieser Stelle ein, das quasi mit zentriert werden soll.


Beim nächsten Schritt bin ich mir nicht sicher, ob ich den richtig verstanden habe, da ein \multicolumn{1}{c}{~} doch bereits in die linke obere Zelle gesetzt ist.
das bezog sich nur auf den zuvor von Dir geposteten Code, da stand nur \textbf{} in dieser Zelle.

MfG,

zauser
14-01-2008, 07:49
Hallo rais,

jetzt passt es! :D

Statt C{0,75em} erzielt ein C{3em} das erwünschte Ergebnis, also:

\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel,array,booktabs,longtable}
\begin{document}
\setlongtables
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}<{\vfil}}
\begin{longtable}{@{}C{3em}m{9,5cm}*{5}{c}@{}}
\toprule
\multicolumn{1}{c}{~}& \textbf{Aussagen}&\multicolumn{5}{@{}c@{}}{\textbf{Einschätzung}}\\
\midrule
1.\ & Ich rede mit den Lernenden auch über den Unterricht und über die Klasse. &5 &4 &3 &2 &1\\
\bottomrule
\end{longtable}
\end{document}

Alternativ kann auch das @{} weggelassen werden, um die linke Seite der rechten anzugleichen - ist natürlich Geschmackssache :)

Vielen lieben Dank für Deine Geduld!!!

Beste Grüße,
zauser