bool InsetMathSubstack::getStatus(Cursor & cur, FuncRequest const & cmd,
FuncStatus & flag) const
{
- switch (cmd.action) {
+ switch (cmd.action()) {
case LFUN_INSET_MODIFY: {
istringstream is(to_utf8(cmd.argument()));
string s;
flag.setEnabled(false);
return true;
}
+ // in contrary to \subaray, the columns in \substack
+ // are always centered and this cannot be changed
+ if (s == "align-left" || s == "align-right") {
+ flag.message(bformat(
+ from_utf8(N_("Can't change horizontal alignment in '%1$s'")),
+ from_utf8(name)));
+ flag.setEnabled(false);
+ return true;
+ }
break;
}
+
default:
break;
}
}
+void InsetMathSubstack::mathmlize(MathStream & os) const
+{
+ int movers = 0;
+ row_type const numrows = nrows();
+ for (row_type row = 0; row < nrows(); ++row) {
+ if (row < numrows - 1) {
+ movers ++;
+ os << MTag("munder");
+ }
+ os << MTag("mrow") << cell(index(row, 0)) << ETag("mrow");
+ }
+ for (int i = 1; i <= movers; ++i)
+ os << ETag("munder");
+}
+
+
+void InsetMathSubstack::htmlize(HtmlStream & os) const
+{
+ os << MTag("span", "class='substack'");
+ for (row_type row = 0; row < nrows(); ++row)
+ os << MTag("span") << cell(index(row, 0)) << ETag("span");
+ os << ETag("span");
+}
+
+
void InsetMathSubstack::validate(LaTeXFeatures & features) const
{
- features.require("amsmath");
+ if (features.runparams().isLaTeX())
+ features.require("amsmath");
+ else if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ features.addCSSSnippet(
+ "span.substack{display: inline-block; vertical-align: middle; text-align:center; font-size: 75%;}\n"
+ "span.substack span{display: block;}");
+
InsetMathGrid::validate(features);
}