siunitx 中带单位数字列间距的控制

siunitx 中带单位数字列间距的控制

该软件包siunitx非常适合用单位来书写量值。但我对量值表不太熟悉。例如,

\begin{tabular}{
S|
S|
S[table-format=1.9]
}
{Range} & {Readout} & {Uncertainty}  \\ \hline 
10 {mV} &   0.000022 mV  & 0.000069 {mV}\\
100 {mV} &   -0.00001~{mV}  & 0.00011 {mV}\\
1 {V} &   -0.0000007~{V}  & 0.00000029 V\\
10 {V} &   -0.000007~{V}  & 0.0000029 V\\
100 {V} &   -0.000075~{V}  & 0.000058 V\\
\end{tabular} 

产生这个

在此处输入图片描述

第二列的外观最接近我想要的(除了第一个元素缺少~),但我不知道如何减少左边的空间。

我应该怎么办?

编辑

我想要做的是在不知道格式的情况下控制空白(即,不手工制作每一列),并且我希望单位遵循数字(不与自身对齐)。

也许这会让我的问题更加清楚。

\setlength{\extrarowheight}{3pt}
\sisetup{
    table-space-text-post ={\,mV}, % Enough space for units
}
\begin{tabular}{|
S[table-format=+1.7]|
S[
   table-figures-integer = 1,
   table-figures-decimal = 7, 
   table-sign-mantissa]
|}
{1} & {2}  \\
\hline 
  0.000022\,mV &   0.000022\,mV  \\
 -0.00001\,mV&   -0.00001\,mV  \\
-0.0000007\,V  &   -0.0000007\,V  \\
-0.000007\,V  &   -0.000007\,V  \\
-0.000075\,V &   -0.000075\,V  \\
\end{tabular} 

这样就会生成我想要格式的第 2 列,但是左侧的空白太多。

在此处输入图片描述

siunitx 手册(第 51 页)说表格格式是指定格式不同部分的快捷方式,但它确实按我预期的那样工作:上面的第 2 列左侧有更多的空白。

然后我发现这两种格式是等效的:

S[table-format=+1.7]|
S[   
    table-figures-integer = 1,
    table-figures-decimal = 7, 
    table-sign-mantissa,
    table-number-alignment=center]|

但是,默认情况下table-number-alignment=center-decimal-marker,由于小数位较多,因此会产生额外的空间。

因此,我认为只需设置table-number-alignment=center,而不设置其他数字规范,就可以解决我的问题,但事实并非如此

\begin{tabular}{|
S[table-number-alignment=center]|
S[   
    table-figures-integer = 1,
    table-figures-decimal = 7, 
    table-sign-mantissa,
    table-number-alignment=center-decimal-marker]|
}
{1} & {2}  \\
\hline 
  0.000022\,mV &   0.000022\,mV  \\
 -0.00001\,mV&   -0.00001\,mV  \\
-0.0000007\,V  &   -0.0000007\,V  \\
-0.000007\,V  &   -0.000007\,V  \\
-0.000075\,V &   -0.000075\,V  \\
\end{tabular} 
}

在此处输入图片描述

现在,单位正在覆盖第 1 列中的数字!

这可以修复吗?

答案1

您可以通过对数字和单位使用单独的列来避免所有有关间距的猜测。

我以特征形式呈现表格booktabs,避免使用垂直线。下面是另一个版本,其中第二列和第三列的数据以毫伏表示,单位位于标题中:这减少了位数,使表格更紧凑、更易于阅读。您可以将范围设置为伏特,将读数设置为毫伏,这没有问题。

\documentclass{article}
\usepackage{siunitx,booktabs}

\begin{document}

\begin{tabular}{
  @{}
  S[table-format=3.0]
  @{\,}
  s[table-unit-alignment=left]
  S[table-format=-1.7,group-four-digits]
  @{\,}
  s[table-unit-alignment=left]
  S[table-format=1.8,group-four-digits]
  @{\,}
  s[table-unit-alignment=left]
  @{}
}
\toprule
\multicolumn{2}{c}{Range} & \multicolumn{2}{c}{Readout} & \multicolumn{2}{c}{Uncertainty} \\
\midrule
 10 & mV &  0.000022  & mV & 0.000069   & mV \\
100 & mV & -0.00001   & mV & 0.00011    & mV \\
  1 & V  & -0.0000007 & V  & 0.00000029 & V  \\
 10 & V  & -0.000007  & V  & 0.0000029  & V  \\
100 & V  & -0.000075  & V  & 0.000058   & V  \\
\bottomrule
\end{tabular}

\bigskip

\begin{tabular}{
  @{}
  S[table-format=3.0]
  @{\,}
  s[table-unit-alignment=left]
  S[table-format=-1.6,group-four-digits]
  S[table-format=1.6,group-four-digits]
  @{}
}
\toprule
\multicolumn{2}{c}{Range} & {Readout} & {Uncertainty} \\
\multicolumn{2}{c}{} & {(\si{mV})} & {(\si{mV})} \\
\midrule
 10 & mV &  0.000022 & 0.000069 \\
100 & mV & -0.00001  & 0.00011  \\
  1 & V  & -0.0007   & 0.00029  \\
 10 & V  & -0.007    & 0.0029   \\
100 & V  & -0.075    & 0.058    \\
\bottomrule
\end{tabular}

\end{document}

在此处输入图片描述

答案2

这是一个解决方案:

\documentclass{article}
\usepackage{siunitx}

\begin{document}

\sisetup{table-align-text-post=false, table-space-text-post ={\,mV}}
\setlength{\extrarowheight}{3pt}
\begin{tabular}{
S[table-format=2.0]|
S[table-format=-1.6]|
S[table-format=1.9]
}
{Range} & {Readout} & {Uncertainty} \\ \hline
10\,mV & 0.000022\, mV & 0.000069\,mV \\
100\,mV & -0.00001\,mV & 0.00011\,mV \\
1\,V & -0.0000007\,V & 0.00000029\,V\\
10\,V & -0.000007\,V & 0.0000029\,V\\
100\,V & -0.000075\,V & 0.000058\,V\\
\end{tabular}

\end{document} 

在此处输入图片描述

答案3

booktabs包装,无垂直

在此处输入图片描述

\documentclass[10pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}
\newcommand{\mc}[1]{\multicolumn{2}{c}{#1}}
\begin{document}
    \begin{tabular}{
            s[table-unit-alignment = right]@{\,}s[table-unit-alignment = left]
            S[table-format=1.7]@{\,}s[table-unit-alignment = left]
            S[table-format=1.9]@{\,}s[table-unit-alignment = left]
        }
        \mc{Range}      &           \mc{Readout} & \mc{Uncertainty}  \\ \toprule 
        10         &\mV &   0.000022      &\mV   & 0.000069    &\mV\\
        100        &\mV &   -0.00001      &\mV   & 0.00011     &\mV\\
        1          &\V  &   -0.0000007    &\V    & 0.00000029  &\V\\
        10         &\V  &   -0.000007     &\V    & 0.0000029   &\V\\
        100        &\V   &   -0.000075    &\V    & 0.000058    &\V\\    \bottomrule
    \end{tabular} 
\end{document}

相关内容