2014-01-07 2 views
25
from sympy import symbols, Function 
import sympy.functions as sym 
from sympy import init_printing 
init_printing(use_latex=True) 
from sympy import pprint 
from sympy import Symbol 

x = Symbol('x') 

# If a cell contains only the following, it will render perfectly. 
(pi + x)**2 

# However I would like to control what to print in a function, 
# so that multiple expressions can be printed from a single notebook cell. 
pprint((pi + x)**2) 

Я пробовал pprint, print, первый печатает только версию Юникода, а последняя не делает красивые отпечатки.Как красиво печатать в ноутбуке ipython через sympy? распечатывается только pprint Unicode версия

ответ

33

вам нужно использовать дисплей:

from IPython.display import display 

display(yourobject) 

Он будет выбрать соответствующее представление (текст/LaTex/PNG ...), в достаточно свежей версии IPython (6.0+) дисплей импортируются по умолчанию, все же мы рекомендуем явно импортировать его.

+3

Следует отметить, что для этого вам все равно нужно вызвать 'init_printing', так как это то, что регистрирует отображение LaTeX для объектов SymPy. – asmeurer

+0

Есть ли способ ограничить ширину вывода? Я пробовал с 'display (expr, width = 1000)' без успеха. – mmj

17

Проблема заключается в вашем заявлении init_printing. В записной книжке, вы не хотите, чтобы запустить латекс, вместо этого вы должны использовать MathJax, так что попробуйте вместо этого:

init_printing(use_latex='mathjax') 

Когда я использую это, я получаю нормальную симпатичную печать везде, даже когда у меня есть SymPy выражение как последняя строка ячейки.

+0

Почему вы не хотите запускать латекс в ноутбуке? Это предложение печатает юникодный отпечаток для меня. Какие версии ipython и sympy вы используете? Может быть связано с проблемой, упомянутой в http://stackoverflow.com/questions/32010945/is-sympy-pretty-printing-broken-in-new-jupyter-notebook –

Смежные вопросы