2016-02-26 6 views
1

Я пытаюсь сделать простые алгебраические выражения в qtconsole или терминале, используя pprint, но результаты почти вводят в заблуждение. Вот минимальный примерКак правильно отобразить большие скобки в sympy?

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

enter image description here

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

ответ

1

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

 2 
⎛  2⎞ 
⎝a - b ⎠ 

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

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

  • Установка DejaVu Sans Mono и установить qtconsole шрифт, что (см https://stackoverflow.com/a/18904744/161801). DejaVu Sans Mono - лучший шрифт для символов Unicode, используемый SymPy, по моему опыту.

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

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

+0

Другой вариант - использовать ноутбук вместо qtconsole, который будет отображать математику с использованием MathJax (и не требует установки LaTeX). – asmeurer

+0

Шрифты DejaVu решили это для консоли qt, поэтому я предполагаю, что мой шрифт в теме может быть исправлен таким же образом. Мне нравится предложение ноутбука - оно действительно соответствует моему назначению, но, похоже, оно тоже испортило круглые скобки, несмотря на mathjax доступен! –