我正在尝试创建一个表,其中其中一列的单元格包含一个嵌套表作为单元格值。
到目前为止我已经得到了这个:
\documentclass{article}
\usepackage{array,multirow}
\begin{document}
\begin{table}
\begin{tabular}{|c|cccc|c|}\hline
Col. A & Col. B & & & & Col. C \\ \cline{1-6}
\multirow{4}{*}
{Val. 1}
& & a & b & c \\
& b & 2 & & \\
& c & 2 & 3 & \\
& d & 2 & 3 & 4 \\ \hline
\multirow{4}{*}
{Val. 2}
& & a & b & c \\
& b & 2 & & \\
& c & 2 & 3 & \\
& d & 2 & 3 & 4 \\ \hline
\end{tabular}
\end{table}
\end{document}
这会创建如下内容:
我想修复/改进以下几点:
尽管只有 3 列,我还是想扩展表格以覆盖页面上的整个文本宽度?不需要跨越整个文本宽度,但外部列“A”和“C”应该可以轻松处理多行值。在 中
Col. B
,我想“美化”内部表格结构,使其成为一个 4x4 的正方形,行和列之间的间距相等,并且整个表格位于单元格的中心。如何使
Col. B
表头中的文本居中,并使单元格中的水平和垂直值(可能是多行)Col. C
居中?
如果可能的话,我希望尽可能少使用额外的包。因此,如果可以使用array
和multirow
(可能也可以multicol
)做到这一点,那么我们就只使用它们吧。
更新:感谢@DavidCarlisle 的回答,我在我的输出中产生了以下内容:
我们如何才能使嵌套表格的形状变成Col. B
正方形?我们可以以某种方式设置每个外列的宽度吗?
答案1
\documentclass{article}
\usepackage{array}
\begin{document}
\begin{table}
\setlength\extrarowheight{2pt}
\begin{tabular}{|c|c|c|}\hline
Col. A & Col. B & Col. C \\ \hline
Val. 1&
$\begin{array}{@{}cccc@{}}
& a & b & c \\
b & 2 & & \\
c & 2 & 3 & \\
d & 2 & 3 & 4
\end{array}$& \\ \hline
Val. 2&
$\begin{array}{@{}cccc@{}}
& a & b & c \\
b & 2 & & \\
c & 2 & 3 & \\
d & 2 & 3 & 4
\end{array}$&\\ \hline
\end{tabular}
\end{table}
\end{document}