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