如何在sympy中正确渲染大括号?

时间:2016-02-26 10:42:16

标签: python latex sympy pprint

我试图使用pprint在qtconsole或终端中呈现简单的代数表达式,但结果几乎是误导性的。这是一个最小的例子

from sympy import pprint, simplify, init_printing
from sympy.abc import a, b

init_printing()
c = a - b**2
pprint(simplify(c**2))
print(simplify(c**2))

我在jupyer qtconsole和rxvt-unicode终端中尝试了这个代码,两者都没有正确显示多级父级。在终端上,我得到括号应该是矩形符号。 qtconsole甚至更糟糕,因为它没有显示父母。

enter image description here

当表达式变得更复杂时,这非常令人困惑。如果我遗漏了某些内容或者是否可以将sympy配置为更好地显示,请告诉我。

1 个答案:

答案 0 :(得分:1)

默认情况下,

pprint使用Unicode字符打印括号,例如

        2
⎛     2⎞ 
⎝a - b ⎠ 

您的qtconsole似乎没有呈现它们,这可能意味着您使用的字体不支持它们。

我的建议:

  • 安装DejaVu Sans Mono并将qtconsole字体设置为该字体(请参阅https://stackoverflow.com/a/18904744/161801)。根据我的经验,DejaVu Sans Mono是SymPy使用的Unicode字符的最佳字体。

  • 在您的计算机上安装LaTeX。如果在qtconsole中运行init_printing SymPy检测到安装了LaTeX,它将使用它呈现数学运算(pprint仍将呈现文本)。

如果以上都不是您的选项,则解决方法是使用pprint(expr, use_unicode=False),它将仅使用ASCII字符打印表达式。它看起来不太好,但它应该以任何等宽字体正确呈现。