* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
namespace lyx {
-InsetMathXArrow::InsetMathXArrow(docstring const & name)
- : InsetMathFracBase(), name_(name)
+InsetMathXArrow::InsetMathXArrow(Buffer * buf, docstring const & name)
+ : InsetMathFracBase(buf), name_(name)
{}
dim.asc = dim0.height() + 10;
dim.des = dim1.height();
metricsMarkers(dim);
- // Cache the inset dimension.
- setDimCache(mi, dim);
}
void InsetMathXArrow::write(WriteStream & os) const
{
+ MathEnsurer ensurer(os);
os << '\\' << name_;
- if (cell(1).size())
+ if (!cell(1).empty())
os << '[' << cell(1) << ']';
os << '{' << cell(0) << '}';
}
}
+void InsetMathXArrow::mathmlize(MathStream & ms) const
+{
+ char const * const arrow = name_ == "xleftarrow"
+ ? "←" : "→";
+ ms << "<munderover accent='false' accentunder='false'>"
+ << arrow << cell(1) << cell(0)
+ << "</munderover>";
+}
+
+
+void InsetMathXArrow::htmlize(HtmlStream & os) const
+{
+ char const * const arrow = name_ == "xleftarrow"
+ ? "←" : "→";
+ os << MTag("span", "class='xarrow'")
+ << MTag("span", "class='xatop'") << cell(0) << ETag("span")
+ << MTag("span", "class='xabottom'") << arrow << ETag("span")
+ << ETag("span");
+}
+
+
void InsetMathXArrow::validate(LaTeXFeatures & features) const
{
features.require("amsmath");
+ if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ // CSS adapted from eLyXer
+ features.addCSSSnippet(
+ "span.xarrow{display: inline-block; vertical-align: middle; text-align:center;}\n"
+ "span.xatop{display: block;}\n"
+ "span.xabottom{display: block;}");
InsetMathNest::validate(features);
}