宽列表格中的数字对齐

宽列表格中的数字对齐

我有一张表格,表格中的数字使用S中的列类型进行对齐siunitx。输入一些数字\multirow,使用\tablenum宏对齐就可以完美地工作,只要列的宽度与数字所需的宽度相同即可。但是,当在单元格中添加一些文本时,会强制列拉伸,对齐就会丢失,请参见示例。

这是错误吗?还是我应该完全放弃multirow?:-)

\documentclass{article}
\usepackage{multirow,siunitx}
\begin{document}

\begin{tabular}{S[table-format=2.2]S[table-format=2.2]S[table-format=1.2]}
{Energy} & {Efficiency} & {Uncertainty} \\
14.14 & 10.41 & 3.82 \\
22.10 & 4.17 & 3.14 \\
\multirow{2}*{\tablenum{30.97}} & 1.31 & \multirow{2}*{\tablenum{3.08}} \\
& 1.48 &  \\
\end{tabular}

\end{document}

输出如下:

输出

答案1

在此处输入图片描述

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

\newbox\mybox
\sbox\mybox{\begin{tabular}{@{}S[table-format=2.2]@{}}1.31\\1.48\end{tabular}}
\begin{tabular}{S[table-format=2.2]S[table-format=2.2]S[table-format=1.2]}
{Energy} & {Efficiency} & {Uncertainty} \\
14.14 & 10.41 & 3.82 \\
22.10 & 4.17 & 3.14 \\
% oops 30.97 &{\begin{tabular}{@{}S[table-format=2.2]@{}}1.31\\1.48\end{tabular}}& 3.08 \\
30.97 &{\usebox{\mybox}}& 3.08 \\
\end{tabular}

\end{document}

答案2

\tablenum命令依赖于 begin 能够“撞到”列的侧面,这只有在列的自然宽度一直保持到底部时才能起作用。对于较长的标题,您将不得不添加一些虚拟数字空间来帮助对齐。例如

\documentclass{article}
\usepackage{multirow,siunitx}
\begin{document}

\begin{tabular}{S[table-format=3.3]S[table-format=2.2]S[table-format=5.5]}
{Energy} & {Efficiency} & {Uncertainty} \\
14.14 & 10.41 & 3.82 \\
22.10 & 4.17 & 3.14 \\
\multirow{2}*{\tablenum[table-format=3.3]{30.97}} & 1.31 & \multirow{2}*{\tablenum[table-format=5.5]{3.08}} \\
& 1.48 &  \\
\end{tabular}

\结束{文档}

相关内容