如何在ipython中使用sympy.pprint()进行美观打印

3 投票
2 回答
1988 浏览
提问于 2025-04-18 01:11

我想在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]: φ̅

撰写回答