- if (kind_ == UNIT || (kind_ == UNITFRAC && nargs() == 3)) {
- if (nargs() == 1) {
- ShapeChanger dummy2(pi.base.font, UP_SHAPE);
- cell(0).draw(pi, x + 1, y);
- } else if (nargs() == 2) {
- cell(0).draw(pi, x + 1, y);
- ShapeChanger dummy2(pi.base.font, UP_SHAPE);
- cell(1).draw(pi, x + dim0.width() + 5, y);
- } else {
- cell(2).draw(pi, x + 1, y);
- ShapeChanger dummy2(pi.base.font, UP_SHAPE);
- FracChanger dummy(pi.base);
- Dimension const dim1 = cell(1).dimension(*pi.base.bv);
- Dimension const dim2 = cell(2).dimension(*pi.base.bv);
- int xx = x + dim2.wid + 5;
- cell(0).draw(pi, xx + 2,
- y - dim0.des - 5);
- cell(1).draw(pi, xx + dim0.width() + 5,
- y + dim1.asc / 2);
- }
- } else {
- FracChanger dummy(pi.base);
- Dimension const dim1 = cell(1).dimension(*pi.base.bv);
- int m = x + dim.wid / 2;
- if (kind_ == NICEFRAC) {
- cell(0).draw(pi, x + 2,
- y - dim0.des - 5);
- cell(1).draw(pi, x + dim0.width() + 5,
- y + dim1.asc / 2);
- } else if (kind_ == UNITFRAC) {
- ShapeChanger dummy2(pi.base.font, UP_SHAPE);
- cell(0).draw(pi, x + 2, y - dim0.des - 5);
- cell(1).draw(pi, x + dim0.width() + 5, y + dim1.asc / 2);
- } else if (kind_ == FRAC || kind_ == ATOP || kind_ == OVER) {
- cell(0).draw(pi, m - dim0.wid / 2, y - dim0.des - 2 - 5);
- cell(1).draw(pi, m - dim1.wid / 2, y + dim1.asc + 2 - 5);
- } else if (kind_ == TFRAC) {
- // tfrac is in always in text size
- StyleChanger dummy2(pi.base, LM_ST_SCRIPT);
- cell(0).draw(pi, m - dim0.wid / 2, y - dim0.des - 2 - 5);
- cell(1).draw(pi, m - dim1.wid / 2, y + dim1.asc + 2 - 5);
- } else {
- // \cfrac and \dfrac are always in display size
- StyleChanger dummy2(pi.base, LM_ST_DISPLAY);
- if (kind_ == CFRAC || kind_ == DFRAC)
- cell(0).draw(pi, m - dim0.wid / 2, y - dim0.des - 2 - 5);
- else if (kind_ == CFRACLEFT)
- cell(0).draw(pi, x + 2, y - dim0.des - 2 - 5);
- else if (kind_ == CFRACRIGHT)
- cell(0).draw(pi, x + dim.wid - dim0.wid - 2,
- y - dim0.des - 2 - 5);
- cell(1).draw(pi, m - dim1.wid / 2, y + dim1.asc + 2 - 5);