【问题标题】:Latex output from sympy does not correctly display in Google Colaboratory Jupyter notebooks来自 sympy 的乳胶输出无法在 Google Colaboratory Jupyter 笔记本中正确显示
【发布时间】:2019-01-31 06:16:53
【问题描述】:

我正在使用 Google 的 Colaboratory 平台在 Jupyter 笔记本中运行 python。在标准的 Jupyter 笔记本中,sympy 函数的输出是正确排版的 Latex,但 Colaboratory 笔记本只输出 Latex,如下面的代码 sn-p:

import numpy as np
import sympy as sp
sp.init_printing(use_unicode=True)
x=sp.symbols('x')
a=sp.Integral(sp.sin(x)*sp.exp(x),x);a

导致 Latex 输出如下:

$$\int e^{x} \sin{\left (x \right )}\, dx$$

Rendering LaTeX in output cells in ColaboratoryLaTeX equations do not render in google Colaboratory when using IPython.display.Latex 这些问题中引用的答案并不能解决问题。虽然它提供了一种在代码单元的输出中显示 Latex 表达式的方法,但它并没有修复内置 sympy 函数的输出。

关于如何获得 sympy 输出以正确呈现的任何建议?或者这是 Colaboratory notebook 的问题?

【问题讨论】:

    标签: latex jupyter-notebook google-colaboratory


    【解决方案1】:

    使用 colab 的 mathjax 并将配置文件设置为 TeX-MML-AM_HTMLorMML 对我有用。下面是代码:

    from sympy          import init_printing
    from sympy.printing import latex
    
    def colab_LaTeX_printer(exp, **options):  
        from google.colab.output._publish import javascript 
    
        url_ = "https://colab.research.google.com/static/mathjax/MathJax.js?"
        cfg_ = "config=TeX-MML-AM_HTMLorMML" # "config=default"
    
        javascript(url=url_+cfg_)
    
        return latex(exp, **options)
    # end of def
    
    init_printing(use_latex="mathjax", latex_printer=colab_LaTeX_printer) 
    

    【讨论】:

      【解决方案2】:

      我刚刚制作了这段代码 sn-p 以使 sympy 在 colab.research.googlr.com 中像魅力一样工作!!!

      def custom_latex_printer(exp,**options):
          from google.colab.output._publish import javascript
          url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=default"
          javascript(url=url)
          return sympy.printing.latex(exp,**options)
      init_printing(use_latex="mathjax",latex_printer=custom_latex_printer)
      

      在你导入 sympy 之后放 这一个基本上告诉 sympy 在实际输出任何语法之前使用 colab api 嵌入 mathjax 库。

      【讨论】:

      • NameError:未定义名称“init_printing”。我应该怎么做才能不收到此错误消息?
      • @vesszabo from sympy import init_printing 在顶部
      • 截至 2019 年 10 月 4 日,此答案与 google colab 中的 sympy 1.1.1 完美配合,但将 sympy 升级到 1.4 似乎无法正常工作。
      • user1228770 是对的。升级到 sympy 1.4 会使这个解决方案停止工作。关于为什么会发生这种情况的任何 cmets?
      • 你能在显示模式下成功显示方程式吗?即使仅针对 sympy 结果,我也只能获得内联模式
      【解决方案3】:

      您需要在显示之前包含 MathJax 库。首先在这样的单元格中设置它。

      from google.colab.output._publish import javascript
      url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=default"
      

      稍后,您在显示之前包含javascript(url=url)

      x=sp.symbols('x')
      a=sp.Integral(sp.sin(x)*sp.exp(x),x)
      javascript(url=url)
      a
      

      然后,它会正确显示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-16
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        相关资源
        最近更新 更多