X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathExInt.cpp;h=ac5409f469aca3e432a9173967890fe357f6d71e;hb=bca9a6ca73b05856eb24f38795d67fdefa939878;hp=ae687bb678ef97b7bf70bb1b8c5785a37f64593e;hpb=46e14246785ad484153053393f515adac9e51dc2;p=lyx.git diff --git a/src/mathed/InsetMathExInt.cpp b/src/mathed/InsetMathExInt.cpp index ae687bb678..ac5409f469 100644 --- a/src/mathed/InsetMathExInt.cpp +++ b/src/mathed/InsetMathExInt.cpp @@ -11,6 +11,8 @@ #include #include "InsetMathExInt.h" + +#include "LaTeXFeatures.h" #include "MathData.h" #include "MathStream.h" #include "MathStream.h" @@ -71,16 +73,8 @@ void InsetMathExInt::draw(PainterInfo &, int, int) const } -bool InsetMathExInt::isExIntOperator(docstring const & name) -{ - std::string const & sname = to_utf8(name); - return sname == "sum" || sname == "prod"; -} - - void InsetMathExInt::maple(MapleStream & os) const { - // FIXME Products and the like may need special treatment. os << symbol_ << '('; if (cell(0).size()) os << cell(0); @@ -95,7 +89,6 @@ void InsetMathExInt::maple(MapleStream & os) const void InsetMathExInt::maxima(MaximaStream & os) const { - // FIXME Products and the like may need special treatment. if (symbol_ == "int") os << "integrate("; else @@ -111,10 +104,8 @@ void InsetMathExInt::maxima(MaximaStream & os) const os << cell(1) << ')'; } - void InsetMathExInt::mathematica(MathematicaStream & os) const { - // FIXME Products and the like may need special treatment. if (symbol_ == "int") os << "Integrate["; else if (symbol_ == "sum") @@ -135,39 +126,11 @@ void InsetMathExInt::mathematica(MathematicaStream & os) const void InsetMathExInt::mathmlize(MathStream & os) const { + // At the moment, we are not extracting sums and the like for MathML. + // If we should decide to do so later, then we'll need to re-merge + // r32566 and r32568. + // So right now this only handles integrals. InsetMathSymbol sym(symbol_); - if (isExIntOperator(symbol_)) { - bool const lower = !cell(1).empty(); - bool const upper = !cell(3).empty(); - if (lower && upper) - os << MTag("msubsup"); - else if (lower) - os << MTag("msub"); - else if (upper) - os << MTag("msup"); - os << MTag("mrow"); - sym.mathmlize(os); - os << ETag("mrow"); - if (lower) { - os << MTag("mrow"); - os << cell(1); - if (!cell(2).empty()) - os << MTag("mo") << "=" << ETag("mo") - << cell(2); - os << 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); - return; - } - // some kind of integral bool const lower = !cell(2).empty(); bool const upper = !cell(3).empty(); if (lower && upper) @@ -195,6 +158,32 @@ void InsetMathExInt::mathmlize(MathStream & os) const } +void InsetMathExInt::htmlize(HtmlStream & os) const +{ + // At the moment, we are not extracting sums and the like for HTML. + // So right now this only handles integrals. + InsetMathSymbol sym(symbol_); + bool const lower = !cell(2).empty(); + bool const upper = !cell(3).empty(); + + os << MTag("span", "class='integral'") + << MTag("span", "class='intsym'"); + sym.htmlize(os, false); + os << ETag("span"); + + if (lower && upper) { + os << MTag("span", "class='limits'") + << MTag("span") << cell(2) << ETag("span") + << MTag("span") << cell(3) << ETag("span") + << ETag("span"); + } else if (lower) + os << MTag("sub", "class='limit'") << cell(2) << ETag("sub"); + else if (upper) + os << MTag("sup", "class='limit'") << cell(3) << ETag("sup"); + os << cell(0) << "d" << cell(1) << ETag("span"); +} + + void InsetMathExInt::write(WriteStream &) const { LYXERR0("should not happen");