该软件包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}