Textausrichtung in multirow: vertikal zentrieren in Zeile?

Tabellen und Grafiken erstellen und anordnen


Daniel_Hai
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 30. Nov 2018, 20:09

Textausrichtung in multirow: vertikal zentrieren in Zeile?

Beitrag von Daniel_Hai »

Hallo liebes Forum,

ich habe in meinem Dokument zwei Tabellen. Das Problem ist, dass der 'Testtext 1' nicht vertikal zentriert in der Zeile ist (lustigerweise in Tabelle 1 zu hoch und in Tabelle 2 zu niedrig). Die Spaltenbreiten habe ich bei der Vereinfachung der Tabelle so belassen, also bitte nicht darüber wundern. Die Tabelle wurde ursprünglich mit dem Excel2Latex-Plugin erstellt, aber das sollte ja eigentlich kein Problem sein? Oder habe ich da was übersehen? Nun ja, falls jemand eine Idee hat, wieso die Formatierung in beiden Fällen anders ist, und wie man im Idealfall den 'Testtext 1' vertikal zentrieren könnte würde ich mich sehr freuen.
\documentclass{scrartcl}

\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}

\newcolumntype{C}{>{\Centering}X}

\begin{document}

\begin{tabularx}{0.85\textwidth}{XCCCCC}
			\toprule
			\multicolumn{1}{l}{\multirow{2}[0]{*}{\textbf{Testtext 1}}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
			\cmidrule[0.5pt](lr{.75em}){2-6} 
			& \multicolumn{1}{c}{\textbf{A}} & \multicolumn{1}{c}{\textbf{B}} & \multicolumn{1}{c}{\textbf{C}} & \multicolumn{1}{c}{\textbf{D}} & \multicolumn{1}{c}{\textbf{E}} \\
			\midrule
			1 & a & b & c & d & e \\
			\bottomrule
\end{tabularx}

\vspace{2cm}

\begin{tabularx}{0.95\textwidth}{Xccccc}
	\toprule
	\multirow{2}[4]{*}{\textbf{Testtext 1}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
	\cmidrule[0.5pt](lr{.5em}){2-6}          & \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} & \textbf{E} \\
	\midrule
	1 & a & b & c & d & e \\
	\bottomrule
\end{tabularx}

\end{document}
Danke!
Daniel

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Hallo.

Die Abweichung kommt aufgrund der Linien aus booktabs (die mehr vertikalen Platz benötigen) zustande sowie den unterschiedlichen Parametern, die du im optionalen Argument bei \multirow{}[<bigstruts>]{}{} angegeben hast.

Siehe dazu auch: https://tex.stackexchange.com/a/156222 bzw. die [d]multirow[/d]-Doku (s. Link).

Die Wahl 2 scheint die Texte genau zu positionieren:
\documentclass{scrartcl}

\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}

\newcolumntype{C}{>{\Centering}X}

\begin{document}

\begin{tabularx}{0.85\textwidth}{XCCCCC}
         \toprule
         \multicolumn{1}{l}{\multirow{2}[2]{*}{\textbf{Testtext 1}}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
         \cmidrule[0.5pt](lr{.75em}){2-6} 
         & \multicolumn{1}{c}{\textbf{A}} & \multicolumn{1}{c}{\textbf{B}} & \multicolumn{1}{c}{\textbf{C}} & \multicolumn{1}{c}{\textbf{D}} & \multicolumn{1}{c}{\textbf{E}} \\
         \midrule
         1 & a & b & c & d & e \\
         \bottomrule
\end{tabularx}

\vspace{2cm}

\begin{tabularx}{0.95\textwidth}{Xccccc}
   \toprule
   \multirow{2}[2]{*}{\textbf{Testtext 1}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
   \cmidrule[0.5pt](lr{.5em}){2-6}          & \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} & \textbf{E} \\
   \midrule
   1 & a & b & c & d & e \\
   \bottomrule
\end{tabularx}
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Gast

Beitrag von Gast »

multirow funktioniert leider bei Tabellen mit Extraabständen oder Linien aus booktabs oder teilweise auch bei p-Spalten (und davon abgeleiteten Spalten) nicht wirklich gut. Man muss dann die Höhe manuell anpassen, indem man das Argument für die Zeilenzahl anpasst, also beispielsweise:
\documentclass{scrartcl}

\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}

\newcolumntype{C}{>{\Centering}X}

\begin{document}

\begin{tabularx}{0.85\textwidth}{XCCCCC}
         \toprule
         \multicolumn{1}{l}{\multirow{2.2}[0]{*}{\textbf{Testtext 1}}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
         \cmidrule[0.5pt](lr{.75em}){2-6} 
         & \multicolumn{1}{c}{\textbf{A}} & \multicolumn{1}{c}{\textbf{B}} & \multicolumn{1}{c}{\textbf{C}} & \multicolumn{1}{c}{\textbf{D}} & \multicolumn{1}{c}{\textbf{E}} \\
         \midrule
         1 & a & b & c & d & e \\
         \bottomrule
\end{tabularx}

\vspace{2cm}

\begin{tabularx}{0.95\textwidth}{Xccccc}
   \toprule
   \multirow{1.5}[4]{*}{\textbf{Testtext 1}} & \multicolumn{5}{c}{\textbf{Testtext 2}} \\
   \cmidrule[0.5pt](lr{.5em}){2-6}          & \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} & \textbf{E} \\
   \midrule
   1 & a & b & c & d & e \\
   \bottomrule
\end{tabularx}

\end{document}
verwendet.

Oft kann man übrigens die \cmidrule-Anweisungen auch einfach weglassen, wenn ohnehin klar ist, worauf sich der Spalten überspannende Text bezieht

Daniel_Hai
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Fr 30. Nov 2018, 20:09

Beitrag von Daniel_Hai »

Danke für die Vorschläge! Die 2 im optionalen multirow-Argument löst das Problem.

Grüße
Daniel

Antworten