考虑一下这张表
\begin{tabular}{lr@{}l}
Bla & \multicolumn{2}{c}{A $\to$ B} \\
\hline
X & 23.1&* \\
Y & 7.5&
\end{tabular}
产生
第二列标题似乎是左对齐的。我该怎么做才能使其居中?
答案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