#include "InsetMathFont.h"
#include "InsetMathScript.h"
#include "InsetMathSymbol.h"
+#include "LaTeXFeatures.h"
#include "MathData.h"
-#include "MathExtern.h"
#include "MathStream.h"
#include "MathSupport.h"
// 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.
-docstring InsetMathScript::mathmlize(MathStream & os) const
+void InsetMathScript::mathmlize(MathStream & os) const
{
bool d = hasDown() && down().size();
bool u = hasUp() && up().size();
else if (d)
os << MTag("msub");
- docstring rv;
- if (nuc().size()) {
- os << MTag("mrow");
- rv = lyx::mathmlize(nuc(), os);
- os << ETag("mrow");
- } else
+ if (nuc().size())
+ os << MTag("mrow") << nuc() << ETag("mrow");
+ else
os << "<mrow />";
if (u && d)
os << MTag("mrow") << up() << ETag("mrow") << ETag("msup");
else if (d)
os << MTag("mrow") << down() << ETag("mrow") << ETag("msub");
- return rv;
+}
+
+
+void InsetMathScript::htmlize(HtmlStream & os) const
+{
+ bool d = hasDown() && down().size();
+ bool u = hasUp() && up().size();
+
+ if (nuc().size())
+ os << nuc();
+
+ if (u && d)
+ os << MTag("span", "class='scripts'")
+ << MTag("span") << up() << ETag("span")
+ << MTag("span") << down() << ETag("span")
+ << ETag("span");
+ else if (u)
+ os << MTag("sup", "class='math'") << up() << ETag("sup");
+ else if (d)
+ os << MTag("sub", "class='math'") << down() << ETag("sub");
}
// must be a subscript...
old.recordUndoInset();
removeScript(false);
- cur.updateFlags(cur.disp_.update() | Update::SinglePar);
+ cur.screenUpdateFlags(cur.result().screenUpdate() | Update::SinglePar);
return true;
} else if (cell(1).empty()) {
// must be a superscript...
old.recordUndoInset();
removeScript(true);
- cur.updateFlags(cur.disp_.update() | Update::SinglePar);
+ cur.screenUpdateFlags(cur.result().screenUpdate() | Update::SinglePar);
return true;
}
}
insetCur.cell().insert(insetCur.pos(), ar);
// redraw
- cur.updateFlags(cur.disp_.update() | Update::SinglePar);
+ cur.screenUpdateFlags(cur.result().screenUpdate() | Update::SinglePar);
return true;
}
{
//LYXERR("InsetMathScript: request: " << cmd);
- if (cmd.action == LFUN_MATH_LIMITS) {
+ if (cmd.action() == LFUN_MATH_LIMITS) {
if (!cmd.argument().empty()) {
if (cmd.argument() == "limits")
limits_ = 1;
}
+// the idea for dual scripts came from the eLyXer code
+void InsetMathScript::validate(LaTeXFeatures & features) const
+{
+ if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ features.addPreambleSnippet("<style type=\"text/css\">\n"
+ "span.scripts{display: inline-block; vertical-align: middle; text-align:center; font-size: 75%;}\n"
+ "span.scripts span {display: block;}\n"
+ "sub.math{font-size: 75%;}\n"
+ "sup.math{font-size: 75%;}\n"
+ "</style>");
+ InsetMathNest::validate(features);
+}
+
} // namespace lyx