如何在ipython中使用sympy.pprint()进行美观打印
我想在Sympy中使用pprint()来打印一个我叫barphi的变量。我想要的结果是
$\bar{\phi}$
当我用 pprint(barphi)
打印的时候。
我尝试了
barphy = Symbol('\bar{phi}')
但是没有成功。有人能帮帮我吗?谢谢!
2 个回答
1
如果你还是想获取latex代码,而不是直接打印出来,你可以这样做:
In [2]: from sympy.printing.latex import latex, translate
In [3]: latex(translate('phibar'),mode='inline')
Out[3]: '$\\bar{\\phi}$'
你可以在这里查看latex函数的文档:这里
关于translate函数的文档可以在这里找到:
Check for a modifier ending the string. If present, convert the
modifier to latex and translate the rest recursively.
Given a description of a Greek letter or other special character,
return the appropriate latex.
Let everything else pass as given.
>>> from sympy.printing.latex import translate
>>> translate('alphahatdotprime')
"{\\dot{\\hat{\\alpha}}}'"
2
这个问题在SymPy邮件列表上已经有人回答过了。
你写的内容有两个问题。
首先,Python在字符串中会把\
和后面的字符当作转义字符处理。你字符串中的\b
会变成一个退格符(你可以查看这个链接了解更多)。
你需要对\
进行转义,也就是用'\\bar{\\phi}$'
,或者更简单的方法是,如果你不想处理转义,可以使用原始字符串,只需在引号前加一个r
,像这样r'\bar{\phi}'
。
第二,如果你想得到LaTeX格式的输出,pprint()
是无法做到的(pprint
是用来将内容美观地打印成二维文本的)。你应该使用init_printing()
来在笔记本中启用LaTeX打印。
最后,正如Julien Rioux在邮件列表中提到的,你可以直接把符号命名为phibar
,这样SymPy会自动将其渲染为\bar{\phi}
,你甚至可以在Unicode中看到这一点。
In [11]: Symbol('phibar')
Out[11]: φ̅