fix: \mathinner MathML when invoked as a denominator. (#3501)

* fix: \mathinner

* Write a better test for \mathinner

Fixes #3500
This commit is contained in:
Ron Kok
2022-01-12 09:32:54 -08:00
committed by GitHub
parent 80e769ba3f
commit 1f8512577b
2 changed files with 17 additions and 1 deletions

View File

@@ -22,7 +22,7 @@ function mathmlBuilder(group: ParseNode<"mclass">, options) {
const inner = mml.buildExpression(group.body, options);
if (group.mclass === "minner") {
return mathMLTree.newDocumentFragment(inner);
node = new mathMLTree.MathNode("mpadded", inner);
} else if (group.mclass === "mord") {
if (group.isCharacterBox) {
node = inner[0];
@@ -49,6 +49,9 @@ function mathmlBuilder(group: ParseNode<"mclass">, options) {
} else if (group.mclass === "mopen" || group.mclass === "mclose") {
node.attributes.lspace = "0em";
node.attributes.rspace = "0em";
} else if (group.mclass === "minner") {
node.attributes.lspace = "0.0556em"; // 1 mu is the most likely option
node.attributes.width = "+0.1111em";
}
// MathML <mo> default space is 5/18 em, so <mrel> needs no action.
// Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo

View File

@@ -101,6 +101,19 @@ describe("A rel parser", function() {
});
});
describe("A mathinner parser", function() {
it("should not fail", function() {
expect("\\mathinner{\\langle{\\psi}\\rangle}").toParse();
expect("\\frac 1 {\\mathinner{\\langle{\\psi}\\rangle}}").toParse();
});
it("should return one group, not a fragment", function() {
const contents = "\\mathinner{\\langle{\\psi}\\rangle}";
const mml = buildMathML(getParsed(contents), contents, defaultOptions);
expect(mml.children.length).toEqual(1);
});
});
describe("A punct parser", function() {
const expression = ",;";