三列表格中的两列过度支撑

三列表格中的两列过度支撑

我对 LateX 还不是很熟悉。我想实现的是让 3 列表格中的两列过度支撑。我的意思是,我不想让任何一列都过度支撑。

现在我得到了这个:

\begin{tabular}{c | p{2cm} | c@{,} l}
\multicolumn{2}{c}{$overbrace{Col1 | Col2}$} & \multicolumn{2}{c}{Col3} \\
R1C1 & R1C2 & 1&24123
R2C1 & R2C2 & 12&3123
\end{tabular}

我认为该解决方案可能很简单,但我无法理解。有什么想法吗?

答案1

这是您可以做到的一种方法。我稍微简化了表格的结构,只是为了让后面的内容更清晰。(顺便说一句,您\\在第一行的末尾漏掉了一个。)

% name a new length:
\newlength{\TwoColumnWidth}

% set it to the width of the first two columns:
\settowidth{\TwoColumnWidth}{%
\begin{tabular}{ll}
R1C1 & R1C2\\
R2C1 & R2C2\\
\end{tabular}}

% create a zero-width box on the left of your table:
\makebox[0pt][l]{%
% put the contents of the box high enough to sit above the table:
\raisebox{2ex}{%
% fill the box with your overbrace of the previously specified length:
$\overbrace{\hspace{\TwoColumnWidth}}$}}%
% and then put your table in (making sure to align it at the top `[t]`):
\begin{tabular}[t]{llll}
R1C1 & R1C2 & 1&24123\\
R2C1 & R2C2 & 12&3123
\end{tabular}

在此处输入图片描述


另外两条评论:

许多出版社避免在表格中使用垂直线。严格的左边距使它们变得多余。为了获得更高质量的表格,请查看booktabs.sty,事实上,这使得垂直线略微不可靠。

对于您的特定表格,我认为如果您消除与过度支撑相关的列边缘周围的默认间距,效果会更好。即使用:

\settowidth{\TwoColumnWidth}{\begin{tabular}{@{}ll@{}}

\begin{tabular}[t]{@{}llll}

在此处输入图片描述


后期编辑

我不知道这是否与您的目的相关,但我只想评论一下您的初始草图(BeUndead 对此进行了跟进)和我的回复之间的区别。本质上,这与表格顶行相对于文本的基线有关。按照我所建议的方式,文本和表格顶行的基线保持不变。将括号放在表格顶行会使括号与普通文本对齐。不确定这对您是否重要:

在此处输入图片描述

如果你将括号放在表格中,你可能仍想减少它下面的空间,在后面使用方括号高度\\

\multicolumn2{@{}c@{}}{$\overbrace{\hspace{\TwoColumnWidth}}$}\\[-.8ex]%

答案2

这是另一种方法,使用时可能需要稍微弄乱一下,但应该不会太难:

\documentclass{article}

    \usepackage{multirow}

\begin{document}

    \begin{table}[h]
        \centering
        \begin{tabular}{ c|c|c|c }
            \multicolumn{2}{c}{$\overbrace{\rule{2.6cm}{0pt}}$}  &  \multicolumn{2}{c}{}  \\
            Col1  &  Col2  &  \multicolumn{2}{c}{Col3}  \\
            R1C1  &  R1C2  &  R1C3  &  R1C4  \\
            R2C1  &  R2C2  &  R2C3  &  R2C4
        \end{tabular}
    \end{table}

\end{document}

这将产生类似的效果(忽略丑陋的支撑,文档我端的缩放级别选择不当):

多柱过度支撑

相关内容