Fix up MathML output of integrals.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32567 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2009-12-17 16:06:00 +00:00
parent 2ae6331072
commit c3fc67ef54
2 changed files with 29 additions and 6 deletions

View File

@ -124,6 +124,7 @@ void InsetMathExInt::mathematica(MathematicaStream & os) const
void InsetMathExInt::mathmlize(MathStream & os) const void InsetMathExInt::mathmlize(MathStream & os) const
{ {
InsetMathSymbol sym(symbol_);
if (symbol_ == "sum") { if (symbol_ == "sum") {
bool const lower = !cell(1).empty(); bool const lower = !cell(1).empty();
bool const upper = !cell(3).empty(); bool const upper = !cell(3).empty();
@ -133,7 +134,9 @@ void InsetMathExInt::mathmlize(MathStream & os) const
os << MTag("msub"); os << MTag("msub");
else if (upper) else if (upper)
os << MTag("msup"); os << MTag("msup");
os << MTag("mrow") << MTag("mo") << "&sum;" << ETag("mo") << ETag("mrow"); os << MTag("mrow");
sym.mathmlize(os);
os << ETag("mrow");
if (lower) { if (lower) {
os << MTag("mrow"); os << MTag("mrow");
os << cell(1); os << cell(1);
@ -154,11 +157,27 @@ void InsetMathExInt::mathmlize(MathStream & os) const
return; return;
} }
// some kind of integral // some kind of integral
InsetMathSymbol sym(symbol_); bool const lower = !cell(2).empty();
//if (hasScripts()) bool const upper = !cell(3).empty();
// mathmlize(sym, os); if (lower && upper)
//else os << MTag("msubsup");
else if (lower)
os << MTag("msub");
else if (upper)
os << MTag("msup");
os << MTag("mrow");
sym.mathmlize(os); sym.mathmlize(os);
os << ETag("mrow");
if (lower)
os << MTag("mrow") << cell(2) << ETag("mrow");
if (upper)
os << MTag("mrow") << cell(3) << ETag("mrow");
if (lower && upper)
os << ETag("msubsup");
else if (lower)
os << ETag("msub");
else if (upper)
os << ETag("msup");
os << cell(0) << "<mo> &InvisibleTimes; </mo>" os << cell(0) << "<mo> &InvisibleTimes; </mo>"
<< MTag("mrow") << "<mo> &DifferentialD; </mo>" << MTag("mrow") << "<mo> &DifferentialD; </mo>"
<< cell(1) << ETag("mrow"); << cell(1) << ETag("mrow");

View File

@ -21,7 +21,11 @@
namespace lyx { namespace lyx {
// for integrals, cell(0) is stuff before the 'd', cell(1) the stuff after // for integrals:
// cell(0) is stuff before the 'd'
// cell(1) is the stuff after the 'd'
// cell(2) is the lower bound
// cell(3) is the upper bound
// for sums: // for sums:
// cell(0) is the main body // cell(0) is the main body
// cell(1) is the index (e.g., i), if the lower bound is "i = ..." // cell(1) is the index (e.g., i), if the lower bound is "i = ..."