我目前有这张表:
\begin{table}
\centering
\begin{tabular}{ |c|c| }
\hline
no test & no test \\
\hline
no test & \begin{tabular}{c|c} D1 & 1.23 \\ \hline D2 & 1.23 \\ \end{tabular} \\
\hline
\end{tabular}
\end{table}
给予:
嵌套表格中的 hline 没有跨越整个单元格宽度。
当然,多行/多列是一种选择。但是,这是一个“可变”表,每次有新数据到达时,我都需要向其中添加“子行”,但我事先不知道在哪里。因此,它可能变成这样:
为了这个目的,多行/多列似乎需要不断改变它们的行/列号。
如何才能解决这个问题,以尽量减少每次添加新“子行”时的工作量?
谢谢。
答案1
答案2
只需将主表序言替换c
为@{}c@{}
包含嵌套表格的每列即可。请注意,这需要array
包。
我还改进了加载包的表格cellspace
,它定义了最小行与列中上下单元格之间的垂直填充,其说明符以字母为前缀S
:
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ |c|@{}c@{}| }
\hline
no test & no test \\
\hline
no test & \begin{tabular}{c|c} D1 & 1.23 \\ \hline D2 & 1.23 \\ \end{tabular} \\
\hline
\end{tabular}
\end{table}
\end{document}
答案3
{NiceTabular}
这里是一种使用创建表格的方法nicematrix
。
在 中{NiceTabular}
,使用 命令 水平和垂直合并单元格\Block
。使用 键hvlines
,除块(由 构造)外,所有规则均会绘制\Block
。
\documentclass[10pt]{article}
\usepackage{geometry}
\usepackage{nicematrix}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.4}
\begin{NiceTabular}{cccc}[hvlines]
A1 & 1.23 & \Block{2-2}{no test} \\
A2 & 1.23 \\
\Block{3-2}{no test} && D1 & 1.23 \\
&& D1 & 1.23 \\
&& D1 & 1.23 \\
\end{NiceTabular}
\end{center}
\end{document}
您需要进行多次编译(因为nicematrix
在后台使用了 PGF/TikZ 节点)。