我正在为一个表格制作自定义命令,该表格具有可选行但需要在整个文档中进行一致的格式化(有很多实例)。
我遇到的问题是,当表格未达到最大列数时,多列命令似乎会被忽略,并且表格会压缩到较小的宽度。
这是一个演示,第二个表占据了整个行宽(正确),但是第一个表尽管只缺少一行,却压缩到更短的宽度。
\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 节点)。