commit 877e73e0a21fd6fd9f147146b88acbf9b01e1890
Author: Georg Baum <[email protected]>
Date: Sat Feb 22 19:01:20 2014 +0100
Fix bug #8784 (mathml export for scripts)
For displaystyle scripts we need to use munder, mover or munderover.
diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp
index 7e501bc..37f1965 100644
--- a/src/mathed/InsetMathScript.cpp
+++ b/src/mathed/InsetMathScript.cpp
@@ -595,21 +595,18 @@ void InsetMathScript::mathematica(MathematicaStream & os)
const
}
-// FIXME XHTML
-// It may be worth trying to output munder, mover, and munderover
-// in certain cases, e.g., for display formulas. But then we would
-// need to know if we're in a display formula.
void InsetMathScript::mathmlize(MathStream & os) const
{
bool d = hasDown() && !down().empty();
bool u = hasUp() && !up().empty();
+ bool l = hasLimits();
if (u && d)
- os << MTag("msubsup");
+ os << MTag(l ? "munderover" : "msubsup");
else if (u)
- os << MTag("msup");
+ os << MTag(l ? "mover" : "msup");
else if (d)
- os << MTag("msub");
+ os << MTag(l ? "munder" : "msub");
if (!nuc().empty())
os << MTag("mrow") << nuc() << ETag("mrow");
@@ -619,11 +616,11 @@ void InsetMathScript::mathmlize(MathStream & os) const
if (u && d)
os << MTag("mrow") << down() << ETag("mrow")
<< MTag("mrow") << up() << ETag("mrow")
- << ETag("msubsup");
+ << ETag(l ? "munderover" : "msubsup");
else if (u)
- os << MTag("mrow") << up() << ETag("mrow") << ETag("msup");
+ os << MTag("mrow") << up() << ETag("mrow") << ETag(l ? "mover"
: "msup");
else if (d)
- os << MTag("mrow") << down() << ETag("mrow") << ETag("msub");
+ os << MTag("mrow") << down() << ETag("mrow") << ETag(l ?
"munder" : "msub");
}