some support for \atop

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2542 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2001-08-17 17:50:00 +00:00
parent 07a0f43eee
commit 1555e4c27c
7 changed files with 35 additions and 11 deletions

View File

@ -1188,7 +1188,7 @@ void MathCursor::interpret(string const & s)
return;
}
if (s == "\\over" || s == "\\choose") {
if (s == "\\over" || s == "\\choose" || s == "\\atop") {
MathArray ar = array();
MathInset * p = createMathInset(in_word_set(s.substr(1)));
p->cell(0).swap(array());

View File

@ -39,6 +39,8 @@ MathInset * createMathInset(latexkeys const * l)
case LM_TK_OVER:
case LM_TK_FRAC:
return new MathFracInset;
case LM_TK_ATOP:
return new MathFracInset(true);
case LM_TK_NOT:
return new MathNotInset;
case LM_TK_SQRT:

View File

@ -8,7 +8,8 @@
#include "support/LOstream.h"
MathFracInset::MathFracInset()
MathFracInset::MathFracInset(bool atop)
: atop_(atop)
{}
@ -36,23 +37,35 @@ void MathFracInset::draw(Painter & pain, int x, int y) const
int m = x + width() / 2;
xcell(0).draw(pain, m - xcell(0).width() / 2, y - xcell(0).descent() - 3 - 5);
xcell(1).draw(pain, m - xcell(1).width() / 2, y + xcell(1).ascent() + 3 - 5);
pain.line(x + 2, y - 5, x + width() - 4, y - 5, LColor::mathline);
if (!atop_)
pain.line(x + 2, y - 5, x + width() - 4, y - 5, LColor::mathline);
}
void MathFracInset::write(std::ostream & os, bool fragile) const
{
os << "\\frac{";
cell(0).write(os, fragile);
os << "}{";
cell(1).write(os, fragile);
os << '}';
if (atop_) {
os << "{";
cell(0).write(os, fragile);
os << "\\atop ";
cell(1).write(os, fragile);
os << '}';
} else {
os << "\\frac{";
cell(0).write(os, fragile);
os << "}{";
cell(1).write(os, fragile);
os << '}';
}
}
void MathFracInset::writeNormal(std::ostream & os) const
{
os << "[frac ";
if (atop_)
os << "[atop ";
else
os << "[frac ";
cell(0).writeNormal(os);
os << " ";
cell(1).writeNormal(os);

View File

@ -14,7 +14,7 @@
class MathFracInset : public MathFracbaseInset {
public:
///
MathFracInset();
explicit MathFracInset(bool atop = false);
///
MathInset * clone() const;
///
@ -25,6 +25,12 @@ public:
void metrics(MathStyles st) const;
///
void draw(Painter &, int x, int y) const;
public:
///
char const name() const;
///
const bool atop_;
};
#endif

View File

@ -67,6 +67,7 @@ latexkeys wordlist[] =
{"arctan", LM_TK_FUNC, 0, LMB_NONE},
{"arg", LM_TK_FUNC, 0, LMB_NONE},
{"asymp", LM_TK_NOGLYPH, 0, LMB_RELATION},
{"atop", LM_TK_ATOP, 0, LMB_NONE},
{"backslash", LM_TK_SPECIAL, '\\', LMB_NONE},
{"bar", LM_TK_DECORATION, LM_bar, LMB_NONE},
{"begin", LM_TK_BEGIN, 0, LMB_NONE},

View File

@ -820,7 +820,7 @@ void Parser::parse_into(MathArray & array, unsigned flags)
//curr_label_ = getArg('{', '}');
}
else if (t.cs() == "choose" || t.cs() == "over") {
else if (t.cs() == "choose" || t.cs() == "over" || t.cs() == "atop") {
limits = 0;
MathInset * p = createMathInset(t.cs());
p->cell(0).swap(array);

View File

@ -43,6 +43,8 @@ enum MathTokenEnum
///
LM_TK_BINOM,
///
LM_TK_ATOP,
///
LM_TK_OVER,
///
LM_TK_FRAC,