]> git.lyx.org Git - features.git/commitdiff
Fix bug #8305: ^ symbol does not render into upward arrow when using mhchem
authorEnrico Forestieri <forenr@lyx.org>
Mon, 20 Aug 2012 23:30:51 +0000 (01:30 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Thu, 20 Sep 2012 11:39:37 +0000 (13:39 +0200)
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 "^ {}".

(cherry picked from commit f251e0189279147cbf20c4b4ad4ba4256396fd44)

src/mathed/InsetMathScript.cpp
status.20x

index 046b6791521638b6c3a07a84f768f3c466a89a75..f60b09043bfad022e97f99b74c8e4944ec37a203 100644 (file)
@@ -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 ";
index b69d477762d1ed51822035dd2227166a891f25c5..9f07dc6962c1f54f23a80862b02dcd1400967f48 100644 (file)
@@ -116,6 +116,9 @@ What's new
 
 - Fix LaTeX output of IPA tone symbols.
 
+- Fix support for mhchem upward arrows, which in mathed are rendered as
+  empty (brace insets) superscripts (bug 8305).
+
 
 * USER INTERFACE