我在处理表格中的多行时遇到了问题,我无法弄清楚如何使垂直行居中以及如何为与其相关的所有单元格着色。
我正在尝试创建这个表:
这是我用来创建上表的代码:
\usepackage{adjustbox}
\usepackage{multirow}
\usepackage[table, x11names]{xcolor}
\usepackage{array}
\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\begin{table}
\caption{Just a nice table}
\begin{center}
\renewcommand{\arraystretch}{5.5}
\begin{tabular}{|c|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|}
\hline
\multicolumn{2}{|M{2.0cm}|}{name A} & name B & name C & name D & name E & name F\\
\hline
\multirow{2}{*}{\parbox[t]{2mm}{\rotatebox[origin=c]{90}{Classification A1}}} & B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\hline
\multirow{2}{*}{\parbox[t]{2mm}{\rotatebox[origin=c]{90}{Classification A2}}}\cellcolor{blue!25} & B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\hline
\end{tabular}
\end{center}
\label{tab:multicol}
\end{table}
我可能搞错了\arraystretch
居中问题,但我需要使用它,因为“分类”名称会超出表格范围。还有其他方法可以处理吗?
颜色问题我不知道是否有一个函数可以处理多行而不覆盖书写部分。
我使用多行时的另一个问题是,彩色行之间会出现白色或“幽灵”行。如下所示:
任何帮助都将非常受欢迎。
答案1
- 第一个
\multirow
应该覆盖 3 行,而不是 2 行。 - 您必须对第二个
\multirow covers. But then you should put the
\multirowin the last row with a negative count to prevent the color overwriting the text (see the
multirow` 文档中的两个单元格进行着色)。 - 您可能还会看看
tabular
对于复杂表格来说功能更强大的包(尽管我不会将其归类为复杂包)。
\documentclass{article}
\usepackage{adjustbox}
\usepackage{multirow}
\usepackage[table, x11names]{xcolor}
\usepackage{array}
\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\begin{document}
\begin{table}
\caption{Just a nice table}
\begin{center}
\renewcommand{\arraystretch}{5.5}
\begin{tabular}{|c|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|}
\hline
\multicolumn{2}{|M{2.0cm}|}{name A} & name B & name C & name D & name E & name F\\
\hline
\multirow{3}{*}{\parbox[t]{2mm}{\rotatebox[origin=c]{90}{Classification A1}}} & B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\hline
\cellcolor{blue!25} & B & C & D & E & F & G\\
\cline{2-7}
\multirow{-2}{*}{\parbox[t]{2mm}{\rotatebox[origin=c]{90}{Classification A2}}}\cellcolor{blue!25}& B & C & D & E & F & G\\
\hline
\end{tabular}
\end{center}
\label{tab:multicol}
\end{table}
\end{document}
答案2
的第一个参数\multirow
是标准(单行)行,因此您必须通过反复试验来确定等效标准行的数量。请注意,此数字不一定是整数。
对于彩色的 \multirow,您还必须\cellcolor{…}
在多行覆盖的空单元格中使用。
Ol 还简化了你的代码;\parbox
对于旋转的盒子来说,使用不是必需的。
\documentclass{article}
\usepackage{geometry}
\usepackage{adjustbox}
\usepackage{multirow}
\usepackage[table, x11names]{xcolor}
\usepackage{array}
\newcolumntype{M}[1]{>{\raggedright\arraybackslash}m{#1}}
\begin{document}
\begin{table}
\caption{Just a nice table}
\begin{center}
\renewcommand{\arraystretch}{5.5}
\begin{tabular}{|c|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|M{2.0cm}|}
\hline
\multicolumn{2}{|M{2.0cm}|}{name A} & name B & name C & name D & name E & name F\\
\hline
\multirow{3.1}{*}{\rotatebox[origin=c]{90}{Classification A1}} & B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\cline{2-7}
& B & C & D & E & F & G\\
\hline
\cellcolor{blue!25}& B & C & D & E & F & G\\
\cline{2-7}
\multirow{-2}{*}{\cellcolor{blue!25} \rotatebox[origin=c]{90}{Classification A2}}& B & C & D & E & F & G\\
\hline
\end{tabular}
\end{center}
\label{tab:multicol}
\end{table}
\end{document}