]> git.lyx.org Git - features.git/commitdiff
some support for \atop
authorAndré Pönitz <poenitz@gmx.net>
Fri, 17 Aug 2001 17:50:00 +0000 (17:50 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Fri, 17 Aug 2001 17:50:00 +0000 (17:50 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2542 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/math_cursor.C
src/mathed/math_factory.C
src/mathed/math_fracinset.C
src/mathed/math_fracinset.h
src/mathed/math_hash.C
src/mathed/math_parser.C
src/mathed/math_parser.h

index 935b4b9df0ada693d5e72c6d97edd220ca019914..7cfaa77b20d9c65b146ff3166939cfb3ceaafd14 100644 (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());
index 9128279744aa02dadd98d8b29a0fa10320263334..57ed1e1d97c7adf1cbea916a49fa0fb3c31e0092 100644 (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:
index 6f6853f31efddf443721c25b4d21d4d14c667d93..e4e08935ed0e250fa757ad7c20b6a1ebdb307717 100644 (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);
index 9e0031c57be58665bdbfaf0bc23810bd4153fab2..5db6f340c7053842a19fe694245be9679db00be6 100644 (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
index fc6262be975e5be97ac71242902de9db38aeb2c7..01ce7c409d4d05f9a7bb19ce8798144e0284df54 100644 (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},
index 0225ed3ea2d759f05fa0652ee73dc34c42f3f821..e17c420838866307bf963a4f5be18bcf8aca633a 100644 (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);
index f55473d2827141c10c2ddb9a6ccf9b6798621882..f1ad6a87b539fe10a7294acc43e216ee3890b8ae 100644 (file)
@@ -43,6 +43,8 @@ enum MathTokenEnum
        ///
        LM_TK_BINOM,
        ///
+       LM_TK_ATOP,
+       ///
        LM_TK_OVER,
        ///
        LM_TK_FRAC,