我想创建一个两列行数不同的表格,例如 5/4、7/3、2/3……每列的行数必须在垂直方向上均等划分。这意味着,对于 5/4,第一列行的高度将小于第二列行的高度,但第一列的总高度将等于第二列的总高度。
下面是我进行不同尝试的 MWE:
\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{makecell}
\begin{document}
% Using only multirow
\begin{tabular}[c]{|c|l|}
\hline
\rowcolor{blue!70}
\multicolumn{2}{|c|}{}\\
\hline
\multirow{4}{5cm}{
\centering
World company\newline
Main Street\newline
World Capital\newline
Earth\newline
Tel: +00~1~23~45~67~89
}
& Alphonse \\
\cline{2-2}
& Daudet \\
\cline{2-2}
& Marcel \\
\cline{2-2}
& Pagnol \\
\hline
\end{tabular}
\vspace{4\baselineskip}
% Using makecell
\begin{tabular}[c]{|c|l|}
\hline
\rowcolor{blue!70}
\multicolumn{2}{|c|}{}\\
\hline
\makecell{
\centering
World company \newline
Main Street \newline
World Capital \newline
Earth \newline
Tel: +00~1~23~45~67~89
}
& Alphonse \\
\cline{2-2}
& Daudet \\
\cline{2-2}
& Marcel \\
\cline{2-2}
& Pagnol \\
\hline
\end{tabular}
\vspace{4\baselineskip}
% Using multirow and minipage
\begin{tabular}[c]{|c|l|}
\hline
\rowcolor{blue!70}
\multicolumn{2}{|c|}{}\\
\hline
\multirow{4}{5cm}{
\begin{minipage}[t]{5cm}
\centering
World company \\
Main Street \\
World Capital \\
Earth \\
Tel: +00~1~23~45~67~89
\end{minipage}
}
& Alphonse \\
\cline{2-2}
& Daudet \\
\cline{2-2}
& Marcel \\
\cline{2-2}
& Pagnol \\
\hline
\end{tabular}
\vspace{4\baselineskip}
% Using multirow on second column
\begin{tabular}[c]{|c|l|}
\hline
\rowcolor{blue!70}
\multicolumn{2}{|c|}{}\\
\hline
World company &
\multirow{5}{3cm}{
\noindent
Alphonse \newline
\hrule
Daudet \newline
\hrule
Marcel \newline
\hrule
Pagnol \newline
} \\
Main Street & \\
World Capital & \\
Earth & \\
Tel: +00~1~23~45~67~89 & \\
\hline
\end{tabular}
\end{document}
第一次尝试仅multirow
在第一列使用。
问题:
- 文本未正确居中
- 表格下方第一列第五行
好的:
- 文本从列顶部开始
第二次尝试使用该makecell
命令。
问题:
\newline
不考虑
第三个测试在第一列中使用了minipage
a 内的 a 。问题:multirow
- 文本没有从列的开头开始
- 最后两行在表格下面
好的:
- 文本正确居中
最后一次尝试使用multirow
第二列。
问题:
- 第二列第一行好像缩进
- 不适
\hline
用于multirow
,并且hrule
不适合所有宽度 - 行距和文本间距不好
- 第二列的文本位于表格下方
好的
- 第一列正确居中
- 第一列文本与表格正确匹配
正如你所看到的,每个“解决方案”都有其自身的问题,而我没有更多的想法。
答案1
我建议使用\makegapedcells
命令来makecell
增加单元格高度。由于右列有 4 个单元格,因此此列的总高度没问题。
但是,makecell
在着色表方面存在问题,并且在目前的情况下rowcolor
不起作用,所以我删除了第一行(空行),并用\midrule
(来自booktabs
)替换它,它可以采用可选的厚度参数,并且与配合良好\arrayrulecolor{...}
。
但这会导致相应高度上的垂直外线消失,因为第一行已被删除。因此,我删除了所有外线,并\fbox
使用适当的参数将其替换为。
\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{makecell}
\usepackage{booktabs}
\begin{document}
{\setcellgapes{1ex}\makegapedcells
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\fboxsep}{-\fboxrule}
\fbox{\begin{tabular}[c]{c|l}
\arrayrulecolor{blue!70}\midrule[12pt]
\arrayrulecolor{black}
\hline
\multirowcell{4}{%
World company\\
Main Street\\
World Capital\\
Earth\\
Tel: +00\,1\,23\,45\,67\,89
}
& Alphonse \\
\cline{2-2}
& Baudet \\
\cline{2-2}
& Marcel \\
\cline{2-2}
& Pagnol \
\end{tabular}}}
\end{document}