Seite 1 von 1

Textausrichtung in multirow: vertikal zentrieren in Zeile?

Verfasst: Mi 23. Jan 2019, 12:44
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

Verfasst: Mi 23. Jan 2019, 13:30
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}

Verfasst: Mi 23. Jan 2019, 13:31
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

Verfasst: Mi 23. Jan 2019, 13:39
von Daniel_Hai
Danke für die Vorschläge! Die 2 im optionalen multirow-Argument löst das Problem.

Grüße
Daniel