proper support for \underset

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3469 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2002-02-01 10:33:06 +00:00
parent c3e5ddf89a
commit 66d171ea78
7 changed files with 93 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2002-02-01 André Pönitz <poenitz@gmx.net>
* math_undersetinset.[Ch]: implement direct support for \underset
2002-01-28 Martin Vermeer <martin.vermeer@hut.fi>
* math_support.C: removed the arrays latex_mathstyle[] and
@ -74,7 +78,6 @@
* math_sizeinset.[Ch]: support for \displaystyle etc
2001-12-18 Dekel Tsur <dekelts@tau.ac.il>
* math_macrotable.C (builtinMacros): Adjust kern values.

View File

@ -125,5 +125,7 @@ libmathed_la_SOURCES = \
math_symbolinset.h \
math_unknowninset.C \
math_unknowninset.h \
math_undersetinset.C \
math_undersetinset.h \
math_xdata.C \
math_xdata.h

View File

@ -21,6 +21,7 @@
#include "math_sqrtinset.h"
#include "math_stackrelinset.h"
#include "math_symbolinset.h"
#include "math_undersetinset.h"
#include "math_unknowninset.h"
@ -41,6 +42,8 @@ MathAtom createMathInset(latexkeys const * l)
return MathAtom(new MathSymbolInset(l));
case LM_TK_STACK:
return MathAtom(new MathStackrelInset);
case LM_TK_UNDERSET:
return MathAtom(new MathUndersetInset);
case LM_TK_KERN:
return MathAtom(new MathKernInset);
case LM_TK_BINOM:

View File

@ -138,6 +138,7 @@ key_type wordlist_array[] =
{"underbar", LM_TK_DECORATION, 0},
{"underbrace", LM_TK_DECORATION, 0},
{"underline", LM_TK_DECORATION, 0},
{"underset", LM_TK_UNDERSET, 0},
{"vdots", LM_TK_DOTS, 0},
{"vec", LM_TK_DECORATION, 0},
{"widehat", LM_TK_DECORATION, 0},

View File

@ -110,6 +110,8 @@ enum MathTokenEnum
///
LM_TK_KERN,
///
LM_TK_UNDERSET,
///
LM_TK_STACK
};

View File

@ -0,0 +1,50 @@
#ifdef __GNUG__
#pragma implementation
#endif
#include "math_undersetinset.h"
#include "math_mathmlstream.h"
#include "math_support.h"
MathUndersetInset::MathUndersetInset()
{}
MathInset * MathUndersetInset::clone() const
{
return new MathUndersetInset(*this);
}
void MathUndersetInset::metrics(MathMetricsInfo const & mi) const
{
MathMetricsInfo m = mi;
smallerStyleFrac(m);
xcell(0).metrics(m);
xcell(1).metrics(mi);
width_ = std::max(xcell(0).width(), xcell(1).width()) + 4;
ascent_ = xcell(1).ascent();
descent_ = xcell(1).descent() + xcell(0).height() + 4;
}
void MathUndersetInset::draw(Painter & pain, int x, int y) const
{
int m = x + width() / 2;
int yo = y + xcell(1).descent() + xcell(0).ascent() + 1;
xcell(0).draw(pain, m - xcell(0).width() / 2, yo);
xcell(1).draw(pain, m - xcell(1).width() / 2, y);
}
void MathUndersetInset::write(WriteStream & os) const
{
os << "\\underset{" << cell(0) << "}{" << cell(1) << '}';
}
void MathUndersetInset::normalize(NormalStream & os) const
{
os << "[underset " << cell(0) << ' ' << cell(1) << ']';
}

View File

@ -0,0 +1,31 @@
// -*- C++ -*-
#ifndef MATH_UNDERSETINSET_H
#define MATH_UNDERSETINSET_H
#include "math_fracbase.h"
#ifdef __GNUG__
#pragma interface
#endif
/** Underset objects
\author André Pönitz
*/
class MathUndersetInset : public MathFracbaseInset {
public:
///
MathUndersetInset();
///
MathInset * clone() const;
///
void metrics(MathMetricsInfo const & st) const;
///
void draw(Painter &, int x, int y) const;
///
void write(WriteStream & os) const;
///
void normalize(NormalStream &) const;
};
#endif