dim.des = dim1.height() - 5;
} else {
if (kind_ == CFRAC || kind_ == CFRACLEFT
- || kind_ == CFRACRIGHT || kind_ == DFRAC) {
+ || kind_ == CFRACRIGHT || kind_ == DFRAC) {
// \cfrac and \dfrac are always in display size
StyleChanger dummy2(mi.base, LM_ST_DISPLAY);
cell(0).metrics(mi, dim0);
pi.pain.line(xx + dim0.wid,
y + dim.des - 2,
xx + dim0.wid + 5,
- y - dim.asc + 2, Color_math);
+ y - dim.asc + 2, pi.base.font.color());
}
if (kind_ == FRAC || kind_ == CFRAC || kind_ == CFRACLEFT
|| kind_ == CFRACRIGHT || kind_ == DFRAC
|| kind_ == TFRAC || kind_ == OVER)
pi.pain.line(x + 1, y - 5,
- x + dim.wid - 2, y - 5, Color_math);
+ x + dim.wid - 2, y - 5, pi.base.font.color());
drawMarkers(pi, x, y);
}
void InsetMathFrac::mathmlize(MathStream & os) const
{
- switch (kind_) {
- case DFRAC:
- os << MTag("mdfrac") << cell(0) << cell(1) << ETag("mdfrac");
- break;
- case TFRAC:
- os << MTag("mtfrac") << cell(0) << cell(1) << ETag("mtfrac");
- break;
- case FRAC:
- default:
- os << MTag("mfrac") << cell(0) << cell(1) << ETag("mfrac");
- break;
- }
+ os << MTag("mfrac")
+ << MTag("mrow") << cell(0) << ETag("mrow")
+ << MTag("mrow") << cell(1) << ETag("mrow")
+ << ETag("mfrac");
+}
+
+
+void InsetMathFrac::htmlize(HtmlStream & os) const
+{
+ os << MTag("span", "class='frac'")
+ << MTag("span", "class='numer'") << cell(0) << ETag("span")
+ << MTag("span", "class='denom'") << cell(1) << ETag("span")
+ << ETag("span");
}
if (kind_ == NICEFRAC || kind_ == UNITFRAC || kind_ == UNIT)
features.require("units");
if (kind_ == CFRAC || kind_ == CFRACLEFT || kind_ == CFRACRIGHT
- || kind_ == DFRAC || kind_ == TFRAC)
+ || kind_ == DFRAC || kind_ == TFRAC)
features.require("amsmath");
+ if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ // CSS adapted from eLyXer
+ features.addPreambleSnippet("<style type=\"text/css\">\n"
+ "span.frac{display: inline-block; vertical-align: middle; text-align:center;}\n"
+ "span.numer{display: block;}\n"
+ "span.denom{display: block; border-top: thin solid #000040;}\n"
+ "</style>");
InsetMathNest::validate(features);
}
void InsetMathBinom::mathmlize(MathStream & os) const
{
+ char ldelim = ' ';
+ char rdelim = ' ';
switch (kind_) {
case BINOM:
- os << MTag("mbinom") << cell(0) << cell(1) << ETag("mbinom");
- break;
case TBINOM:
- os << MTag("mtbinom") << cell(0) << cell(1) << ETag("mtbinom");
+ case DBINOM:
+ case CHOOSE:
+ ldelim = '(';
+ rdelim = ')';
+ break;
+ case BRACE:
+ ldelim = '{';
+ rdelim = '}';
break;
+ case BRACK:
+ ldelim = '[';
+ rdelim = ']';
+ break;
+ }
+ os << "<mo fence='true' stretchy='true' form='prefix'>" << ldelim << "</mo>"
+ << "<mfrac linethickness='0'>"
+ << cell(0) << cell(1)
+ << "</mfrac>"
+ << "<mo fence='true' stretchy='true' form='postfix'>" << rdelim << "</mo>";
+}
+
+
+void InsetMathBinom::htmlize(HtmlStream & os) const
+{
+ char ldelim = ' ';
+ char rdelim = ' ';
+ switch (kind_) {
+ case BINOM:
+ case TBINOM:
case DBINOM:
- default:
- os << MTag("mdbinom") << cell(0) << cell(1) << ETag("mdbinom");
+ case CHOOSE:
+ ldelim = '(';
+ rdelim = ')';
+ break;
+ case BRACE:
+ ldelim = '{';
+ rdelim = '}';
+ break;
+ case BRACK:
+ ldelim = '[';
+ rdelim = ']';
break;
}
+ os << MTag("span", "class='binomdelim'") << ldelim << ETag("span") << '\n'
+ << MTag("span", "class='binom'") << '\n'
+ << MTag("span") << cell(0) << ETag("span") << '\n'
+ << MTag("span") << cell(1) << ETag("span") << '\n'
+ << ETag("span") << '\n'
+ << MTag("span", "class='binomdelim'") << rdelim << ETag("span") << '\n';
}
void InsetMathBinom::validate(LaTeXFeatures & features) const
{
- if (kind_ == BINOM)
- features.require("binom");
- if (kind_ == DBINOM || kind_ == TBINOM)
- features.require("amsmath");
+ if (features.runparams().isLaTeX()) {
+ if (kind_ == BINOM)
+ features.require("binom");
+ if (kind_ == DBINOM || kind_ == TBINOM)
+ features.require("amsmath");
+ } else if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ features.addPreambleSnippet("<style type=\"text/css\">\n"
+ "span.binom{display: inline-block; vertical-align: bottom; text-align:center;}\n"
+ "span.binom span{display: block;}\n"
+ "span.binomdelim{font-size: 2em;}\n"
+ "</style>");
InsetMathNest::validate(features);
}