Fix XML entities left from MathML.
authorRadek Czajka <rczajka@rczajka.pl>
Thu, 28 May 2020 15:10:43 +0000 (17:10 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Thu, 28 May 2020 15:10:43 +0000 (17:10 +0200)
librarian/embeds/mathml.py

index bd58baf..564a9f4 100644 (file)
@@ -10,6 +10,17 @@ from . import TreeEmbed, create_embed, downgrades_to
 class MathML(TreeEmbed):
     @downgrades_to('application/x-latex')
     def to_latex(self):
+        """
+        >>> print(MathML(etree.fromstring('<mat>a &lt; b</mat>')).to_latex().data.strip())
+        a < b
+
+        >>> print(MathML(etree.fromstring('<mat>&lt; &amp; &amp;lt; &#65;</mat>')).to_latex().data.strip())
+        < & &lt; A
+
+        """
         xslt = etree.parse(get_resource('res/embeds/mathml/mathml2latex.xslt'))
         output = self.tree.xslt(xslt)
-        return create_embed('application/x-latex', data=six.text_type(output))
+        text = six.text_type(output)
+        # Workaround for entities being preserved in output. But there should be a better way.
+        text = text.replace('&lt;', '<').replace('&amp;', '&')
+        return create_embed('application/x-latex', data=text)