我无法指定多行内容的垂直位置。以下内容编译正常:
\documentclass{standalone}
\usepackage{booktabs,multirow}
\begin{document}
\begin{tabular}{p{3cm}ccc}
\toprule
\multirow{2}{3cm}{Cat cat cat cat cat cat cat}
&\multicolumn{3}{c}{Food}\\
\cmidrule{2-4}
& A&B&C\\
\midrule
D & 123 & 456 & 789\\\addlinespace
E & 123 & 456 & 789\\\addlinespace
F & 123 & 456 & 789\\
\bottomrule
\end{tabular}
\end{document}
但是当我添加[b]
到多行时它就变得混乱了:
\documentclass{standalone}
\usepackage{booktabs,multirow}
\begin{document}
\begin{tabular}{p{3cm}ccc}
\toprule
\multirow[b]{2}{3cm}{Cat cat cat cat cat cat cat}
&\multicolumn{3}{c}{Food}\\
\cmidrule{2-4}
& A&B&C\\
\midrule
D & 123 & 456 & 789\\\addlinespace
E & 123 & 456 & 789\\\addlinespace
F & 123 & 456 & 789\\
\bottomrule
\end{tabular}
\end{document}
根据多行文档语法应该没问题...
答案1
使用规则booktabs
添加一些不能自动补偿的垂直空间,multirow
对于类似情况multirow
可以手动调整内容位置:
\documentclass[margin=3mm]{standalone}
\usepackage{booktabs,multirow}
\begin{document}
\begin{tabular}{p{3cm}ccc}
\toprule
\multirow{2}{=}[-0.5ex]{Cat cat cat cat cat cat cat}% [-0.tex] is manual adjusting of posititon
& \multicolumn{3}{c}{Food} \\
\cmidrule{2-4}
& A & B & C \\
\midrule
D & 123 & 456 & 789 \\\addlinespace
E & 123 & 456 & 789 \\\addlinespace
F & 123 & 456 & 789 \\
\bottomrule
\end{tabular}
\end{document}
答案2
问题出在 周围的垂直填充\cmidrule
。您必须对此进行更正。
我建议另一种解决方案,以防您真的不需要p
列类型;使用该包,您可以在标准单元格内换行。我编写了一个代码,它给出了与 手动换行makecell
相同的结果:\multirowcell
\documentclass[border = 3pt]{standalone}
\usepackage{booktabs,multirow, makecell}
\begin{document}
\begin{tabular}{p{3cm}ccc}
\toprule
\multirow[b]{2}{3cm}[-\dimexpr\aboverulesep + \belowrulesep + \cmidrulewidth]{Cat cat cat cat cat cat cat}
& \multicolumn{3}{c}{Food} \\
\cmidrule{2-4}%
& A & B & C \\
\midrule
D & 123 & 456 & 789 \\\addlinespace
E & 123 & 456 & 789 \\\addlinespace
F & 123 & 456 & 789 \\
\bottomrule
\end{tabular}
\qquad\renewcommand\cellalign{bl}
\begin{tabular}{lccc}
\toprule\
\ & \multicolumn{3}{c}{Food} \\
\cmidrule{2-4}%
\multirowcell{-2}{Cat cat cat cat \\ cat cat cat} & A&B&C\\
\midrule
D & 123 & 456 & 789 \\\addlinespace
E & 123 & 456 & 789 \\\addlinespace
F & 123 & 456 & 789 \\
\bottomrule
\end{tabular}
\end{document}