Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Added mdboom's math_to_image from matplotlib.

  • Loading branch information...
commit 290c0f44f615930faa345c649ed4f6ccf144b896 1 parent e7df0ac
Brian E. Granger authored

Showing 1 changed file with 48 additions and 0 deletions. Show diff stats Hide diff stats

  1. +48 0 IPython/lib/latextools.py
48 IPython/lib/latextools.py
@@ -45,6 +45,7 @@ def latex_to_png(s, encode=False):
45 45 bin_data = encodestring(bin_data)
46 46 return bin_data
47 47
  48 +
48 49 _data_uri_template_png = """<img src="data:image/png;base64,%s" alt=%s />"""
49 50
50 51 def latex_to_html(s, alt='image'):
@@ -60,3 +61,50 @@ def latex_to_html(s, alt='image'):
60 61 base64_data = latex_to_png(s, encode=True)
61 62 return _data_uri_template_png % (base64_data, alt)
62 63
  64 +
  65 +# From matplotlib, thanks to mdboom. Once this is in matplotlib releases, we
  66 +# will remove.
  67 +def math_to_image(s, filename_or_obj, prop=None, dpi=None, format=None):
  68 + """
  69 + Given a math expression, renders it in a closely-clipped bounding
  70 + box to an image file.
  71 +
  72 + *s*
  73 + A math expression. The math portion should be enclosed in
  74 + dollar signs.
  75 +
  76 + *filename_or_obj*
  77 + A filepath or writable file-like object to write the image data
  78 + to.
  79 +
  80 + *prop*
  81 + If provided, a FontProperties() object describing the size and
  82 + style of the text.
  83 +
  84 + *dpi*
  85 + Override the output dpi, otherwise use the default associated
  86 + with the output format.
  87 +
  88 + *format*
  89 + The output format, eg. 'svg', 'pdf', 'ps' or 'png'. If not
  90 + provided, will be deduced from the filename.
  91 + """
  92 + from matplotlib import figure
  93 + # backend_agg supports all of the core output formats
  94 + from matplotlib.backends import backend_agg
  95 + from matplotlib.font_manager import FontProperties
  96 + from matplotlib.mathtext import MathTextParser
  97 +
  98 + if prop is None:
  99 + prop = FontProperties()
  100 +
  101 + parser = MathTextParser('path')
  102 + width, height, depth, _, _ = parser.parse(s, dpi=72, prop=prop)
  103 +
  104 + fig = figure.Figure(figsize=(width / 72.0, height / 72.0))
  105 + fig.text(0, depth/height, s, fontproperties=prop)
  106 + backend_agg.FigureCanvasAgg(fig)
  107 + fig.savefig(filename_or_obj, dpi=dpi, format=format)
  108 +
  109 + return depth
  110 +

0 comments on commit 290c0f4

Please sign in to comment.
Something went wrong with that request. Please try again.