3

我正在尝试在 Sympy 中 pprint() 一个我称为 barphi 的变量。我想要得到的是

$\bar{\phi}$

当打印为pprint(barphi).

我试试

barphy = Symbol('\bar{phi}')

但它不起作用。有什么帮助吗?提前致谢。

4

2 回答 2

2

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]: φ̅
于 2014-04-05T05:44:12.353 回答
1

如果您仍然想获取乳胶代码而不是打印它,您可以通过以下方式进行:

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}}}'"
于 2014-04-05T09:02:28.370 回答