表格-如何设置列分隔符

表格-如何设置列分隔符

关于我的表格(下面的 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}

在此处输入图片描述

相关内容