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

Posted

技术标签:

【中文标题】运行外部文件时在 ipython qtconsole 中进行 LaTeX 打印【英文标题】:LaTeX printing in ipython qtconsole when running external file 【发布时间】:2013-12-29 03:13:17 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

display(sympy.symbols("alpha"))

如果这个 sn-p 被调用,例如与

%run "filename.py"

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

【讨论】:

【参考方案2】:

在许多情况下,我认为返回一个对象(触发显示挂钩)和显示它之间存在混淆。 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

【讨论】:

感谢您的回答! 感谢您的回答!这意味着在 qtconsole 中调用的显示挂钩方法能够进行 LaTeX 输出,但我在脚本中使用了不同的方法(pprint)。如何手动调用显示挂钩方法。顺便提一句。 alpha 打印 LaTeX display_latex(alpha) 打印 unicode 在脚本显示中简单使用:IPython.display import display display(alpha) #或类似 display_something 将为您调用 display-hook-something。尝试自己获取 display_hook 将调用的方法并不总是那么容易也没有意义。

以上是关于运行外部文件时在 ipython qtconsole 中进行 LaTeX 打印的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ipython qtconsole 使用标准库“记录”记录到文件?

指定 ipython 配置文件 qtconsole

使用 PyQt5 设置 IPython Qtconsole

在 jupyter qtconsole 中自动运行 %matplotlib inline

TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中

在 IPython qtconsole 中确定终端宽度