多列单元格对齐

多列单元格对齐

考虑一下这张表

\begin{tabular}{lr@{}l}
  Bla & \multicolumn{2}{c}{A $\to$ B} \\
  \hline
  X   & 23.1&* \\
  Y   & 7.5&  
\end{tabular}

产生

带标题的 2×2 表格

第二列标题似乎是左对齐的。我该怎么做才能使其居中?

答案1

如果多列条目比它跨越的列宽,那么 TeX 的原始\halign机制会将额外的空间放入最后一个跨越的列中,而这很少是我们所希望的。

您可以在前面的列中留出一些额外的空间,这样就不会发生这种情况,或者在这里,您最好使用其中一个数字对齐包,将数字保持在单个列中。我dcolumn在这里使用过我所知道的,但siunitx它更新,功能更多。

\documentclass{article}

\usepackage{dcolumn}

\begin{document}

1

\begin{tabular}{lr@{}l}
  Bla & \multicolumn{2}{c}{A $\to$ B} \\
  \hline
  X   & 23.1&* \\
  Y   & 7.5&  
\end{tabular}


2

\begin{tabular}{lr@{}l}
  Bla & \multicolumn{2}{c}{A $\to$ B} \\
  \hline
  X   & \quad23.1&* \\
  Y   & 7.5&  
\end{tabular}

3 (using a text mode * as suggested by @egreg's comment)

\begin{tabular}{lD{.}{.}{2.2}}
  Bla & \multicolumn{1}{c}{A $\to$ B} \\
  \hline
  X   & 23.1\rlap{*} \\
  Y   & 7.5  
\end{tabular}

4 (or using a math mode superscript *)

\begin{tabular}{lD{.}{.}{2.2}}
  Bla & \multicolumn{1}{c}{A $\to$ B} \\
  \hline
  X   & 23.1^{*} \\
  Y   & 7.5  
\end{tabular}

\end{document}

在此处输入图片描述

答案2

解决此问题的一个简单方法是使用环境tabularew而不是tabular环境。 tabularew包括一个宏,,\spew它控制如何在列之间分配超出的宽度。这是一个简单的例子:

示例输出

\documentclass{article}

\usepackage{tabularew}

\begin{document}

\begin{tabularew}{l>{\spew{.5}{+1}}r@{.}l>{\spew{1}{+1}}r@{.}l}
Trace & \multicolumn{2}{c}{Property One} & \multicolumn{2}{c}{Property Two} \\
1 & 2 & 3 & 4 & 5
\end{tabularew}

\end{document}

第一列(属性一)使文本居中。第二列(属性二)使文本右对齐。

的第二个参数\spew是要修改的列。前面的 + 或 - 表示指定相对于当前位置。因此,+1 表示下一列。第一个参数是要在此列中放入的超额宽度量。更多详细信息请参阅手册:http://www.ctan.org/pkg/tabularew

相关内容