siunitx 包避免写入 10^0

siunitx 包避免写入 10^0

我有一张用科学计数法表示数字的大表,我正在使用siunitx包,问题是一个数字是\SI{8.334e+00},然后我得到了8.334我想要的8.334x10^0(问题只存在于0指数上)。另一个问题是,我无法将 \SI{...} 放在表的最后一列,因为我收到编译错误:! Use of \@@array doesn't match its definition.

\documentclass[11pt,notitlepage]{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{ | c | c | c | c | c | }
\hline
$E_m$ & $\lambda_1^{\text{tp}}$ & $\lambda_1^{\text{ts}} $ \\ \hline
8.0e7 & \SI{5.8938e+01} & \SI{4.319571e+01} & \SI{3.606297e+01} & 8.514868e+01 \\ \hline
1.0e8 & \SI{5.3398e+01} & \SI{3.583252e+01} & \SI{2.919383e+01} & 8.174273e+01 \\ \hline
2.0e8 & \SI{4.1397e+01} & \SI{1.953532e+01} & \SI{1.495294e+01} & 7.493084e+01 \\ \hline
5.0e8 & \SI{3.2030e+01} & \SI{8.334998e+00} & \SI{6.070005e+00} & 7.084370e+01 \\ \hline
\end{tabular}
\end{document}

答案1

\SI需要参数。使用时\SI{1234} \\\\则将其读为第二个参数。这会导致错误,这并不奇怪。

为了得到零指数,使用

\sisetup{retain-zero-exponent = true}

我还建议使用S列来格式化数字——siunitx为表格中的数字提供了大量内容!一个优点:即使没有,数字也会对齐retain-zero-exponent

\documentclass[11pt,notitlepage]{article}
\usepackage{siunitx}
\sisetup{retain-zero-exponent}
\begin{document}
\begin{tabular}{ | S[table-format=1.1e1] | S[table-format=1.4e1] | *3{S[table-format=1.6e1] |} }
  \hline
    {$E_m$} & {$\lambda_1^{\text{tp}}$} & {$\lambda_1^{\text{ts}} $} && \\ \hline
    8.0e7 & 5.8938e+01 & 4.319571e+01 & 3.606297e+01 & 8.514868e+01 \\ \hline
    1.0e8 & 5.3398e+01 & 3.583252e+01 & 2.919383e+01 & 8.174273e+01 \\ \hline
    2.0e8 & 4.1397e+01 & 1.953532e+01 & 1.495294e+01 & 7.493084e+01 \\ \hline
    5.0e8 & 3.2030e+01 & 8.334998e+00 & 6.070005e+00 & 7.084370e+01 \\ \hline
\end{tabular}

\end{document}

在此处输入图片描述

(表格对于文本列来说太宽,但这是另一个问题。)

答案2

您需要使用retain-zero-exponentSIunitx 的设置。而我倾向于\num{}在显示没有单位的数字时使用。

\num[retain-zero-exponent=true]{8.334e+00}

相关内容