2013-12-11 2 views
0

Я решил аналитическую проблему, используя sympy и сохранил все в файле .py. Когда я запускаю код (который включает в себя init_printing()) с ipython filename.py, я получаю хороший вывод unicode всякий раз, когда я печатаю в файле с помощью pprint. Все идет нормально.Печать LaTeX в ipython qtconsole при запуске внешнего файла

Когда я импортирую sympy в qtconsole ipython, я могу получить хорошие выходы LaTeX, как указано в документации sympy. Но я получаю это хорошая печать, только если интерактивная консоль делает prining, т.е .:

Integral(sqrt(1/x), x) 

произвел LaTeX изображение, в то время как

pprint(Integral(sqrt(1/x), x)) 

действительно производит вывод Юникода.

При выполнении кода из файла с

run filename.py 

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

Кто-нибудь видит решение? Большое спасибо.

ответ

0

Как и во многих случаях, я думаю, что существует путаница между возвратом объекта (который вызывает захват отображения) и его отображением. это одно и то же разница, чем

def funp(): 
    print 1 

и

def funr(): 
    return 1 

И будет "шоу" 1, если выполняется interactivly, но не в скрипте. В IPython вы можете увидеть разницу с приглашением Out [], которое появляется или не зависит от того, будет ли оно возвращено или отображено. Я думаю, что в вас случае вам нужно from IPython.display import display_pretty

In[1]: display_pretty(I) 
⌠   
⎮  ___ 
⎮ ╱ 1  
⎮ ╱ ─ dx 
⎮ ╲╱ x  
⌡ 

или, может быть from IPython.display import display_latex

+0

Спасибо за ответ! – Abschiedsstein

+0

Спасибо за ответ! Это означает, что метод захвата экрана, который вызывается в qtconsole, может выполнять вывод LaTeX, но я использую в сценарии другой метод (pprint). Как я могу вручную вызвать метод привязки дисплея. КПП. альфа печатает LaTeX display_latex (альфа) печатает UNICODE – Abschiedsstein

+0

Просто используйте на дисплее сценария: IPython.display дисплей импорта дисплей (альфа) #or подобный – Abschiedsstein

1

Я просто хочу, чтобы поставить решение, которое работало для меня здесь. Ответ Мэтта как-то включает в себя: то, что я хотел, это вызов, который создает приятную латексную распечатку. Работает:

from IPython.display import display 
import sympy 
sympy.init_printing() 

display(sympy.symbols("alpha")) 

Если этот фрагмент называется, например, с

%run "filename.py" 

в qtconsole или ipython ноутбук, альфа будет отображаться красиво.