12

I am using Google's Colaboratory platform to run python in a Jupyter notebook. In standard Jupyter notebooks, the output of sympy functions is correctly typeset Latex, but the Colaboratory notebook just outputs the Latex, as in the following code snippet:

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

results in Latex output like this:

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

The answer cited in these questions, Rendering LaTeX in output cells in Colaboratory and LaTeX equations do not render in google Colaboratory when using IPython.display.Latex doesn't fix the problem. While it provides a method to display Latex expressions in the output of a code cell, it doesn't fix the output from the built-in sympy functions.

Any suggestions on how to get sympy output to properly render? Or is this a problem with the Colaboratory notebook?

Stephen Hall
  • 121
  • 1
  • 5

3 Answers3

10

I have just made this code snippet to make sympy works like a charm in 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)

Put it after you imported sympy This one basically tell sympy to embed mathjax library using colab api before they actually output any syntax.

Michael Lee
  • 467
  • 5
  • 14
3

You need to include MathJax library before display. Set it up in a cell like this first.

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

Later, you include javascript(url=url) before displaying:

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

Then, it will display correctly.

korakot
  • 37,818
  • 16
  • 123
  • 144
1

Using colab's mathjax and setting the configuration file to TeX-MML-AM_HTMLorMML worked for me. Below is the code:

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) 
user8664964
  • 176
  • 4