运行外部文件时在ipython qtconsole中打印LaTeX

时间:2013-12-11 08:33:08

标签: latex ipython qtconsole

我使用sympy解决了一个分析问题并将所有内容保存在.py文件中。当我用ipython filename.py运行代码(包括init_printing())时,每当我使用pprint在文件中打印时,我都会得到很好的unicode输出。到目前为止一切都很好。

当我在ipython qtconsole中导入sympy时,我可以得到漂亮的LaTeX输出,就像sympy的文档中所述。但是,只有当交互式控制台完成这项工作时,我才能获得良好的打印效果,即:

Integral(sqrt(1/x), x)

生成了一个LaTeX图像,而

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

会生成unicode输出。

使用

从文件运行代码时
run filename.py

我看到创建输出的唯一方法是使用pprint,即我没有得到LaTeX输出。

有没有人看到解决方案?非常感谢。

2 个答案:

答案 0 :(得分:1)

我只想在这里提出适合我的解决方案。 Matt的答案以某种方式包括它:我想要的是一个创建漂亮乳胶打印输出的电话。以下工作:

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

display(sympy.symbols("alpha"))

如果调用此代码段,例如与

%run "filename.py"

在qtconsole或ipython notebook中,alpha会很好地显示。

答案 1 :(得分:0)

在许多情况下,我认为返回一个对象(触发显示挂钩)和显示它之间存在混淆。是与

相同的区别
def funp():
    print 1

def funr():
    return 1

如果以交互方式执行,两者都将“显示”1,但不会在脚本中执行。在IPython中,您可以看到与Out []提示的区别,这些提示是否显示取决于返回或显示的内容。我想你需要from IPython.display import display_pretty

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

或者from IPython.display import display_latex