我有一张表,其中的值从统计软件导出,其中值的格式如下(见下面的示例):
有些(非常小的)采用科学计数法,有些则采用“正常”十进制计数法。
\begin{tabular}{r}
3,158722 \\
-0,00061 \\
6,28E-05 \\
0,000303 \\
1,67E-04 \\
0,000175 \\
-0,00017 \\
0,000025 \\
-0,00012 \\
-7,7E-05 \\
-0,00042 \\
-0,0005 \\
0,128871 \\
-0,00689 \\
0,004255 \\
-0,00245 \\
0,010475 \\
0,007083 \\
0,000852 \\
0,004583 \\
-0,00042 \\
0,002032 \\
-0,00111 \\
0,000556 \\
12,53887 \\
0,0024 \\
-0,00387 \\
0,002836 \\
-0,00052 \\
-0,00022 \\
5,41E-05 \\
-0,00063 \\
3,17E-04 \\
0,000187 \\
-0,08153 \\
-0,07881 \\
0,316826 \\
0,001066 \\
0,009783 \\
-0,02701 \\
0,006054 \\
0,004167 \\
\end{tabular}%
- 我如何定义有意义的数字格式?
- 是否可以
siunitx
将十进制和科学计数法合并到一列中?
如果可以,我该如何定义何时使用科学计数法,何时不使用?
答案1
虽然siunitx
它擅长对齐一系列类似格式的数字,但它不太适合这种混合输入。我最初的想法是
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{S[table-format = -1.6e1, table-align-exponent = false]}
3,158722 \\
-0,00061 \\
6,28E-05 \\
0,000303 \\
1,67E-04 \\
0,000175 \\
-0,00017 \\
0,000025 \\
-0,00012 \\
-7,7E-05 \\
-0,00042 \\
-0,0005 \\
0,128871 \\
-0,00689 \\
0,004255 \\
-0,00245 \\
0,010475 \\
0,007083 \\
0,000852 \\
0,004583 \\
-0,00042 \\
0,002032 \\
-0,00111 \\
0,000556 \\
12,53887 \\
0,0024 \\
-0,00387 \\
0,002836 \\
-0,00052 \\
-0,00022 \\
5,41E-05 \\
-0,00063 \\
3,17E-04 \\
0,000187 \\
-0,08153 \\
-0,07881 \\
0,316826 \\
0,001066 \\
0,009783 \\
-0,02701 \\
0,006054 \\
0,004167 \\
\end{tabular}
\end{document}
但这样右边距就会有太多空间。也许需要一个新的选项来siunitx
处理这种情况。
一种替代方法是使用类似于dcolumn
包的策略,使,
和E
在数学模式下处于活动状态:
\documentclass{article}
\usepackage{array}
\newbox\tabboxa
\newbox\tabboxb
\newcommand*\tabalignstart{%
\setbox\tabboxa=\hbox{$-1$}%
\setbox\tabboxa=\hbox to \wd\tabboxa
\bgroup
$
\lccode`\~=`\,\relax
\mathcode`\,="8000%
\lowercase{\def~}%
{%
$%
\egroup
\setbox\tabboxb=\hbox
\bgroup
$
\lccode`\~=`\E\relax
\mathcode`\E="8000%
\lowercase{\def~}####1####2####3%
{\times 10^{####1####3}}%
.
}%
\hfill
}
\newcommand*\tabalignstop{%
$
\hfil
\egroup
\box\tabboxa
\box\tabboxb
}
\begin{document}
\begin{tabular}{>{\tabalignstart}l<{\tabalignstop}}
3,158722 \\
-0,00061 \\
6,28E-05 \\
0,000303 \\
1,67E-04 \\
0,000175 \\
-0,00017 \\
0,000025 \\
-0,00012 \\
-7,7E-05 \\
-0,00042 \\
-0,0005 \\
0,128871 \\
-0,00689 \\
0,004255 \\
-0,00245 \\
0,010475 \\
0,007083 \\
0,000852 \\
0,004583 \\
-0,00042 \\
0,002032 \\
-0,00111 \\
0,000556 \\
12,53887 \\
0,0024 \\
-0,00387 \\
0,002836 \\
-0,00052 \\
-0,00022 \\
5,41E-05 \\
-0,00063 \\
3,17E-04 \\
0,000187 \\
-0,08153 \\
-0,07881 \\
0,316826 \\
0,001066 \\
0,009783 \\
-0,02701 \\
0,006054 \\
0,004167 \\
\end{tabular}
\end{document}
当然,问题在于没有数字分隔符。