Another implementation would have been to use the lspace and rspace attributes in MathML, but they require to give the exact spacing before and after the operator instead of relying on rules like TeX.
For instance, `$a\mathbin{+}b$` resulted in this MathML output before the patch:
```
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mi>a</mi><!-- -->
<mi>[mathbin [char + mathalpha]]</mi>
<mi>b</mi>
</mrow>
</math>
```
For comparison, this was the output with LyX 2.3.7
```
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mrow><mi>a</mi><!-- -->
<mi>[mathbin [char + mathalpha]]
</mi><mi>b</mi>
</mrow>
</mrow></math>
```
After this patch, it looks like:
```
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mstyle class='math'>
<mrow>
<mi>a</mi>
<mo>+</mo>
<mi>b</mi>
</mrow>
</mstyle>
</math>
```
#include <config.h>
#include "InsetMathClass.h"
+#include "MathStream.h"
#include "support/docstream.h"
}
+void InsetMathClass::mathmlize(MathMLStream & ms) const
+{
+ // Skip the \mathXXX macro, the MathML processor is supposed to handle
+ // spacing down the line.
+ for (size_t i = 0; i < nargs(); ++i) {
+ ms << cell(i);
+ }
+}
+
+
docstring InsetMathClass::name() const
{
return class_to_string(math_class_);
///
void write(TeXMathStream & os) const override;
///
+ void mathmlize(MathMLStream & ms) const override;
+ ///
void infoize(odocstream & os) const override;
///
InsetCode lyxCode() const override { return MATH_CLASS_CODE; }
* + Vcent: a vbox to be centered, produced by \vcenter.
*
* Over, Under, Acc, Rad and Vcent are not considered in the enum
- * below. The relvant elements will be considered as Ord.
+ * below. The relevant elements will be considered as Ord.
*/
enum MathClass {
MC_ORD,