# -*- coding: utf-8 -*- """Tools for handling LaTeX. Authors: * Brian Granger """ #----------------------------------------------------------------------------- # Copyright (c) 2010, IPython Development Team. # # Distributed under the terms of the Modified BSD License. # # The full license is in the file COPYING.txt, distributed with this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- from StringIO import StringIO from base64 import encodestring #----------------------------------------------------------------------------- # Tools #----------------------------------------------------------------------------- def latex_to_png(s, encode=True): """Render a LaTeX string to PNG using matplotlib.mathtext. Parameters ---------- s : str The raw string containing valid inline LaTeX. encode : bool, optional Should the PNG data bebase64 encoded to make it JSON'able. """ from matplotlib import mathtext mt = mathtext.MathTextParser('bitmap') f = StringIO() mt.to_png(f, s, fontsize=12) bin_data = f.getvalue() if encode: bin_data = encodestring(bin_data) return bin_data _data_uri_template_png = """%s""" def latex_to_html(s, alt='image'): """Render LaTeX to HTML with embedded PNG data using data URIs. Parameters ---------- s : str The raw string containing valid inline LateX. alt : str The alt text to use for the HTML. """ base64_data = latex_to_png(s, encode=True) return _data_uri_template_png % (base64_data, alt)