我正在尝试在 Sympy 中 pprint() 一个我称为 barphi 的变量。我想要得到的是
$\bar{\phi}$
当打印为pprint(barphi)
.
我试试
barphy = Symbol('\bar{phi}')
但它不起作用。有什么帮助吗?提前致谢。
SymPy 邮件列表上已对此进行了回答。
你写的有两个问题
首先,Python 将\
字符串中的 + 字符转换为转义。您的\b
字符串中的 成为退格键(请参阅https://en.wikipedia.org/wiki/ASCII#ASCII_control_code_chart)。
您需要转义\
,即使用'\\bar{\\phi}$'
,或者更容易,如果您不关心转义,请使用原始字符串,这只是意味着r
在引号前面放一个,例如r'\bar{\phi}'
。
其次,如果你想获得 LaTeX,pprint()
就不会这样做(pprint
漂亮的打印到 2D 文本)。您应该使用init_printing()
在笔记本中启用 LaTeX 打印。
最后,正如 Julien Rioux 在邮件列表中指出的那样,您只需将符号命名为phibar
,SymPy 会自动将其呈现为\bar{\phi}
,即使在 Unicode 中您也可以在此处看到
In [11]: Symbol('phibar')
Out[11]: φ̅
如果您仍然想获取乳胶代码而不是打印它,您可以通过以下方式进行:
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}}}'"