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

如何使用sympy.pprint()在ipython中进行花式打印,python,sympy,pprint,Python,Sympy,Pprint,我试图在Sympy中使用一个变量pprint(),我称之为barphi。我想要的是 $\bar{\phi}$ 打印为pprint(barphi)时 我试着 barphy = Symbol('\bar{phi}') 但它不起作用。有什么帮助吗?提前感谢。这已在 你写的东西有两个问题 首先,Python将字符串中的\+字符转换为转义字符。字符串中的\b变为退格(请参阅) 您需要转义\,即使用'\\bar{\\phi}$',或者,更简单的是,如果您不关心转义,则使用原始字符串,这意味着在引号前面放

我试图在Sympy中使用一个变量pprint(),我称之为barphi。我想要的是

$\bar{\phi}$
打印为
pprint(barphi)

我试着

barphy = Symbol('\bar{phi}')
但它不起作用。有什么帮助吗?提前感谢。

这已在

你写的东西有两个问题

首先,Python将字符串中的
\
+字符转换为转义字符。字符串中的
\b
变为退格(请参阅)

您需要转义
\
,即使用
'\\bar{\\phi}$'
,或者,更简单的是,如果您不关心转义,则使用原始字符串,这意味着在引号前面放一个
r
,如
r'\bar{\phi}

第二,如果您想获得LaTeX,
pprint()
将不起作用(
pprint
pretty prints to 2D text)。您应该使用
init_printing()
在笔记本中启用LaTeX打印

最后,正如Julien Rioux在邮件列表中指出的,您可以将符号命名为
phibar
,SymPy将自动将其呈现为
\bar{\phi}
,即使在Unicode中也可以看到这一点

In [11]: Symbol('phibar')
Out[11]: φ̅

如果您仍然希望获取latex代码而不是打印代码,可以通过以下方式实现:

In [2]: from sympy.printing.latex import latex, translate

In [3]: latex(translate('phibar'),mode='inline')
Out[3]: '$\\bar{\\phi}$'
您可以查看latex功能的文档

翻译功能的文档如下

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}}}'"

非常感谢@asmurer的回答。但是,在我的系统中,它的工作方式与在您的系统中不同,例如,在[12]中,我没有在phi上获得bar:pprint(Symbol('phibar'))phibar在[13]:pprint(Symbol('phi'))φ中,您需要在支持Unicode的环境中执行此操作,包括组合字符。不要忘记运行
init\u printing()