【问题标题】:LaTeX printing in ipython qtconsole when running external file运行外部文件时在 ipython qtconsole 中进行 LaTeX 打印
【发布时间】:2024-01-03 09:42:01
【问题描述】:

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

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

【问题讨论】:

    标签: latex ipython qtconsole


    【解决方案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 将调用的方法并不总是那么容易也没有意义。
      最近更新 更多