![表格-如何设置列分隔符](https://linux22.com/image/461262/%E8%A1%A8%E6%A0%BC-%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E5%88%97%E5%88%86%E9%9A%94%E7%AC%A6.png)
关于我的表格(下面的 MWE)有两个问题。如何使列“A”和“B”的宽度相同?如何在\cline
列名“A”和“B”之间留出一些空间,以便第一列中的“True”保持垂直居中?
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{c|c|c}
\hline
\multirow{2}{*}{True}&\multicolumn{2}{c}{Something} \\
\cline{2-3}
&$A$ & $B$\\
\hline
C & 0 & 1 \\
D & 2 & 0 \\
\hline
\end{tabular}
\end{document}
答案1
- 你应该尽可能避免垂直规则
- 为了获得相等的列宽,可以使用
tabularx
列类型X
,但如果您不想使用tabularx
,则必须测量“某物”的宽度,并将宽度分割在两列之间 - 要在标尺下方添加空间,请使用
\addlinespace
检查一下
\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{calc}
\newlength{\widthWidest}
\begin{document}
\setlength{\widthWidest}{\widthof{Something}}
\setlength{\widthWidest}{0.5\widthWidest}
\begin{NiceTabular}{c m[c]{\widthWidest} m[c]{\widthWidest}}
\toprule
& \Block[c]{1-2}{Something} &
\\
\cmidrule(lr){2-3}
\addlinespace
True & $A$ & $B$
\\
\cmidrule(lr){1-1} \cmidrule(lr){2-3}
C & 0 & 1
\\
D & 2 & 0
\\
\bottomrule
\end{NiceTabular}
\end{document}
答案2
我首先展示表格的两个版本:左边是您的代码,右边是一个更优雅的设置。
垂直规则和“True”的移位使阅读变得不协调:“True”是一个与“Something”处于同一概念层次的标题,因此它们应该保持在同一物理层次上。
另一方面,您的代码更好地展示了这个问题:当 TeX 合并两个(或更多)单元格并且合并单元格的总宽度大于跨越列的自然宽度时,多余的宽度将完全进入最后一个跨越列。
在这种情况下,您需要一些手动干预并测量大跨度物体。
我们需要使 A 列的宽度加上 B 列的宽度(我们将其设置为相等)加上四倍\tabcolsep
等于(或稍微宽一点)“Something”的宽度加上两倍\tabcolsep
。
我们可以使用array
并将其w
列类型设置为“固定宽度列”。
\documentclass{article}
\usepackage{booktabs,array}
\newlength{\eqcolwd}
\begin{document}
\begin{table}[htp]
\centering
% the columns A and B should be as wide as “Something” minus twice \tabcolsep
\settowidth{\eqcolwd}{Something}
\addtolength{\eqcolwd}{-2\tabcolsep}
\setlength{\eqcolwd}{0.5\eqcolwd}
\begin{tabular}{c w{c}{\eqcolwd} w{c}{\eqcolwd}}
\toprule
True & \multicolumn{2}{c}{Something} \\
\cmidrule{2-3}
&$A$ & $B$\\
\midrule
C & 0 & 1 \\
D & 2 & 0 \\
\bottomrule
\end{tabular}
\caption{Some table}
\end{table}
\end{document}
如果您坚持自己的布局……
\documentclass{article}
\usepackage{multirow,array}
\newlength{\eqcolwd}
\begin{document}
\begin{table}[htp]
\centering
% the columns A and B should be as wide as “Something” minus twice \tabcolsep
\settowidth{\eqcolwd}{Something}
\addtolength{\eqcolwd}{-2\tabcolsep}
\setlength{\eqcolwd}{0.5\eqcolwd}
\begin{tabular}{c | w{c}{\eqcolwd} w{c}{\eqcolwd}}
\hline
\multirow{2}{*}{True} & \multicolumn{2}{c}{Something} \\
\cline{2-3}
&$A$ & $B$\\
\hline
C & 0 & 1 \\
D & 2 & 0 \\
\hline
\end{tabular}
\caption{Some table}
\end{table}
\end{document}