The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit f251e0189279147cbf20c4b4ad4ba4256396fd44
Author: Enrico Forestieri <[email protected]>
Date:   Tue Aug 21 01:30:51 2012 +0200

    Fix bug #8305: ^ symbol does not render into upward arrow when using mhchem
    
    The mhchem package treats the caret both as a shorthand for \uparrow or
    as a superscript operator according to whether it is surrounded by
    spaces or not. The \ce and \cf insets allow inserting spaces but there
    is no provision for inserting a space after the caret, which is always
    considered by LyX as a superscript operator. The solution here is to
    insert a space after the caret if the superscript is empty or an empty
    brace inset.
    
    Mathed does not allow empty superscripts, so an empty brace has to be
    inserted when working in LyX. On the other hand, when importing latex
    code, an empty superscript is retained.
    
    This has no effect whatsoever for normal latex code, as a space after
    the caret is ignored. In any case, the output is only changed if an
    empty brace inset is used as superscript. Specifically, the output is
    changed from "^{{}}" to "^ {}".

diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp
index a9f4b38..9dae426 100644
--- a/src/mathed/InsetMathScript.cpp
+++ b/src/mathed/InsetMathScript.cpp
@@ -15,6 +15,7 @@
 #include "DispatchResult.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetMathBrace.h"
 #include "InsetMathFont.h"
 #include "InsetMathScript.h"
 #include "InsetMathSymbol.h"
@@ -547,8 +548,16 @@ void InsetMathScript::write(WriteStream & os) const
        if (hasDown() /*&& down().size()*/)
                os << "_{" << down() << '}';
 
-       if (hasUp() /*&& up().size()*/)
-               os << "^{" << up() << '}';
+       if (hasUp() /*&& up().size()*/) {
+               // insert space if up() is empty or an empty brace inset
+               // (see bug 8305)
+               if (os.latex() && (up().size() == 0 ||
+                   (up().size() == 1 && up().back()->asBraceInset() &&
+                    up().back()->asBraceInset()->cell(0).empty())))
+                       os << "^ {}";
+               else
+                       os << "^{" << up() << '}';
+       }
 
        if (lock_ && !os.latex())
                os << "\\lyxlock ";

-----------------------------------------------------------------------

Summary of changes:
 src/mathed/InsetMathScript.cpp |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to