1

我使用 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 输出。

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

4

2 回答 2

2

我只想把对我有用的解决方案放在这里。马特的回答不知何故包括它:我想要的是一个创建漂亮的乳胶打印输出的电话。下面的工作:

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

display(sympy.symbols("alpha"))

如果这个片段被调用,例如

%run "filename.py"

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

于 2015-01-20T16:13:44.583 回答
0

在许多情况下,我认为返回对象(触发显示挂钩)和显示它之间存在混淆。is 是相同的区别

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

于 2013-12-11T09:41:06.367 回答