PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertikale Zentrierung in Tabellen



Mormegil
24-01-2017, 19:58
Hallo allerseits,

mein Plan war innerhalb der Zeilen der Tabelle eine vertikale Zentrierung zu bekommen.
Das Problemkind scheint meine erste Spalte zu sein, in der ich jeweils einen selbst gesetzten Zeilenumbruch habe, sobald ich diesen entferne und TeX innerhalb der Zelle selbst umbricht bekomm ich die vertikale Zentrierung für die ganze Zeile wie es sein sollte...
Da in der Liste allerdings immer nur das Element/Verbindung als Formel in der zweiten Zeile stehen soll ist das etwas unpraktisch.

Die Spalten im Minimalbeispiel sind so gewählt um zu Zeigen dass mir die hinteren Zellen an der unteren Zeile der Ersten Zelle ausgerichtet werden (auch für XXX,...), prinzipiell wäre mir eine allseits mittige Zentrierung in jeder Zelle sogar am liebsten

Die redefinition von X hat immerhin dazu geführt, dass die beiden hinteren Spalten ausgerichtet werden


\documentclass[12pt]{scrbook}
\usepackage{tabularx}
\usepackage{booktabs}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}
\begin{table}[htbp]
\begin{tabularx}{\textwidth}{cXX}
\toprule
Substanz & Reinheit & Hersteller \\
\midrule
Borpulver K\"ornung 1µm,\\
B & 99,90\% & Heraeus, Hanau (D) \\
Schwefel,\\
S & - & Thermo Fisher, Karlsruhe (D) \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

Bin für alle Ideen und Tipps dankbar, vielleicht hab ichs auch einfach zu kompliziert angepackt...

Gruß
Mormegil

rais
25-01-2017, 01:44
Herzlich Willkommen an Board :)

Beendet ein \\ nicht auch die Tabellenzeile? Versuch es mit Klammerung ( {bla\\blubb} ), \newline oder \par statt \\ innerhalb einer Tabellenzelle.

VG

Mormegil
25-01-2017, 14:08
Klammerung kommt TeX nicht so gut mit zurecht (error), \newline bzw. \par erzeugen keine Zeilenumbrüche...

Hab nun das Problem grundlegend umgangen, indem ich die zwei Zeilen in zwei Zellen geschrieben hab und die Zellen der hinteren Spalten mit multirow verbunden.

Nach ein wenig rumprobieren hab ich das ganze auch vernüftig auf meine Textbreite skaliert bekommen:


\documentclass[12pt]{scrbook}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabularx}{\textwidth}{cXX}
\toprule
\multicolumn{1}{c}{Substanz} & \multicolumn{1}{c}{Reinheit}& \multicolumn{1}{c}{Hersteller} \\
\midrule
Borpulver K\"ornung 1 µm, & \multicolumn{1}{c}{\multirow{2}[0]{*}{99,90\%}} & \multicolumn{1}{c}{\multirow{2}[0]{*}{Heraeus, Hanau (D)}} \\
\multicolumn{1}{c}{B} & \multicolumn{1}{c}{} & \multicolumn{1}{c}{} \\
\multicolumn{1}{c}{Schwefel,} & \multicolumn{1}{c}{\multirow{2}[0]{*}{-}} & \multicolumn{1}{c}{\multirow{2}[0]{*}{Thermo Fisher, Karlsruhe (D)}} \\
\multicolumn{1}{c}{S} & & \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

Danke für die Tipps, drüber schlafen und nochmal anders an die Sache rangehen war dann das richtige :)

Gruß
Mormegil

PS die \mutlicolumn Zentrierung den leeren Zellen braucht vermutlich kein Mensch, hat mir mein liebes Excel2LaTeX halt reingeschrieben

\Edit:
Da mir Excel2LaTeX für meine ganze Tabelle kein \multicolumn{1}{c}{} mehr zur Zentrierung der Zellen ausgespuckt hat bin ich auf den Trichter gekommen, dass die sinnvolle Variante eine entsprechende Spaltendefinition wäre ... :

c*2{>{\centering\arraybackslash}X}

u_fischer
25-01-2017, 16:35
Deine linke Spalte hat den Typ c. Da gibt es keinen Zeilenumbruch. Du kannst aber eine innere Tabelle verwenden:
\documentclass[12pt]{scrbook}
\usepackage{tabularx}
\usepackage{booktabs}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}
\begin{table}[htbp]
\begin{tabularx}{\textwidth}{cXX}
\toprule
Substanz & Reinheit & Hersteller \\
\midrule
\begin{tabular}{@{}c@{}}
Borpulver K\"ornung 1µm,\\
B
\end{tabular}
& 99,90\% & Heraeus, Hanau (D) \\
\begin{tabular}{@{}c@{}}
Schwefel,\\
S
\end{tabular} & - & Thermo Fisher, Karlsruhe (D) \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}