尽管缺少行,表格宽度仍保持不变

尽管缺少行,表格宽度仍保持不变

我正在为一个表格制作自定义命令,该表格具有可选行但需要在整个文档中进行一致的格式化(有很多实例)。

我遇到的问题是,当表格未达到最大列数时,多列命令似乎会被忽略,并且表格会压缩到较小的宽度。

这是一个演示,第二个表占据了整个行宽(正确),但是第一个表尽管只缺少一行,却压缩到更短的宽度。

\documentclass{article}
\usepackage{multirow}
\begin{document}

\begin{tabular}{|m{\dimexpr.22\textwidth-2\tabcolsep}|m{\dimexpr.30\textwidth-2\tabcolsep}|m{\dimexpr.45\textwidth-2\tabcolsep}|}
\hline
\rowcolor{black!80} \multicolumn{3}{l}{\textcolor{white}{label}} \\
\hline
line1 & \multicolumn{2}{l|}{content} \\
\hline
\end{tabular}

\begin{tabular}{|m{\dimexpr.22\textwidth-2\tabcolsep}|m{\dimexpr.30\textwidth-2\tabcolsep}|m{\dimexpr.45\textwidth-2\tabcolsep}|}
\hline
\rowcolor{black!80} \multicolumn{3}{l}{\textcolor{white}{label}} \\
\hline
line1 & \multicolumn{2}{l|}{content} \\
\hline
line2 & content1 & content2 \\
\hline
\end{tabular}


\end{document}

答案1

也许{NiceTabular}nicematrix一个解决方案。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\noindent
\begin{NiceTabular}{X[22]X[30]X[48]}[hvlines]
\Block[l,fill=black!80]{1-*}{\color{white}\sffamily label} \\
line1 & \Block[l]{1-2}{content} & \\
\end{NiceTabular}

\bigskip

\noindent
\begin{NiceTabular}{X[22]X[30]X[48]}[hvlines]
\Block[l,fill=black!80]{1-*}{\color{white}\sffamily label} \\
line1 & \Block[l]{1-2}{content} & \\
line2 & content1 & content2 \\
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容