PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelleninhalt zentrieren



angel
18-06-2008, 11:31
Hallo Leute,

Um den Text in den Spalten zu zentrieren, vertikal und horizontal habe ich diese neu gemacht. Problem ist nun der Tabellenkopf. Warum wird bei {|C{3cm}|c|} die RECHTE Spalte formatiert und nicht die linke, so wie es dasteht. Wenn ich {|c|C{3cm}|} schreibe ist gar nichts mehr zentriert und bei {|C{3cm|C{10cm}|} weiterhin nur die rechte. Warum weiß ich nicht. Ich will doch nur noch , dass auch „Symbol“ so hübsch dasteht wie „Verwendungszweck“

Hier der Quellcode und unten das passende Bild:


\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{table}[h]
\centering
\begin{tabular}{|C{3cm}|c|}

\hline
\rule{0pt}{1cm+1ex} \textbf{Symbol} & \textbf{Verwendungszweck} \\
\hline
\rule{0pt}{2cm+1ex} \includegraphics[height=2cm]{bilder/Ei1.JPG} & vor Ort, allgemein \\ \hline
\rule{0pt}{1cm+1ex} \includegraphics[height=1cm]{bilder/Ei2.JPG} & Prozessleitwarte \\ \hline
\rule{0pt}{1cm+1ex} \includegraphics[height=1cm]{bilder/Ei3.JPG} & örtlicher Leitstand \\ \hline
\rule{0pt}{1cm+1ex} \includegraphics[height=1cm]{bilder/Ei4.JPG} & vor Ort, realisiert mit einem Prozessleitsystem \\ \hline
\rule{0pt}{1cm+1ex} \includegraphics[height=1cm]{bilder/Ei5.JPG}& vor Ort, realisiert mit einem Prozessleitrechner\\ \hline
\end{tabular}

\caption{Pics}
\label{tab:Pics}
\end{table}

Schmitzo
18-06-2008, 16:55
Hallo,

kleiner Tipp, wenn du bestimmte Größen in Tabellen haben möchtest für Zellen. Setze diese doch einfach mit p{xcm} usw.

Damit das ganze zentriert nun wird, setze nochmal in die Zelle ein \parbox[c]{3cm}{Hier der Text}

Nun sollte es zentriert sein ;-)

Viele Grüße
Schmitzo

rais
18-06-2008, 22:17
Moin moin,


Um den Text in den Spalten zu zentrieren, vertikal und horizontal habe ich diese neu gemacht. Problem ist nun der Tabellenkopf. Warum wird bei {|C{3cm}|c|} die RECHTE Spalte formatiert und nicht die linke, so wie es dasteht. Wenn ich {|c|C{3cm}|} schreibe ist gar nichts mehr zentriert und bei {|C{3cm|C{10cm}|} weiterhin nur die rechte. Warum weiß ich nicht. Ich will doch nur noch , dass auch „Symbol“ so hübsch dasteht wie „Verwendungszweck“

vllt hilft es, wenn Du erstmal Deine \rule sichtbar machst ... ?

BTW: warum nicht \rule{0pt}{1ex}\par\textbf{Symbol}\par\rule{0pt}{1 ex} & ... ?

Aber schau Dich besser erstmal nach Dokumenten wie tabsatz oder mori um.;)

MfG

Sabrina.Dankers
19-06-2008, 08:57
Hi,

ich habe mir das ganze mal angeschaut. Und es liegt einfach nur an der \rule, die du vor Symbol eingefügt hast. Du musst sie einfach ein bisschen verschieben, weil sie halt auf der Grundlinie anfängt und sich nach oben ausdehnt. Wende sie also so an:

\rule[-5mm]{0pt}{1cm+1ex}

statt

\rule{0pt}{1cm+1ex}

und das dürfte passen.

angel
19-06-2008, 09:11
aha.. ja, funktionieren tut das schon mal, aber verstehen tu ich das trotzdem nicht.

wo befindet sich diese erwähnte grundlinie?? auf der unteren linie der tabellenzelle? oder an der schrift?

Und was genau bewirkt denn nun egtl. \newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} ??
Ich dachte das bewirkt diese zentrierung. und {|C{3cm}|c|} sagt mir doch {einstellung für erste spalte | einstellung für zweite spalte} oder nicht? demnach muss ja das erste neu zentriert sein und die zweite weiterhin normal c, aber in echt ist es ja nicht so...

könnte mir da jemand klarheit verschaffen?? hab grad nur nebel im kopf

Sabrina.Dankers
19-06-2008, 09:24
aha.. ja, funktionieren tut das schon mal, aber verstehen tu ich das trotzdem nicht.

wo befindet sich diese erwähnte grundlinie?? auf der unteren linie der tabellenzelle? oder an der schrift?

Und was genau bewirkt denn nun egtl. \newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} ??
Ich dachte das bewirkt diese zentrierung. und {|C{3cm}|c|} sagt mir doch {einstellung für erste spalte | einstellung für zweite spalte} oder nicht? demnach muss ja das erste neu zentriert sein und die zweite weiterhin normal c, aber in echt ist es ja nicht so...

könnte mir da jemand klarheit verschaffen?? hab grad nur nebel im kopf

Doch doch, das stimmt schon alles. Setz mal deine \rule in der ersten Zeile auf eine minimale Breite z.B. 1pt, und mach das gleiche für meine modifizierte, dann siehst du den Unterschied.

Die Zentrierung erfolgt ja anhand des Inhalts in der Zelle. Deine unsichtbar Linie fing vorher aber auf der Grundlinie an. Die Grundlinie ist die Unterkante vom Text ohne Unterlängen, also in deinem Wort Symbol die Unterkante aller Buchstaben außer dem y, denn das hat ja eine Unterlänge. In meinem modifierten Beispiel verschiebe ich die unsichtbar Linie auf der Grundlinie, so dass dein Wort zentriert zu dieser Linie ist. Denn die Zentrierung erfolgt anhand der Linie.

angel
19-06-2008, 10:22
ahh, gut, dass hab ich jetzt gerafft. wenn ich diese grundlinie nach oben oder unten verschiebe verschieb ich logischerweise auch den taxt. DANKE

Unklar ist weiterhin:

Und was genau bewirkt denn nun egtl. \newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} ??
Ich dachte das bewirkt diese zentrierung. und {|C{3cm}|c|} sagt mir doch {einstellung für erste spalte | einstellung für zweite spalte} oder nicht? demnach muss ja das erste neu zentriert sein und die zweite weiterhin normal c, aber in echt ist es ja nicht so...


wenn du mir das auch noch begreiflich machen könntest wär es ein absolutes highlight des tages

Sabrina.Dankers
19-06-2008, 10:50
[...] Und was genau bewirkt denn nun egtl. \newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}} ??
Ich dachte das bewirkt diese zentrierung. und {|C{3cm}|c|} sagt mir doch {einstellung für erste spalte | einstellung für zweite spalte} oder nicht? demnach muss ja das erste neu zentriert sein und die zweite weiterhin normal c, aber in echt ist es ja nicht so... [...]
Mit \newcolumntype erstellst du dir ja einen neuen Spaltentyp, der sowohl vertikal als auch horizontal zentrierte Spalten ergibt.

\arraybackslash bewirkt, dass der \\ nicht umdefiniert wird, sonst könnte es Probleme mit dem erstellen einer neuen Tabellenzeile geben. Ist daher eigentlich nur in der letzten Spalte ein Problem, und es sollte bei dir daher auch ohne diesen funktionieren.

m{} orientiert sich ja an den umliegenden Spalten, daher wird auch die mit c angegebene Spalte vertikal zentriert. Es ist aber dennoch einen ganz normale c-Spalte. Denn nicht diese Spalte wird vertikal zentriert, sondern eben die davorliegende im Bezug auf die c-Spalte. Würdest du p{} statt m{} verwenden, dann wäre dein c-Spalte nicht vertikal zentriert, weil sich eben die C-Spalte an der c-Spalte orientiert und nicht umgekehrt. Ist schwer zu erklären, deshalb mal ein kleines Beispiel:



\newcolumntype{C}[1]{>{\Centering\arraybackslash}m{#1}}
\begin{table}[h]
\centering
\begin{tabular}{|C{3cm}|c|}

\hline
\rule[-5mm]{0pt}{1cm+1ex} \textbf{Symbol} & \textbf{Verwendungszweck} \\
\hline
Hier steht eine Menge Text. Nur zur Demonstration. & vor Ort, allgemein \\ \hline
\end{tabular}

\caption{Pics}
\label{tab:Pics}
\end{table}

\newcolumntype{P}[1]{>{\Centering\arraybackslash}p{#1}}

\begin{table}[h]
\centering
\begin{tabular}{|P{3cm}|c|}

\hline
\rule[-5mm]{0pt}{1cm+1ex} \textbf{Symbol} & \textbf{Verwendungszweck} \\
\hline
Hier steht eine Menge Text. Nur zur Demonstration. & vor Ort, allgemein \\ \hline
\end{tabular}

\caption{Pics}
\label{tab:Pics}
\end{table}

\newcolumntype{B}[1]{>{\Centering\arraybackslash}b{#1}}

\begin{table}[h]
\centering
\begin{tabular}{|B{3cm}|c|}

\hline
\rule[-5mm]{0pt}{1cm+1ex} \textbf{Symbol} & \textbf{Verwendungszweck} \\
\hline
Hier steht eine Menge Text. Nur zur Demonstration. & vor Ort, allgemein \\ \hline
\end{tabular}

\caption{Pics}
\label{tab:Pics}
\end{table}

Ich habe hier absichtlich nicht mit Bildern gearbeitet, weil die noch mal einen Sonderfall bilden, weil die Grundlinie bei Bildern anders liegt, als bei Text.

voss
19-06-2008, 10:55
\arraybackslash bewirkt, dass der \\ nicht umdefiniert wird, sonst könnte es Probleme mit dem erstellen einer neuen Tabellenzeile geben. Ist daher eigentlich nur in der letzten Spalte ein Problem, und es sollte bei dir daher auch ohne diesen funktionieren.


du verwendest schon die bessere Variante \Centering aus ragged2e, dann kann man sich
das \arraybackslash ersparen

Herbert

Sabrina.Dankers
19-06-2008, 10:57
du verwendest schon die bessere Variante \Centering aus ragged2e, dann kann man sich
das \arraybackslash ersparen

Herbert

Stimmt, hab ich gar nicht drauf geachtet. Macht der Gewohnheit.

angel
19-06-2008, 11:10
Ich glaub, jetzt hab ichs gerafft. War ne ganz schöne Kopfnuss. Vielen vielen Dank für die Schreibarbeit und Geduld.