blob: ca3eb8e03c7e235265fa299b596e54adf743ce5c [file] [log] [blame]
# Copied from mistletoe.contrib
# <https://github.com/miyuchina/mistletoe/blob/master/contrib/mathjax.py>
#
# mistletoe is licenced under the MIT license see LICENSE.mistletoe
#
"""
Provides MathJax support for rendering Markdown with LaTeX to html.
Taken from mistletoe.contrib <https://github.com/miyuchina/mistletoe/blob/master/contrib/mathjax.py>
"""
from mistletoe.html_renderer import HTMLRenderer
from mistletoe.latex_renderer import LaTeXRenderer
class MathJaxRenderer(HTMLRenderer, LaTeXRenderer):
"""
MRO will first look for render functions under HTMLRenderer,
then LaTeXRenderer.
"""
mathjax_src = '<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script>\n'
def render_math(self, token):
"""
Ensure Math tokens are all enclosed in two dollar signs.
"""
if token.content.startswith('$$'):
return self.render_raw_text(token)
return '${}$'.format(self.render_raw_text(token))
def render_document(self, token):
"""
Append CDN link for MathJax to the end of <body>.
"""
return super().render_document(token) + self.mathjax_src