namespace {
-// align frac to minus character
-int dy_for_frac(MetricsBase & mb)
-{
- Changer dummy = mb.changeFontSet("mathnormal");
- return theFontMetrics(mb.font).ascent('-') - 1;
-}
-
-
// align the top of M in the cell with the top of M in the surrounding font
int dy_for_nicefrac(MetricsBase & mb)
{
return in_word_set(from_ascii("slash"));
}
-} // anon namespace
-
+} // namespace
void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const
case TFRAC:
case OVER:
case ATOP: {
- int const dy = dy_for_frac(mi.base);
+ int const dy = axis_height(mi.base);
Changer dummy =
// \tfrac is always in text size
(kind_ == TFRAC) ? mi.base.font.changeStyle(LM_ST_SCRIPT) :
dim.des = max(0, dim1.height() + dy/2 - dy + t);
}
} //switch (kind_)
- metricsMarkers(mi, dim);
}
void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const
{
- setPosCache(pi, x, y);
Changer dummy3 = pi.base.changeEnsureMath();
Dimension const dim = dimension(*pi.base.bv);
Dimension const dim0 = cell(0).dimension(*pi.base.bv);
// is there an extra cell holding the value being given a dimension?
// (this is \unittwo)
if (nargs() == 2) {
- cell(0).draw(pi, x + 1, y);
+ cell(0).draw(pi, x, y);
xx += dim0.wid + 4;
unit_cell = 1;
}
Changer dummy = pi.base.font.changeShape(UP_SHAPE);
- cell(unit_cell).draw(pi, xx + 1, y);
+ cell(unit_cell).draw(pi, xx, y);
}
break;
// is there an extra cell holding the value being given a dimension?
// (this is \unitfracthree)
if (kind_ == UNITFRAC && nargs() == 3) {
- cell(2).draw(pi, x + 1, y);
+ cell(2).draw(pi, x, y);
xx += cell(2).dimension(*pi.base.bv).wid + 4;
}
Changer dummy = (kind_ == UNITFRAC) ? pi.base.font.changeShape(UP_SHAPE)
: Changer();
// nice fraction
Changer dummy2 = pi.base.changeScript();
- cell(0).draw(pi, xx + 2, y - dy);
+ cell(0).draw(pi, xx + 1, y - dy);
// reference LaTeX code from nicefrac.sty:
// \mkern-2mu/\mkern-1mu
if (latexkeys const * slash = slash_symbol()) {
int mkern = mathed_mu(pi.base.font, 2.0);
- mathedSymbolDraw(pi, xx + 2 + dim0.wid - mkern, y, slash);
+ mathedSymbolDraw(pi, xx + 1 + dim0.wid - mkern, y, slash);
Dimension dimslash;
mathedSymbolDim(pi.base, dimslash, slash);
xx += dimslash.wid - mathed_mu(pi.base.font, 3.0);
}
- cell(1).draw(pi, xx + 2 + dim0.wid, y);
+ cell(1).draw(pi, xx + 1 + dim0.wid, y);
}
break;
case TFRAC:
case OVER:
case ATOP: {
- int const dy = dy_for_frac(pi.base);
+ int const dy = axis_height(pi.base);
Changer dummy =
// \tfrac is always in text size
(kind_ == TFRAC) ? pi.base.font.changeStyle(LM_ST_SCRIPT) :
int const m = x + dim.wid / 2;
int const xx =
// align left
- (kind_ == CFRACLEFT) ? x + 2 :
+ (kind_ == CFRACLEFT) ? x + 1 :
// align right
(kind_ == CFRACRIGHT) ? x + dim.wid - dim0.wid - 2 :
// center
cell(1).draw(pi, m - dim1.wid / 2, y + dim1.asc + dy/2 - dy + t);
// horizontal line
if (kind_ != ATOP)
- pi.pain.line(x + 1, y - dy, x + dim.wid - 2, y - dy,
+ pi.pain.line(x, y - dy, x + dim.wid, y - dy,
pi.base.font.color(), pi.pain.line_solid, t);
}
} //switch (kind_)
- drawMarkers(pi, x, y);
}
// FIXME This is not right, because we still output mi, etc,
// when we output the cell. So we need to prevent that somehow.
if (nargs() == 2)
- os << cell(0)
- << MTag("mstyle mathvariant='normal'")
- << cell(1)
+ os << cell(0)
+ << MTag("mstyle mathvariant='normal'")
+ << cell(1)
<< ETag("mstyle");
else
- os << MTag("mstyle mathvariant='normal'")
+ os << MTag("mstyle mathvariant='normal'")
<< cell(0)
<< ETag("mstyle");
}
// FIXME This is not right, because we still output i, etc,
// when we output the cell. So we need to prevent that somehow.
if (nargs() == 2)
- os << cell(0)
- << MTag("span")
- << cell(1)
+ os << cell(0)
+ << MTag("span")
+ << cell(1)
<< ETag("span");
else
- os << MTag("span")
+ os << MTag("span")
<< cell(0)
<< ETag("span");
}
{
Changer dummy2 = mi.base.changeEnsureMath();
Dimension dim0, dim1;
- int const dy = dy_for_frac(mi.base);
+ int const dy = axis_height(mi.base);
Changer dummy =
(kind_ == DBINOM) ? mi.base.font.changeStyle(LM_ST_DISPLAY) :
(kind_ == TBINOM) ? mi.base.font.changeStyle(LM_ST_SCRIPT) :
dim.asc = dim0.height() + 1 + dy/2 + dy;
dim.des = max(0, dim1.height() + 1 + dy/2 - dy);
dim.wid = max(dim0.wid, dim1.wid) + 2 * dw(dim.height()) + 4;
- metricsMarkers2(mi, dim);
}
Dimension const dim = dimension(*pi.base.bv);
Dimension const & dim0 = cell(0).dimension(*pi.base.bv);
Dimension const & dim1 = cell(1).dimension(*pi.base.bv);
- int const dy = dy_for_frac(pi.base);
+ int const dy = axis_height(pi.base);
// define the binom brackets
docstring const bra = kind_ == BRACE ? from_ascii("{") :
kind_ == BRACK ? from_ascii("[") : from_ascii("(");
dim.height(), bra);
mathed_draw_deco(pi, x + dim.width() - dw(dim.height()),
y - dim.ascent(), dw(dim.height()), dim.height(), ket);
- drawMarkers2(pi, x, y);
}