Support MathML display mode (#2220)

This commit is contained in:
Ron Kok
2020-03-23 10:28:43 -07:00
committed by GitHub
parent 284ccc602a
commit 69a22d3cfb
4 changed files with 15 additions and 5 deletions

View File

@@ -238,6 +238,7 @@ export default function buildMathML(
tree: AnyParseNode[],
texExpression: string,
options: Options,
isDisplayMode: boolean,
forMathmlOnly: boolean,
): DomSpan {
const expression = buildExpression(tree, options);
@@ -263,6 +264,9 @@ export default function buildMathML(
const math = new mathMLTree.MathNode("math", [semantics]);
math.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML");
if (isDisplayMode) {
math.setAttribute("display", "block");
}
// You can't style <math> nodes, so we wrap the node in a span.
// NOTE: The span class is not typed to have <math> nodes as children, and

View File

@@ -39,12 +39,13 @@ export const buildTree = function(
const options = optionsFromSettings(settings);
let katexNode;
if (settings.output === "mathml") {
return buildMathML(tree, expression, options, true);
return buildMathML(tree, expression, options, settings.displayMode, true);
} else if (settings.output === "html") {
const htmlNode = buildHTML(tree, options);
katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
} else {
const mathMLNode = buildMathML(tree, expression, options, false);
const mathMLNode = buildMathML(tree, expression, options,
settings.displayMode, false);
const htmlNode = buildHTML(tree, options);
katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]);
}

View File

@@ -359,7 +359,9 @@ exports[`A MathML builder should output \\limsup_{x \\rightarrow \\infty} correc
exports[`A MathML builder should output \\limsup_{x \\rightarrow \\infty} in displaymode correctly 1`] = `
<math xmlns="http://www.w3.org/1998/Math/MathML">
<math xmlns="http://www.w3.org/1998/Math/MathML"
display="block"
>
<semantics>
<mrow>
<munder>
@@ -766,7 +768,9 @@ exports[`A MathML builder special spaces render specially 1`] = `
exports[`A MathML builder tags use <mlabeledtr> 1`] = `
<math xmlns="http://www.w3.org/1998/Math/MathML">
<math xmlns="http://www.w3.org/1998/Math/MathML"
display="block"
>
<semantics>
<mtable width="100%">
<mtr>

View File

@@ -20,7 +20,8 @@ const getMathML = function(expr, settings = new Settings()) {
maxSize: Infinity,
});
const built = buildMathML(parseTree(expr, settings), expr, options);
const built = buildMathML(parseTree(expr, settings), expr, options,
settings.displayMode);
// Strip off the surrounding <span>
return built.children[0].toMarkup();