#include "MathStream.h"
#include "MathSupport.h"
+#include "LaTeXFeatures.h"
+#include "MetricsInfo.h"
+
#include <ostream>
namespace lyx {
InsetMathEnsureMath::InsetMathEnsureMath(Buffer * buf)
- : InsetMathNest(buf, 1)
+ : InsetMathGrid(buf, 1, 1)
{}
void InsetMathEnsureMath::metrics(MetricsInfo & mi, Dimension & dim) const
{
- bool really_change_font = isTextFont(from_ascii(mi.base.fontname));
- FontSetChanger dummy(mi.base, "mathnormal", really_change_font);
+ Changer dummy = mi.base.changeEnsureMath();
cell(0).metrics(mi, dim);
- metricsMarkers(dim);
}
void InsetMathEnsureMath::draw(PainterInfo & pi, int x, int y) const
{
- bool really_change_font = isTextFont(from_ascii(pi.base.fontname));
- FontSetChanger dummy(pi.base, "mathnormal", really_change_font);
+ Changer dummy = pi.base.changeEnsureMath();
cell(0).draw(pi, x, y);
- drawMarkers(pi, x, y);
}
}
-void InsetMathEnsureMath::write(WriteStream & os) const
+void InsetMathEnsureMath::write(TeXMathStream & os) const
{
ModeSpecifier specifier(os, MATH_MODE);
os << "\\ensuremath{" << cell(0) << "}";
}
-void InsetMathEnsureMath::mathmlize(MathStream & os) const
+void InsetMathEnsureMath::mathmlize(MathMLStream & ms) const
{
- os << "[EM]";
- SetMode mathmode(os, false);
- os << cell(0);
- os << "[/EM]";
+ SetMode mathmode(ms, false);
+ ms << MTag("mstyle", "class='math'")
+ << cell(0)
+ << ETag("mstyle");
}
void InsetMathEnsureMath::htmlize(HtmlStream & os) const
{
- os << "[EM]";
SetHTMLMode mathmode(os, false);
- os << cell(0);
- os << "[/EM]";
+ os << MTag("span", "class='math'")
+ << cell(0)
+ << ETag("span");
}
}
+void InsetMathEnsureMath::validate(LaTeXFeatures & features) const
+{
+ // FIXME XHTML
+ // It'd be better to be able to get this from an InsetLayout, but at present
+ // InsetLayouts do not seem really to work for things that aren't InsetTexts.
+ if (features.runparams().math_flavor == OutputParams::MathAsMathML)
+ features.addCSSSnippet("mstyle.math { font-style: italic; }");
+ else if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ features.addCSSSnippet("span.mathbox { font-style: italic; }");
+
+ InsetMathNest::validate(features);
+}
+
} // namespace lyx