[LyX/2.4.x] Fixup 5d40b9b779: finer control of primes

Jean-Marc Lasgouttes lasgouttes at lyx.org
Mon Sep 22 09:54:20 UTC 2025


commit 183836dde3a3bb07ab35d604b6cd609142810980
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Sat Sep 6 15:58:48 2025 +0200

    Fixup 5d40b9b779: finer control of primes
    
    Fix cases where primes are forced to appear to the right of
    super/subscripts.
    
    An empty {} will be inserted when a superscript or a prime have been used.
    
    No status.24x entry needed.
    
    (cherry picked from commit fc02eece787262330d1f926dcdffb923cf420bed)
    (cherry picked from commit 148efdf6bb52bcc3fbb03682f49d678ffe34388a)
    (cherry picked from commit 55f10d7f1a9ec6cd8d0e7c8fa453dbb84fcbf3a7)
---
 src/mathed/InsetMathScript.cpp | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp
index 36c32d5198..da413c7208 100644
--- a/src/mathed/InsetMathScript.cpp
+++ b/src/mathed/InsetMathScript.cpp
@@ -13,6 +13,7 @@
 #include "InsetMathScript.h"
 
 #include "InsetMathBrace.h"
+#include "InsetMathChar.h"
 #include "MathData.h"
 #include "MathStream.h"
 #include "MathSupport.h"
@@ -523,20 +524,19 @@ void InsetMathScript::write(TeXMathStream & os) const
 		    (up().size() == 1 && up().back()->asBraceInset() &&
 		     up().back()->asBraceInset()->cell(0).empty())))
 			os << "^ {}";
-		else {
+		else
 			os << "^{" << up() << '}';
-			// Avoid double superscript errors by writing an
-			// empty group {} when a prime immediately follows
-			if (os.latex())
-				os.useBraces(true);
-		}
 	}
 
-	if (hasDown() /*&& !down().empty()*/) {
+	if (hasDown() /*&& !down().empty()*/)
 		os << "_{" << down() << '}';
-		if (os.latex())
-			os.useBraces(true);
-	}
+
+	// Avoid double superscript errors by writing an
+	// empty group {} when a prime immediately follows
+	if (os.latex() && (hasUp() ||
+	    (hasDown() && !nuc().empty() && nuc().back()->asCharInset() &&
+	     nuc().back()->asCharInset()->getChar() == '\'')))
+		os.useBraces(true);
 
 	if (lock_ && !os.latex())
 		os << "\\lyxlock ";


More information about the lyx-cvs mailing list