使用Python中的格式字符串,我可以很容易地在“科学记数法”打印数量,例如
>> print '%g'%1e9
1e+09
什么是格式化LaTeX的格式数量最简单的方式,即1 \ times10 ^ {+ 09}?
使用Python中的格式字符串,我可以很容易地在“科学记数法”打印数量,例如
>> print '%g'%1e9
1e+09
什么是格式化LaTeX的格式数量最简单的方式,即1 \ times10 ^ {+ 09}?
该siunitx乳胶包通过允许您直接使用Python浮点值,而不诉诸解析得到的字符串,使之成为有效的LaTeX的解决了这个给你。
>>> print "\\num{{{0:.2g}}}".format(1e9)
\num{1e+09}
当乳胶文件被编译时,上面的代码会变成 。 作为andybuckley在评论中指出,加号可能不会被siunitx(我没有测试它)所接受,因此可能有必要做一个.repace("+", "")
的结果。
如果使用siunitx
是莫名其妙假表,写这样的自定义函数:
def latex_float(f):
float_str = "{0:.2g}".format(f)
if "e" in float_str:
base, exponent = float_str.split("e")
return r"{0} \times 10^{{{1}}}".format(base, int(exponent))
else:
return float_str
测试:
>>> latex_float(1e9)
'1 \\times 10^{9}'
你可以写一个frexp10
功能:
def frexp10(x):
exp = int(math.floor(math.log10(abs(x))))
return x / 10**exp, exp
在格式LaTeX的风格则是:
'{0}^{{{1:+03}}}'.format(*frexp10(-1.234e9))
安装num2tex :
pip install num2tex
并把它作为这样:
>>> from num2tex import num2tex
>>> '{:.0e}'.format(num2tex(1e9))
'1 \\times 10^{9}'
num2tex
从继承str
所以format
功能可以以相同的方式使用。
免责声明:使用(和upvoting)后Lauritz五Thaulow的答案了一段时间(对于Jupyter,Matplotlib等),我认为这将是我的工作流程,编写一个简单的Python模块更好,所以我创建了num2tex GitHub上 ,并在其注册的PyPI 。 我很想得到关于如何使之更加有用的一些反馈。