latextools.py
62 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r3279 | # -*- 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 = """<img src="data:image/png;base64,%s" alt=%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) | ||||