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

How to render large parenthesis correctly in sympy?

我正在尝试使用 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 更糟糕,因为它不显示括号。

当表达式变得更复杂时,这会非常混乱。如果我遗漏了什么或者是否可以配置 sympy 以更好地显示,请告诉我。

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

        2
⎛     2⎞ 
⎝a - b ⎠ 

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

我的建议:

  • 安装 DejaVu Sans Mono 并将您的 qtconsole 字体设置为该字体(参见 )。根据我的经验,DejaVu Sans Mono 是 SymPy 使用的 Unicode 字符的最佳字体。

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

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