$\pm$
我有一个特殊的问题,涉及错误范围(由或分隔)值的列对齐±
。由于它通常在排版数字和单位方面做得很好,所以我正在使用该siunitx
包。
我得到了什么:
现在我有两种方法可以解决我的问题,分别分为Table 1
和Table 2
(见代码)。虽然Tab. 1
可以正确居中但间距不正确,但对于则相反Tab. 2
。这Tab. 1
接近解决方案,但我仍然更喜欢这种Tab. 2
方式,因为它的代码可读性更好,选项调整更少,而且我可以直接看到SI{x.xx(xxx)}{}
哪些值属于一起。而且由于数据输入是从自动进行的R
,我不必每次都编写SI{x.xx(xxx)}{}
或实际自定义。\ErrRange{x}{y}
我想要的是:
1.如果我使用S[table-format=x.x] @{\,\( \pm \)\,} S[table-format=x.x]
来格式化我的列,我会得到正确的居中。但是我如何控制值之间的空间始终如一? 这并不简单,需要进行大量调整才能正确。(见Tab. 1
)
2.如果我使用SI{x.xx(xxx)}{}
作为条目类型,我该如何让它以 为中心,以 为±
次要中心?对于这个问题,我感觉我必须以某种方式告诉别人我在这里使用了一个列,即使我这样做了!?(见)x.xx
xxx
siunitx
S
Tab. 2
我的发现:
我尝试获取有关该siunitx
软件包及其用法的更多信息,但手动的其他问题也帮不上我(1,2,3)。 有另一个问题讨论了列的间距S
,但这对我的解决方案没有任何新意。他们总是只讨论其中的一点,而从不同时讨论两者。
最接近我的问题是邮政,我尝试从中添加一些\sisetup
选项,例如table-number-alignment=center
和一些S
列选项,例如S[separate-uncertainty,table-figures-uncertainty=1]
。它们什么也没改变。当我添加table-figures-integer = 1
& table-figures-decimal = 2
(带有相应的值)时,这甚至使对齐变得Tab. 1
更糟。
请注意下图中,第一个表格存在奇怪的空间问题,而第二个表格忽略了 SI 居中:
我的代码:
\documentclass[]{article}
\usepackage{siunitx}
\usepackage{longtable}
\sisetup{separate-uncertainty, multi-part-units=single, bracket-numbers=false, range-phrase=--, range-units=single}
\newcommand{\ErrRange}[2]{\SI{#1(#2)}{}}
\begin{document}
%%%%%%%%%%%%%% TABLE 1 %%%%%%%%%%%%%%
\section*{Table with $\pm$ as column separator }
\begin{longtable}{
>{\itshape}p{3.5cm}
S[table-format=2.2]@{\,\( \pm \)\,}
S[table-format=1.1]%
S[table-format=3.2]@{\,\( \pm \)\,}
S[table-format=2.2]%
S[table-format=2.1]@{\,\( \pm \)\,}
S[table-format=2.1]%
}
\caption{The entries of this table are centered nicely, but the distances are awful to get right!}%
\\
\multicolumn{1}{l}{\textbf{Taxon}} &
\multicolumn{2}{c}{\textbf{Height (m)}} &
\multicolumn{2}{c}{\textbf{DBH (cm)}} &
\multicolumn{2}{c}{\textbf{Moss Cover (\%)}}\\
\endfirsthead
Acer pseudoplatanus & 14.8 & 4.1 & 35.33 & 20.19 & 11.5 & 16.8 \\
Acer platanoides & 14.4 & 4.2 & 100.33 & 15.28 & 18.0 & 20.8 \\
Picea abies & 14.8 & 3.8 & 32.44 & 13.37 & 0.3 & 0.8 \\
\end{longtable}
%%%%%%%%%%%%%% TABLE 2 %%%%%%%%%%%%%%
\section*{Table with SI-range multicolumns}
\begin{longtable}{
>{\itshape}p{3.5cm}
*{3}S}
\caption{Here the table's code is better readable, but the centering is incorrect.}%
\\
\multicolumn{1}{l}{\textbf{Taxon}} &
\textbf{Height (m)} &
\textbf{DBH (cm)} &
\textbf{Moss Cover (\%)}\\
Acer pseudoplatanus & \ErrRange{14.8}{41} & \ErrRange{35.33}{2019} & \ErrRange{11.5}{168} \\
Acer platanoides & \ErrRange{14.4}{42} & \ErrRange{100.33}{1528} & \ErrRange{18.0}{208} \\
Picea abies & \ErrRange{14.8}{38} & \ErrRange{32.44}{1337} & \ErrRange{0.3}{8} \\
\end{longtable}
\end{document}
编辑:
根据Zarko
和的解决方案samcarter
,我的问题现在对我来说更清楚了。Zarko's
在评论中解释之后,另一个问题可能是一列的最小值小于该列其他值的误差。然而,与评论中的暗示相反,其中一些/大多数是实际值。
简要介绍一下背景信息:这些是不同树种的数据,我估算了树高、胸径和苔藓覆盖率。由于我对每个树种的 100 多个个体进行了估算(不考虑大小和年龄),因此差异应该很大。虽然我确实过分强调了一些值,但苔藓覆盖率值都是我的真实值。因此,宏碁物种应该比云杉属物种。这意味着我可能无法使用答案,Zarko
而必须采取类似samcarter's
编辑2:
我想你说对了一件事:我指的不是标准误差,而是标准偏差。但是,我需要相同的格式,因此这不会改变任何东西。
答案1
siunitx
使用表格设置和标准 SI 符号的特征来表示数字输入的不确定性:
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{separate-uncertainty,
table-figures-uncertainty=2,
table-number-alignment = center,
}
\usepackage[active, floats, tightpage]{preview}
\setlength\PreviewBorder{1em}
\begin{document}
\begin{table}
\caption{Reserving space in \texttt{S} columns.}
\label{tab:S:space}
\sisetup{
table-figures-integer = 3,
table-figures-decimal = 2,
separate-uncertainty,
table-figures-uncertainty = 1
}
\centering
\begin{tabular}{
l
S[table-figures-decimal = 1]
S
S[table-figures-decimal = 1]
}
\toprule
\textbf{Taxon} & {\textbf{Height (m)}}
& {\textbf{DBH (cm)}}
& {\textbf{Moss Cover (\%)}} \\
\midrule
Acer pseudoplatanus & 14.8(41) & 35.33(2019) & 11.5(168) \\
Acer platanoides & 14.4(42) & 100.33(1528) & 18.0(208) \\
Picea abies & 14.8(38) & 32.44(1337) & 0.3(08) \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
附录:
如果您希望在小数点和公差符号处固定数字(不要这样做,这不符合 SI 标准),并明确写出\pm
符号(永远都做不到),那么您就会在空格处出现不匹配的情况。它们在您的解决方案中是因为两个列单元格的内容比跨越列的自然宽度更宽。您可以通过两种方式解决这个问题:
- 使两列单元格变窄,例如将它们设置为两行
\documentclass[]{article}
\usepackage{siunitx}
\usepackage{makecell, longtable}
\renewcommand\theadfont{\bfseries}
\newcommand\mcc[1]{\multicolumn{2}{c}{\thead[b]{#1}}}
\begin{document}
\section*{Table with $\pm$ as column separator }
\begingroup
\begin{longtable}{@{}
>{\itshape}l
S[table-format=2.1]@{$\,\pm\,$}S[table-format=1.1]%
S[table-format=3.2]@{$\,\pm\,$}S[table-format=2.2]%
S[table-format=2.1]@{$\,\pm\,$}S[table-format=2.1]%
@{}}
\caption{The entries of this table are centered nicely, but the distances are awful to get right!}%
\\
\thead{Taxon} &
\mcc{Height\\ (m)} &
\mcc{DBH\\ (cm)} &
\mcc{Moss\\ Cover\\ (\%)} \\
\endfirsthead
Acer pseudoplatanus & 14.8 & 4.1 & 35.33 & 20.19 & 11.5 & 16.8 \\
Acer platanoides & 14.4 & 4.2 & 100.33 & 15.28 & 18.0 & 20.8 \\
Picea abies & 14.8 & 3.8 & 32.44 & 13.37 & 0.3 & 0.8 \\r
\end{longtable}
\end{document}
这使:
- 或者使
S
列更宽,例如增加整数和小数位数:
\documentclass[]{article}
\usepackage{siunitx}
\usepackage{longtable}
\newcommand\mcc[1]{\multicolumn{2}{c}{\textbf{#1}}}
%------------- show page layout. don't use this in real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\section*{Table with $\pm$ as column separator }
\begingroup
%\setlength\tabcolsep{3pt}
\begin{longtable}{@{}
>{\itshape}l
S[table-format=4.1]@{$\,\pm\,$}S[table-format=1.4]%
S[table-format=3.2]@{$\,\pm\,$}S[table-format=2.3]%
S[table-format=6.1]@{$\,\pm\,$}S[table-format=2.6]%
@{}}
\caption{The entries of this table are centered nicely, but the distances are awful to get right!}%
\\
\text{Taxon} &
\mcc{Height (m)} &
\mcc{DBH (cm)} &
\mcc{Moss Cover (\%)} \\
\endfirsthead
Acer pseudoplatanus & 14.8 & 4.1 & 35.33 & 20.19 & 11.5 & 16.8 \\
Acer platanoides & 14.4 & 4.2 & 100.33 & 15.28 & 18.0 & 20.8 \\
Picea abies & 14.8 & 3.8 & 32.44 & 13.37 & 0.3 & 0.8 \\
\end{longtable}
\end{document}
这使:
(红线表示页面布局)
无关:
在阅读了问题的编辑后,我认为下一个解决方案可能更正确:
此建议的 mwe 是:
\documentclass{article}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{booktabs, longtable}
\newcommand\mcfour[1]{\multicolumn{4}{c}{\textbf{#1}}}
%------------- show page layout. don't use this in real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\section*{new version of table}
\begingroup
\small
\setlength\tabcolsep{0pt}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\renewcommand\cmidrulekern{2pt}
\begin{longtable}{@{\extracolsep{\fill}}
>{\itshape}l
*{3}{S[table-format=2.1]
S[table-format=3.1]
S[table-format=2.1]
S[table-format=2.2]}
}
\caption{Results of observation, numbers are dummy} \\
\toprule
& \mcfour{Height (m)}
& \mcfour{DBH (cm)}
& \mcfour{Moss Cover (\%)} \\
\cmidrule(lr){2-5}\cmidrule(lr){6-9}\cmidrule(lr){10-13}
\text{Taxon}
& {min} & {max} & {mean}& {$\mu_{1/2}$}
& {min} & {max} & {mean}& {$\mu_{1/2}$}
& {min} & {max} & {mean}& {$\mu_{1/2}$} \\
\midrule
\endfirsthead
\bottomrule
\endfoot
Acer pseudoplatanus
& 10.0 & 18.39 & 14.8 & 15.5
& 10.0 & 57.00 & 35.33 & 33,15
& 0.0 & 28.32 & 10.5 & 16.8 \\
\end{longtable}
\end{document}
(其中$\mu_{1/2}$
表示median
)。
答案2
巧合的是,今天我自己也遇到了类似的问题。
目前我使用它\makebox[0pt]{\textbf{DBH (cm)}}
作为一种解决方法。但是这需要手动在列之间添加空间...
\documentclass[]{article}
\usepackage{siunitx}
\usepackage{longtable}
\sisetup{separate-uncertainty, multi-part-units=single, bracket-numbers=false, range-phrase=--, range-units=single}
\newcommand{\ErrRange}[2]{\SI{#1(#2)}{}}
\begin{document}
%%%%%%%%%%%%%% TABLE 1 %%%%%%%%%%%%%%
\section*{Table with $\pm$ as column separator }
\begin{longtable}{
>{\itshape}p{3.5cm}
S[table-format=2.1]@{\,\( \pm \)\,}S[table-format=1.1]%
p{0.2em}S[table-format=3.2]@{\,\( \pm \)\,}S[table-format=2.2]%
p{1em}S[table-format=2.1]@{\,\( \pm \)\,}S[table-format=2.1]%
}
\caption{The entries of this table are centered nicely, but the distances are awful to get right!}%
\\
\multicolumn{1}{l}{\textbf{Taxon}} &
\multicolumn{2}{c}{\makebox[0pt]{\textbf{Height (m)}}} & &
\multicolumn{2}{c}{\makebox[0pt]{\textbf{DBH (cm)}}} & &
\multicolumn{2}{c}{\makebox[0pt]{\textbf{Moss Cover (\%)}}}\\
\endfirsthead
Acer pseudoplatanus & 14.8 & 4.1 && 35.33 & 20.19 & &11.5 & 16.8 \\
Acer platanoides & 14.4 & 4.2 && 100.33 & 15.28 & &18.0 & 20.8 \\
Picea abies & 14.8 & 3.8 && 32.44 & 13.37 & & 0.3 & 0.8 \\
\end{longtable}
\end{document}