仅在表格的两个特定列之间添加额外空间,而不添加额外的列

仅在表格的两个特定列之间添加额外空间,而不添加额外的列

我正在尝试将表格的两列分开,但遇到了困难。我尝试\hspace使用语法在列之间添加@{...}内容,但是multicolumn似乎忽略了此间距应该是之间从以下 MWE 中第一个表格可以看出的列:

\documentclass{article}
\begin{document}

\begin{tabular}{ll@{\hspace{3cm}}rr}
  \multicolumn{2}{r}{Spans} & \multicolumn{2}{l}{Spans} \\
  \cline{1-2} \cline{3-4}
  X & Y & X & Y
\end{tabular}

\begin{tabular}{ll@{\extracolsep{3cm}}r@{\extracolsep{0pt}}r}
  \multicolumn{2}{r}{Spans} & \multicolumn{2}{l}{Spans} \\
  \cline{1-2} \cline{3-4}
  X & Y & X & Y
\end{tabular}
\end{document}

多列右对齐,并一直延伸到第 3 列的开始位置。同样,\cline也一直延伸到第 3 列的开始位置。

我可以用 大致实现我想要的效果\extracolsep,但这里的问题是我必须手动将其重新设置为零,否则,第 3 列和第 4 列之间也会出现大量额外空间。

多列打破列间规范

有没有一种方法可以让我简单地设置一件事(如上面的例子所示,但实际上却按照我期望的方式对多列和线条进行操作(如下面的例子所示)?

我希望在不向表格中添加多余列的情况下实现此目的。也就是说,我的表格目前有四列,每列单元格中都有内容。我可以通过添加中间第五列并在那里留出间距来实现我想要的效果,并将所有相应的\clines 更改为新的数字。我发现这个解决方案不够优雅,并且很难在现有的大型表格中实现...

答案1

使用该包,您可以指定在每个元素之前和每个元素之后array执行的命令。因此,以下内容应该接近您想要的。>{\command}<{command}

\documentclass{article}
\usepackage{array}

\newcolumntype{R}{@{\extracolsep{3cm}}r@{\extracolsep{0pt}}}%

\begin{document}
\begin{tabular}{llRr}
  \multicolumn{2}{r}{Spans} & \multicolumn{2}{l}{Spans} \\
  \cline{1-2} \cline{3-4}
  X & Y & X & Y
\end{tabular}
\end{document}

答案2

也许您可以使用的修剪选项booktabs's \cmidrule来修剪cline。将额外的空间也添加到\multicolumn

\documentclass{article}
\usepackage{array}
\usepackage{booktabs}

\newlength\tbspace
\setlength\tbspace{3cm}
\newcolumntype{L}{l<{\hspace{\tbspace}}}

\begin{document}
    \begin{tabular}{lLrr}
      \multicolumn{2}{L}{Spans} & \multicolumn{2}{r}{Spans} \\
      \cmidrule(r{\tbspace}){1-2} \cmidrule{3-4}
      X & Y & X & Y
    \end{tabular}
\end{document}

在此处输入图片描述

答案3

好吧,下面的代码似乎可以工作,但需要进行一些尺寸调整,而我并不擅长做这件事。根据要求,没有添加列,但我真的不知道它为什么会起作用。我倾向于破解事物而不是编写代码。也许这里的一位大师可以告诉我们如何让事情变得健壮。

\documentclass{article}
 \usepackage{tabularx}


 \begin{document}

 \begin{tabular*}{\textwidth}{c @{\extracolsep{1cm}}c  c c}
  \multicolumn{2}{c}{Spans} &\multicolumn{2}{c}{Spans} \\
  \cline{1-2} \cline{3-4}
  X & Y & X & Y\\
  XZZZZZZ &YSSSSSS & XZ & RANDOMLETTERCOMBO
\end{tabular*}

\end{document}

这是包含更多字母的快照。

在此处输入图片描述

编辑:我意识到列之间的垂直线看起来很糟糕,如果坚持使用它们,则需要进行更多调整。

答案4

我将添加一个用于间隔目的的附加列,然后使用array包裹根据需要插入空格。

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

\begin{tabular}{ll@{\hspace{3cm}}rr}
  \multicolumn{2}{r}{Spans} & \multicolumn{2}{l}{Spans} \\
  \cline{1-2} \cline{3-4}
  X & Y & X & Y
\end{tabular}

\begin{tabular}{ll@{}>{\hspace*{3cm}}crr}
  \multicolumn{2}{r}{Spans} & & \multicolumn{2}{l}{Spans} \\
  \cline{1-2} \cline{4-5}
  X & Y & & X & Y
\end{tabular}
\end{document}​

扩展特定宽度的列

相关内容