嵌套表格环境中的水平线

嵌套表格环境中的水平线

我目前有这张表:

\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

像这样:

在此处输入图片描述

为此,您需要消除嵌套表的列中的表列分隔。这可以通过使用以下内容完成@{}

\begin{table}
\centering
\begin{tabular}{ |c|@{}c@{}| }% <-- aded @{}
\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}

答案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 节点)。

上述代码的输出

相关内容