// The delimiters may be used without \left or \right as well.
// Therefore they are listed in lib/symbols, and if they have
// requirements, we need to add them here.
- MathWordList const & words = mathedWordList();
- MathWordList::const_iterator it = words.find(left_);
- if (it != words.end())
- {
- string const req = it->second.requires;
- if (!req.empty())
- features.require(req);
- }
- it = words.find(right_);
- if (it != words.end())
- {
- string const req = it->second.requires;
- if (!req.empty())
- features.require(req);
- }
+ validate_math_word(features, left_);
+ validate_math_word(features, right_);
}
-void InsetMathDelim::write(WriteStream & os) const
+void InsetMathDelim::write(TeXMathStream & os) const
{
MathEnsurer ensurer(os);
os << "\\left" << convertDelimToLatexName(left_) << cell(0)
{
Changer dummy = mi.base.changeEnsureMath();
Dimension dim0;
- cell(0).metrics(mi, dim0);
+ cell(0).metrics(mi, dim0, false);
Dimension t = theFontMetrics(mi.base.font).dimension('I');
int h0 = (t.asc + t.des) / 2;
int a0 = max(dim0.asc, t.asc) - h0;
dw_ = 8;
if (dw_ < 4)
dw_ = 4;
- dim.wid = dim0.width() + 2 * dw_;
+ dim.wid = dim0.width() + 2 * dw_ + 2 * mathed_thinmuskip(mi.base.font);
dim.asc = max(a0, d0) + h0;
dim.des = max(a0, d0) - h0;
}
Changer dummy = pi.base.changeEnsureMath();
Dimension const dim = dimension(*pi.base.bv);
int const b = y - dim.asc;
- cell(0).draw(pi, x + dw_, y);
- mathed_draw_deco(pi, x, b, dw_, dim.height(), left_);
- mathed_draw_deco(pi, x + dim.width() - dw_,
+ int const skip = mathed_thinmuskip(pi.base.font);
+ cell(0).draw(pi, x + dw_ + skip, y);
+ mathed_draw_deco(pi, x + skip / 2, b, dw_, dim.height(), left_);
+ mathed_draw_deco(pi, x + dim.width() - dw_ - skip / 2,
b, dw_, dim.height(), right_);
- setPosCache(pi, x, y);
}
{
if (isAbs()) {
if (cell(0).size() == 1 && cell(0).front()->asMatrixInset())
- os << "Det" << cell(0) << ']';
+ os << "Det[" << cell(0) << ']';
else
os << "Abs[" << cell(0) << ']';
}
}
-void InsetMathDelim::mathmlize(MathStream & os) const
+void InsetMathDelim::mathmlize(MathMLStream & ms) const
{
- os << "<mo form='prefix' fence='true' stretchy='true' symmetric='true'>"
- << convertDelimToXMLEscape(left_)
- << "</mo>\n"
- << cell(0)
- << "\n<mo form='postfix' fence='true' stretchy='true' symmetric='true'>"
- << convertDelimToXMLEscape(right_)
- << "</mo>\n";
+ ms << MTag("mrow")
+ << MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'")
+ << convertDelimToXMLEscape(left_, ms.xmlMode())
+ << ETagInline("mo")
+ << cell(0)
+ << MTagInline("mo", "form='postfix' fence='true' stretchy='true' symmetric='true'")
+ << convertDelimToXMLEscape(right_, ms.xmlMode())
+ << ETagInline("mo")
+ << ETag("mrow");
}
void InsetMathDelim::htmlize(HtmlStream & os) const
{
- os << convertDelimToXMLEscape(left_)
- << cell(0)
- << convertDelimToXMLEscape(right_);
+ os << convertDelimToXMLEscape(left_, false)
+ << cell(0)
+ << convertDelimToXMLEscape(right_, false);
}