commit 7e6597a5b47c22ed22966a75c149264dacd6e289
Author: Thibaut Cuvelier <tcuvel...@lyx.org>
Date:   Mon Mar 11 02:00:47 2024 +0100

    MathML: don't let the processor stretch operators when they are single 
characters for LyX.
    
    The main goal is to match TeX' behaviour. If you want stretchy operators, 
use InsetMathDelim / \left & \right. This patch will change the output in many 
files, but making the rendering much closer to that of TeX (which users should 
expect, due to LyX' roots in TeX).
---
 src/mathed/InsetMathChar.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/mathed/InsetMathChar.cpp b/src/mathed/InsetMathChar.cpp
index 71aba6f6f7..a642a5e6da 100644
--- a/src/mathed/InsetMathChar.cpp
+++ b/src/mathed/InsetMathChar.cpp
@@ -230,6 +230,8 @@ void InsetMathChar::octave(OctaveStream & os) const
 // mathalpha, then we'll treat it as an identifier, otherwise as an
 // operator.
 // Worst case: We get bad spacing, or bad italics.
+// In any case, never let MathML stretch a single character when it
+// is recognised as an operator, to match TeX' behaviour.
 void InsetMathChar::mathmlize(MathMLStream & ms) const
 {
        std::string entity;
@@ -253,7 +255,7 @@ void InsetMathChar::mathmlize(MathMLStream & ms) const
        }
 
        if (!entity.empty()) {
-               ms << MTagInline("mo")
+               ms << MTagInline("mo", "stretchy='false'")
                   << from_ascii(entity)
                   << ETagInline("mo");
                return;
@@ -262,7 +264,7 @@ void InsetMathChar::mathmlize(MathMLStream & ms) const
        char const * type =
                (isAlphaASCII(char_) || Encodings::isMathAlpha(char_))
                        ? "mi" : "mo";
-       ms << MTagInline(type)
+       ms << MTagInline(type, std::string(type) == "mo" ? "stretchy='false'" : 
"")
           << char_type(char_)
           << ETagInline(type);
 }
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to