1 # -*- coding: utf-8 -*-
2 from __future__ import unicode_literals
6 from librarian import get_resource
7 from . import TreeEmbed, create_embed, downgrades_to
10 class MathML(TreeEmbed):
11 @downgrades_to('application/x-latex')
14 >>> print(MathML(etree.fromstring(
15 ... '<mat>a < b</mat>'
16 ... )).to_latex().data.strip())
19 >>> print(MathML(etree.fromstring(
20 ... '<mat>< & &lt; A</mat>'
21 ... )).to_latex().data.strip())
25 xslt = etree.parse(get_resource('res/embeds/mathml/mathml2latex.xslt'))
26 output = self.tree.xslt(xslt)
27 text = six.text_type(output)
28 # Workaround for entities being preserved in output.
29 # But there should be a better way.
30 text = text.replace('<', '<').replace('&', '&')
31 return create_embed('application/x-latex', data=text)