From: Radek Czajka Date: Thu, 28 May 2020 15:10:43 +0000 (+0200) Subject: Fix XML entities left from MathML. X-Git-Tag: 1.8.3~2 X-Git-Url: https://git.mdrn.pl/librarian.git/commitdiff_plain/bfd8ac40bed4535a91bfd645cbe80b47c827a8de?hp=b63b804c605433dde83600f6e6906a19bc8141b0 Fix XML entities left from MathML. --- diff --git a/librarian/embeds/mathml.py b/librarian/embeds/mathml.py index bd58baf..564a9f4 100644 --- a/librarian/embeds/mathml.py +++ b/librarian/embeds/mathml.py @@ -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('a < b')).to_latex().data.strip()) + a < b + + >>> print(MathML(etree.fromstring('< & &lt; A')).to_latex().data.strip()) + < & < 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('<', '<').replace('&', '&') + return create_embed('application/x-latex', data=text)