##// END OF EJS Templates
Lots of work on the display system, focused on pylab stuff....
Lots of work on the display system, focused on pylab stuff. * Moved the pprint attribute to PlainTextFormatter. * Added DisplayFormatter.plain_text_only for disabling all but the plain text formatting. This is now used by doctest_mode. * Remove result_display hook. * Fixed doctest_mode magic. * Refactored inline matplotlib backend to use new display system. * Added display formatter for matplotlib.figure.Figure objects. so the display system will show the svg for them. * Added display and display_png to the user's namespace in pylab. * Cleaned up pylabtools.py

File last commit:

r3279:c892f267
r3280:1bba7395
Show More
latextools.py
62 lines | 1.8 KiB | text/x-python | PythonLexer
# -*- 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)