mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-09 04:58:40 +00:00
Improve MathML for extensible arrows (#1901)
* Add padding * Fix lint errors * Pick up comments * Pick up comment
This commit is contained in:
@@ -9,6 +9,14 @@ import * as mml from "../buildMathML";
|
||||
|
||||
import type {ParseNode} from "../parseNode";
|
||||
|
||||
// Helper function
|
||||
const paddedNode = group => {
|
||||
const node = new mathMLTree.MathNode("mpadded", group ? [group] : []);
|
||||
node.setAttribute("width", "+0.6em");
|
||||
node.setAttribute("lspace", "0.3em");
|
||||
return node;
|
||||
};
|
||||
|
||||
// Stretchy arrows with an optional argument
|
||||
defineFunction({
|
||||
type: "xArrow",
|
||||
@@ -105,12 +113,11 @@ defineFunction({
|
||||
mathmlBuilder(group, options) {
|
||||
const arrowNode = stretchy.mathMLnode(group.label);
|
||||
let node;
|
||||
let lowerNode;
|
||||
|
||||
if (group.body) {
|
||||
const upperNode = mml.buildGroup(group.body, options);
|
||||
const upperNode = paddedNode(mml.buildGroup(group.body, options));
|
||||
if (group.below) {
|
||||
lowerNode = mml.buildGroup(group.below, options);
|
||||
const lowerNode = paddedNode(mml.buildGroup(group.below, options));
|
||||
node = new mathMLTree.MathNode(
|
||||
"munderover", [arrowNode, lowerNode, upperNode]
|
||||
);
|
||||
@@ -118,10 +125,13 @@ defineFunction({
|
||||
node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
|
||||
}
|
||||
} else if (group.below) {
|
||||
lowerNode = mml.buildGroup(group.below, options);
|
||||
const lowerNode = paddedNode(mml.buildGroup(group.below, options));
|
||||
node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
|
||||
} else {
|
||||
node = new mathMLTree.MathNode("mover", [arrowNode]);
|
||||
// This should never happen.
|
||||
// Parser.js throws an error if there is no argument.
|
||||
node = paddedNode();
|
||||
node = new mathMLTree.MathNode("mover", [arrowNode, node]);
|
||||
}
|
||||
return node;
|
||||
},
|
||||
|
Reference in New Issue
Block a user