运行外部文件时在 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 使用标准库“记录”记录到文件?
在 jupyter qtconsole 中自动运行 %matplotlib inline
TensorFlow 在 Python CLI 和 IPython CLI 中导入,但不在 IPython QtConsole 中