From 877e73e0a21fd6fd9f147146b88acbf9b01e1890 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Sat, 22 Feb 2014 19:01:20 +0100 Subject: [PATCH] Fix bug #8784 (mathml export for scripts) For displaystyle scripts we need to use munder, mover or munderover. --- src/mathed/InsetMathScript.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp index 7e501bc5a7..37f19654b7 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"); } -- 2.39.2