]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathFactory.cpp
InsetMathHull.cpp: whitespace
[lyx.git] / src / mathed / MathFactory.cpp
index 2c67b32dc7b22bfc16c8272731f518360065e9d1..13159b7b43dffa5150e2ce4eb90ea42c4d0f20f3 100644 (file)
@@ -45,6 +45,7 @@
 #include "MathMacro.h"
 #include "MathMacroArgument.h"
 #include "MathParser.h"
+#include "MathStream.h"
 #include "MathSupport.h"
 
 #include "insets/InsetCommand.h"
@@ -235,6 +236,43 @@ void initMath()
 }
 
 
+bool ensureMath(WriteStream & os, bool needs_math_mode, bool macro)
+{
+       bool brace = os.pendingBrace();
+       os.pendingBrace(false);
+       if (!os.latex())
+               return brace;
+       if (os.textMode() && needs_math_mode) {
+               os << "\\ensuremath{";
+               os.textMode(false);
+               brace = true;
+       } else if (macro && brace && !needs_math_mode) {
+               // This is a user defined macro, but not a MathMacro, so we
+               // cannot be sure what mode is needed. As it was entered in
+               // a text box, we restore the text mode.
+               os << '}';
+               os.textMode(true);
+               brace = false;
+       }
+       return brace;
+}
+
+
+bool ensureMode(WriteStream & os, InsetMath::mode_type mode)
+{
+       bool textmode = mode == InsetMath::TEXT_MODE;
+       if (os.latex() && textmode && os.pendingBrace()) {
+               os.os() << '}';
+               os.pendingBrace(false);
+               os.pendingSpace(false);
+               os.textMode(true);
+       }
+       bool oldmode = os.textMode();
+       os.textMode(textmode);
+       return oldmode;
+}
+
+
 latexkeys const * in_word_set(docstring const & str)
 {
        MathWordList::iterator it = theWordList.find(str);
@@ -352,8 +390,14 @@ MathAtom createInsetMath(docstring const & s)
                return MathAtom(new InsetMathTabular(s, 1, 1));
        if (s == "stackrel")
                return MathAtom(new InsetMathStackrel);
-       if (s == "binom" || s == "choose")
-               return MathAtom(new InsetMathBinom(s == "choose"));
+       if (s == "binom")
+               return MathAtom(new InsetMathBinom(InsetMathBinom::BINOM));
+       if (s == "choose")
+               return MathAtom(new InsetMathBinom(InsetMathBinom::CHOOSE));
+       if (s == "brace")
+               return MathAtom(new InsetMathBinom(InsetMathBinom::BRACE));
+       if (s == "brack")
+               return MathAtom(new InsetMathBinom(InsetMathBinom::BRACK));
        if (s == "frac")
                return MathAtom(new InsetMathFrac);
        if (s == "over")
@@ -375,10 +419,12 @@ MathAtom createInsetMath(docstring const & s)
                return MathAtom(new InsetMathFrac(InsetMathFrac::ATOP));
        if (s == "lefteqn")
                return MathAtom(new InsetMathLefteqn);
-       if (s == "boldsymbol" || s == "bm")
-               return MathAtom(new InsetMathBoldSymbol(InsetMathBoldSymbol::BOLD));
+       if (s == "boldsymbol")
+               return MathAtom(new InsetMathBoldSymbol(InsetMathBoldSymbol::AMS_BOLD));
+       if (s == "bm")
+               return MathAtom(new InsetMathBoldSymbol(InsetMathBoldSymbol::BM_BOLD));
        if (s == "heavysymbol" || s == "hm")
-               return MathAtom(new InsetMathBoldSymbol(InsetMathBoldSymbol::HEAVY));
+               return MathAtom(new InsetMathBoldSymbol(InsetMathBoldSymbol::BM_HEAVY));
        if (s == "color" || s == "normalcolor")
                return MathAtom(new InsetMathColor(true));
        if (s == "textcolor")