diff --git a/src/functions/tag.js b/src/functions/tag.js index 65ad3e91..dc1df241 100644 --- a/src/functions/tag.js +++ b/src/functions/tag.js @@ -4,21 +4,37 @@ import mathMLTree from "../mathMLTree"; import * as mml from "../buildMathML"; +const pad = () => { + const padNode = new mathMLTree.MathNode("mtd", []); + padNode.setAttribute("width", "50%"); + return padNode; +}; + defineFunctionBuilders({ type: "tag", mathmlBuilder(group, options) { const table = new mathMLTree.MathNode("mtable", [ - new mathMLTree.MathNode("mlabeledtr", [ - new mathMLTree.MathNode("mtd", [ - mml.buildExpressionRow(group.tag, options), - ]), + new mathMLTree.MathNode("mtr", [ + pad(), new mathMLTree.MathNode("mtd", [ mml.buildExpressionRow(group.body, options), ]), + pad(), + new mathMLTree.MathNode("mtd", [ + mml.buildExpressionRow(group.tag, options), + ]), ]), ]); - table.setAttribute("side", "right"); + table.setAttribute("width", "100%"); return table; + + // TODO: Left-aligned tags. + // Currently, the group and options passed here do not contain + // enough info to set tag alignment. `leqno` is in Settings but it is + // not passed to Options. On the HTML side, leqno is + // set by a CSS class applied in buildTree.js. That would have worked + // in MathML if browsers supported . Since they don't, we + // need to rewrite the way this function is called. }, }); diff --git a/test/__snapshots__/mathml-spec.js.snap b/test/__snapshots__/mathml-spec.js.snap index bcf33615..b490ffa8 100644 --- a/test/__snapshots__/mathml-spec.js.snap +++ b/test/__snapshots__/mathml-spec.js.snap @@ -774,12 +774,9 @@ exports[`A MathML builder tags use 1`] = ` - - - - - (hi) - + + + @@ -799,7 +796,14 @@ exports[`A MathML builder tags use 1`] = ` - + + + + + (hi) + + + \\tag{hi} x+y^2