Как правильно сделать большие скобки в Sympy?

Я пытаюсь сделать простые алгебраические выражения в 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, и оба неправильно отображают многоуровневые круглые скобки. На терминале я получаю прямоугольные символы там, где должны быть скобки. qtconsole еще хуже, так как не показывает скобок.

введите описание изображения здесь

Это очень запутанно, когда выражения становятся более сложными. Пожалуйста, дайте мне знать, если я что-то упустил или симпози можно настроить для отображения этого лучше.

1 ответ

Решение

pprint использует символы Юникода для печати скобок по умолчанию, например

        2
⎛     2⎞ 
⎝a - b ⎠ 

Кажется, ваша qtconsole не отображает их, что, вероятно, означает, что используемый вами шрифт не поддерживает их.

Мои рекомендации:

  • Установите DejaVu Sans Mono и установите для него шрифт qtconsole (см. /questions/28450686/izmenit-nastrojki-jupyter-qtconsole/28450717#28450717). DejaVu Sans Mono - лучший шрифт для символов Unicode, используемых SymPy, по моему опыту.

  • Установите LaTeX на свой компьютер. Если вы бежите init_printing в qtconsole SymPy обнаруживает, что LaTeX установлен, он будет отображать математику, используя его (pprint будет по-прежнему отображать текст).

Если ни один из вышеперечисленных вариантов не подходит для вас, используйте обходной путь pprint(expr, use_unicode=False), который будет печатать выражение, используя только символы ASCII. Это не будет выглядеть так красиво, но должно отображаться правильно любым моноширинным шрифтом.

Другие вопросы по тегам