MathML: don't output delimiters in InsetMathBinom and

InsetMathDelim if the delimiter is a space.
This commit is contained in:
Thibaut Cuvelier 2024-03-11 01:30:48 +01:00
parent 9e6b810b37
commit be03d69946
2 changed files with 27 additions and 17 deletions

View File

@ -189,15 +189,20 @@ void InsetMathDelim::mathematica(MathematicaStream & os) const
void InsetMathDelim::mathmlize(MathMLStream & ms) const
{
ms << MTag("mrow")
<< MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'")
<< convertDelimToXMLEscape(left_)
<< ETagInline("mo")
<< cell(0)
<< MTagInline("mo", "form='postfix' fence='true' stretchy='true' symmetric='true'")
<< convertDelimToXMLEscape(right_)
<< ETagInline("mo")
<< ETag("mrow");
// Ignore the delimiter if: it is empty or only a space (one character).
if (!left_.empty() && ((left_.size() == 1 && left_[0] != ' ') || left_.size() > 1)) {
ms << MTag("mrow")
<< MTagInline("mo", "form='prefix' fence='true' stretchy='true' symmetric='true'")
<< convertDelimToXMLEscape(left_)
<< ETagInline("mo");
}
ms << cell(0);
if (!right_.empty() && ((right_.size() == 1 && right_[0] != ' ') || right_.size() > 1)) {
ms << MTagInline("mo", "form='postfix' fence='true' stretchy='true' symmetric='true'")
<< convertDelimToXMLEscape(right_)
<< ETagInline("mo")
<< ETag("mrow");
}
}

View File

@ -768,15 +768,20 @@ void InsetMathBinom::mathmlize(MathMLStream & ms) const
rdelim = ']';
break;
}
ms << MTagInline("mo", "fence='true' stretchy='true' form='prefix'")
<< ldelim
<< ETagInline("mo")
<< MTagInline("mfrac", "linethickness='0'")
if (ldelim != ' ') {
ms << MTagInline("mo", "fence='true' stretchy='true' form='prefix'")
<< ldelim
<< ETagInline("mo");
}
ms << MTagInline("mfrac", "linethickness='0'")
<< cell(0) << cell(1)
<< ETagInline("mfrac")
<< MTagInline("mo", "fence='true' stretchy='true' form='postfix'")
<< rdelim
<< ETagInline("mo");
<< ETagInline("mfrac");
if (rdelim != ' ') {
ms << MTagInline("mo", "fence='true' stretchy='true' form='postfix'")
<< rdelim
<< ETagInline("mo");
}
}