使用 siunitx 包进行基本 S 列对齐

使用 siunitx 包进行基本 S 列对齐

好的,我这里遗漏了什么?为什么S列没有按小数点对齐:

在此处输入图片描述

期望的结果是数据按小数点对齐并在列内居中:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{siunitx}

\begin{document}
    \begin{tabular}{S}
    \multicolumn{1}{c}{Measured Values} \\
        \SI{0.003 1}{\meter} \\
        \SI{0.003 123}{\meter} \\
        \SI{0.003 45}{\meter} \\
    \end{tabular} 
\end{document}

答案1

如果您必须对不同的数字使用不同的单位,则可以使用table-space-text-post和进行以下操作table-align-text-post

\documentclass{article}
\usepackage{siunitx}

\begin{document}
    \begin{tabular}{S[table-format=1.6,table-space-text-post = \si{\meter}]}
    {Measured Values} \\
        0.0031\si{\meter}   \\
        0.003123\si{\meter} \\
        0.00345\si{\meter}  \\
    \end{tabular}
    \begin{tabular}{S[table-format=1.7,table-align-text-post = false]}  %% note 1.7 here just to align things at center
    {Measured Values} \\
        0.0031\,\si{\meter}   \\
        0.003123\,\si{\meter} \\
        0.00345\,\si{\meter}  \\
    \end{tabular}
\end{document}

在此处输入图片描述

还有pre上述命令的版本 -table-align-text-pre在数字前执行相同的操作。

答案2

列类型旨在以与命令的S单个强制参数相同的格式接受输入。其他任何内容均被解释为文本(用于标题等)并以小数点位置为中心。siunitx\num{}

这就是您看到整体居中行为的原因:被\SI{}{}解释为“非数字”并被格式化为标题文本或其他材料。

要排版单位,请使用s列,该列以与命令的强制参数相同的形式接受输入\si{}。仅当表中每行的单位不相同时才应使用此方法。

例子:

\documentclass{article}
\usepackage{siunitx}

\begin{document}
    \begin{tabular}{S[table-format=1.6]s}
    \multicolumn{2}{c}{Measured Values} \\
        0.0031   & \meter \\
        0.003123 & \meter \\
        0.00345  & \meter \\
    \end{tabular} 
\end{document}

在此处输入图片描述

如果某一列的单位对于每一行都相同(大多数表格都是如此),请使用siunitx手动的;也就是说,使用无量纲比率表示数字:

\documentclass{article}
\usepackage{siunitx}

\begin{document}
    \begin{tabular}{S[table-format=1.6]}
    {Measured Values/\si{\meter}} \\
        0.0031   \\
        0.003123 \\
        0.00345  \\
    \end{tabular} 
\end{document}

在此处输入图片描述

或者(我偏爱的):

\documentclass{article}
\usepackage{siunitx}

\begin{document}
    \begin{tabular}{S[table-format=1.6]}
    {Measured Values (\si{\meter})} \\
        0.0031   \\
        0.003123 \\
        0.00345  \\
    \end{tabular} 
\end{document}

在此处输入图片描述

请注意如何table-format=1.6使用 来指定每个列条目中整数和小数的最大位数。这允许正确居中数据。另外,我在标题周围使用了花括号来“保护”它并将其标记为非数字数据。这里不需要这样做,因为siunitx它非常聪明地检测这些情况。花括号保护在某些siunitx容易混淆的情况下很有用(例如整数索引标题)。

相关内容