]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathFactory.cpp
InsetMathHull.cpp: whitespace
[lyx.git] / src / mathed / MathFactory.cpp
index 284faadaaf8f54b279bd4e3a045172c030520350..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);