我有一些 Matlab 输出的数字,我想将它们显示为 LaTeX 中的表格。这些数字的形式为0.14190949656253118000
或0.01234e-3
,我想以科学计数法显示它们。我如何查找/编写一个宏,该宏的调用方式类似于\scn{0.14190949656253118000}
或\scn{0.01234e-3}
,结果为$1.41x10^{-1}$
或$1.23x10^{-5}$
。请注意,小数点后的位数应该是可配置的。
答案1
根据鲍里斯的回答:
\documentclass{article}
\usepackage[scientific-notation=true]{siunitx}
\listfiles
\begin{document}
%\num{0.14190949656253118000}
\num{0.1419094965}
\end{document}
但是,对于您的特定数字,低于 2.4n 的 siunitx 版本会返回“数字太大”错误,除非您将数字四舍五入(正如您最初指出的那样,但我忘记了)。这促使我编写了以下 MATLAB 函数,该函数将以您想要的精度打印您的数字的 LaTeX 代码:
函数 s=pp(x,n) % 以科学计数法漂亮地打印一个值 % 使用情况: s=pp(x,n) % 其中:xa浮点值 % n 是所需的小数位数 %s 是 x 的字符串表示形式,带有 n 位小数,并且 % 指数 k exponent=floor(log10(abs(x))); %适应负值 尾数=x/(10^指数); s=sprintf('$%*.*f \\times 10^{%d}$',n+3,n,尾数,指数); % 返回类似 '$1.42 \times 10^{-1}$' 的内容
例子:
>> s1=pp(0.14190949656253118000,2) s1 = $1.42 \times 10^{-1}$ >> s2=pp(0.01234e-3,3) s2 = $1.234 \times 10^{-5}$
但是,siunitx 和 Boris 的答案的任何最新版本对于四舍五入的数字都可以正常工作,并且 siunitx 2.4n 即使没有四舍五入也可以正常工作。
答案2
\num
例如来自的宏希尼奇就是这样。例如
\documentclass{article}
\pagestyle{empty}
\usepackage{siunitx}
\begin{document}
\num[round-precision=2,round-mode=figures]{0.1419094};
\num[round-precision=2,round-mode=figures,
scientific-notation=true]{0.1419094};
\num[round-precision=2,round-mode=figures,
scientific-notation=true]{0.1419094e-6};
\num[round-precision=2,round-mode=figures,
scientific-notation=engineering]{0.1419094e-6}
\end{document}
请注意,输入的数字过多可能会导致错误“数字太大”。
\num
此外,可以使用 为所有数字设置中的可选参数\sisetup
。