1

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

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 终端和 rxvt-unicode 终端中都尝试了这段代码,但都没有正确显示多级括号。在终端上,我得到了括号应该在的矩形符号。qtconsole 更糟糕,因为它没有显示括号。

在此处输入图像描述

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

4

1 回答 1

1

pprint默认情况下使用 Unicode 字符打印括号,例如

        2
⎛     2⎞ 
⎝a - b ⎠ 

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

我的建议:

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

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

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

于 2016-02-26T19:46:20.830 回答