I’d like to override Base.show() for a custom type I defined, to displayed an object of the type as a math formula (MathJax / LaTeX) when using Jupyter notebook. How can this be done? I already know how to override Base.show() for the command line interface, but want to know how to exploit Jupyter’s math rendering capabilities.

Along those lines, defining Julia code with inline Latex math strings like \frac and rendering them as such in Jupyter would be nice too.

You can use `text/latex`

:

```
Base.show(io::IO, ::MIME"text/latex", x::MyObject) =
print(io, "\\frac{1}{1+2+3+4}")
```

or you can use markdown (either `text/markdown`

or via the `Markdown`

stdlib) with embedded equations if you need more flexible formatting.

You can put LaTeX in the docstrings of your Julia code and then it will render as equations in the Jupyter help.

Unfortunately this doesn’t seems to work for the latest versions of Julia (1.5.4) and Jupyter. Here’s my screenshot (click to enlarge).

I suspect there is some API change.

I think you need `$`

s.

You’re right, this worked (using $$ display environment):

```
Base.show(io::IO, ::MIME"text/latex", x::MyObject) =
print(io, "\$\$\\frac{1}{1+2+3+4}\$\$")
```

If it’s a more complicated pattern, and you want it to be a bit more explicit, you can use `Latexify`

and define a latexrecipe for your type. This will also be recursive:

```
@latexrecipe function f(m::MyType)
return :(1/(3+4a+5b))
end
julia> latexify(:(x=$(MyType()))
L"$x = \frac{1}{3 + 4a + 5b}$"
```

(I’m on my phone, take everything with a dash of cayenne)