Fix DocBook reader mathml regression...

...caused by the switch in XML libraries.
Also fixed a similar issue in JATS.
Closes #7173.
This commit is contained in:
John MacFarlane 2021-03-24 11:57:49 -07:00
parent 88d3d55909
commit 56ce1fc126
4 changed files with 147 additions and 5 deletions

View file

@ -1239,7 +1239,8 @@ equation e constructor =
where
mathMLEquations :: [Text]
mathMLEquations = map writeTeX $ rights $ readMath
(\x -> qName (elName x) == "math" && qPrefix (elName x) == Just "mml")
(\x -> qName (elName x) == "math" &&
qURI (elName x) == Just "http://www.w3.org/1998/Math/MathML")
(readMathML . showElement)
latexEquations :: [Text]

View file

@ -491,7 +491,8 @@ parseInline (Elem e) =
"disp-formula" -> formula displayMath
"inline-formula" -> formula math
"math" | qPrefix (elName e) == Just "mml" -> return . math $ mathML e
"math" | qURI (elName e) == Just "http://www.w3.org/1998/Math/MathML"
-> return . math $ mathML e
"tex-math" -> return . math $ textContent e
"email" -> return $ link ("mailto:" <> textContent e) ""
@ -514,8 +515,9 @@ parseInline (Elem e) =
filterChildren isMathML whereToLook
return . mconcat . take 1 . map constructor $ texMaths ++ mathMLs
isMathML x = qName (elName x) == "math" &&
qPrefix (elName x) == Just "mml"
isMathML x = qName (elName x) == "math" &&
qURI (elName x) ==
Just "http://www.w3.org/1998/Math/MathML"
removePrefix elname = elname { qPrefix = Nothing }
codeWithLang = do
let classes' = case attrValue "language" e of

137
test/command/7173.md Normal file
View file

@ -0,0 +1,137 @@
```
% pandoc -f docbook -t latex
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<?xml-model href="http://www.oxygenxml.com/docbook/xml/5.0/rng/dbmathml.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://docbook.org/xml/5.0/rng/docbook.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="5.1">
<title>Untitled Document</title>
<para>Word</para>
<informalequation>
<alt role='tex'>1+2</alt>
<m:math xmlns:m="http://www.w3.org/1998/Math/MathML">
<m:mrow>
<m:mrow><m:mn>1</m:mn><m:mo>+</m:mo><m:mn>2</m:mn>
</m:mrow>
</m:mrow>
</m:math>
</informalequation>
</article>
^D
Word
\[1 + 2\]
```
```
% pandoc -f docbook -t latex
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<?xml-model href="http://www.oxygenxml.com/docbook/xml/5.0/rng/dbmathml.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://docbook.org/xml/5.0/rng/docbook.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="5.1">
<title>Untitled Document</title>
<para>Word</para>
<informalequation>
<alt role='tex'>1+2</alt>
<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML">
<mml:mrow>
<mml:mrow><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mn>2</mml:mn>
</mml:mrow>
</mml:mrow>
</mml:math>
</informalequation>
</article>
^D
Word
\[1 + 2\]
```
```
% pandoc -f docbook -t latex
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<?xml-model href="http://www.oxygenxml.com/docbook/xml/5.0/rng/dbmathml.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://docbook.org/xml/5.0/rng/docbook.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="5.1">
<title>Untitled Document</title>
<para>Word</para>
<informalequation>
<alt role='tex'>1+2</alt>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mrow><mn>1</mn><mo>+</mo><mn>2</mn>
</mrow>
</mrow>
</math>
</informalequation>
</article>
^D
Word
\[1 + 2\]
```
```
% pandoc -f docbook -t latex
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<?xml-model href="http://www.oxygenxml.com/docbook/xml/5.0/rng/dbmathml.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://docbook.org/xml/5.0/rng/docbook.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:m="http://www.w3.org/1998/Math/MathML"
version="5.1">
<title>Untitled Document</title>
<para>Word</para>
<informalequation>
<alt role='tex'>1+2</alt>
<m:math>
<m:mrow>
<m:mrow><m:mn>1</m:mn><m:mo>+</m:mo><m:mn>2</m:mn>
</m:mrow>
</m:mrow>
</m:math>
</informalequation>
</article>
^D
Word
\[1 + 2\]
```
```
% pandoc -f docbook -t latex
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<?xml-model href="http://www.oxygenxml.com/docbook/xml/5.0/rng/dbmathml.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://docbook.org/xml/5.0/rng/docbook.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:mml="http://www.w3.org/1998/Math/MathML"
version="5.1">
<title>Untitled Document</title>
<para>Word</para>
<informalequation>
<alt role='tex'>1+2</alt>
<mml:math>
<mml:mrow>
<mml:mrow><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mn>2</mml:mn>
</mml:mrow>
</mml:mrow>
</mml:math>
</informalequation>
</article>
^D
Word
\[1 + 2\]
```

View file

@ -6,7 +6,9 @@
<!ENTITY let "LET" >
<!ENTITY case "CASE" >
]>
<article>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:mml="http://www.w3.org/1998/Math/MathML">
<articleinfo>
<title>Pandoc Test Suite</title>
<authorgroup>