temml 0.10.4 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/temml.cjs +73 -92
- package/dist/temml.js +73 -92
- package/dist/temml.min.js +1 -1
- package/dist/temml.mjs +73 -92
- package/dist/temmlPostProcess.js +1 -1
- package/package.json +1 -1
- package/src/buildMathML.js +4 -2
- package/src/functions/color.js +11 -7
- package/src/functions/delimsizing.js +1 -1
- package/src/functions/font.js +0 -1
- package/src/linebreaking.js +60 -82
- package/src/postProcess.js +1 -1
package/dist/temml.cjs
CHANGED
@@ -1761,125 +1761,102 @@ for (let i = 0; i < 10; i++) {
|
|
1761
1761
|
* much of this module.
|
1762
1762
|
*/
|
1763
1763
|
|
1764
|
-
function setLineBreaks(expression, wrapMode, isDisplayMode
|
1765
|
-
if (color === undefined && wrapMode !== "none") {
|
1766
|
-
// First, make one pass through the expression and split any color nodes.
|
1767
|
-
const upperLimit = expression.length - 1;
|
1768
|
-
for (let i = upperLimit; i >= 0; i--) {
|
1769
|
-
const node = expression[i];
|
1770
|
-
if (node.type === "mstyle" && node.attributes.mathcolor) {
|
1771
|
-
const color = node.attributes.mathcolor;
|
1772
|
-
const fragment = setLineBreaks(node.children, wrapMode, isDisplayMode, color);
|
1773
|
-
if (!(fragment.type && fragment.type !== "mtable")) {
|
1774
|
-
expression.splice(i, 1, ...fragment.children);
|
1775
|
-
}
|
1776
|
-
}
|
1777
|
-
}
|
1778
|
-
}
|
1779
|
-
|
1780
|
-
const tagName = color ? "mstyle" : "mrow";
|
1781
|
-
|
1764
|
+
function setLineBreaks(expression, wrapMode, isDisplayMode) {
|
1782
1765
|
const mtrs = [];
|
1783
1766
|
let mrows = [];
|
1784
1767
|
let block = [];
|
1785
1768
|
let numTopLevelEquals = 0;
|
1786
1769
|
let canBeBIN = false; // The first node cannot be an infix binary operator.
|
1787
|
-
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
// Start a new block. (Insert a soft linebreak.)
|
1792
|
-
mrows.push(new mathMLTree.MathNode(tagName, block));
|
1793
|
-
}
|
1794
|
-
// Insert the mstyle
|
1795
|
-
mrows.push(node);
|
1796
|
-
block = [];
|
1797
|
-
continue
|
1770
|
+
let i = 0;
|
1771
|
+
while (i < expression.length) {
|
1772
|
+
while (expression[i] instanceof DocumentFragment) {
|
1773
|
+
expression.splice(i, 1, ...expression[i].children); // Expand the fragment.
|
1798
1774
|
}
|
1775
|
+
const node = expression[i];
|
1799
1776
|
if (node.attributes && node.attributes.linebreak &&
|
1800
1777
|
node.attributes.linebreak === "newline") {
|
1801
1778
|
// A hard line break. Create a <mtr> for the current block.
|
1802
1779
|
if (block.length > 0) {
|
1803
|
-
|
1804
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1805
|
-
mrows.push(new mathMLTree.MathNode(tagName, block));
|
1780
|
+
mrows.push(new mathMLTree.MathNode("mrow", block));
|
1806
1781
|
}
|
1807
1782
|
mrows.push(node);
|
1808
1783
|
block = [];
|
1809
1784
|
const mtd = new mathMLTree.MathNode("mtd", mrows);
|
1785
|
+
mtd.style.textAlign = "left";
|
1810
1786
|
mtrs.push(new mathMLTree.MathNode("mtr", [mtd]));
|
1811
1787
|
mrows = [];
|
1788
|
+
i += 1;
|
1812
1789
|
continue
|
1813
1790
|
}
|
1814
1791
|
block.push(node);
|
1815
|
-
if (node.type && node.type === "mo" &&
|
1816
|
-
if (
|
1792
|
+
if (node.type && node.type === "mo" && node.children.length === 1) {
|
1793
|
+
if (wrapMode === "=" && node.children[0].text === "=") {
|
1817
1794
|
numTopLevelEquals += 1;
|
1818
1795
|
if (numTopLevelEquals > 1) {
|
1819
1796
|
block.pop();
|
1820
1797
|
// Start a new block. (Insert a soft linebreak.)
|
1821
|
-
const element = new mathMLTree.MathNode(
|
1822
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1798
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1823
1799
|
mrows.push(element);
|
1824
1800
|
block = [node];
|
1825
1801
|
}
|
1826
|
-
}
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1839
|
-
)
|
1840
|
-
|
1841
|
-
|
1842
|
-
|
1843
|
-
|
1844
|
-
const nd = expression[j];
|
1845
|
-
if (
|
1846
|
-
nd.type &&
|
1847
|
-
nd.type === "mspace" &&
|
1848
|
-
!(nd.attributes.linebreak && nd.attributes.linebreak === "newline")
|
1849
|
-
) {
|
1850
|
-
block.push(nd);
|
1851
|
-
i += 1;
|
1802
|
+
} else if (wrapMode === "tex") {
|
1803
|
+
// This may be a place for a soft line break.
|
1804
|
+
if (canBeBIN && !node.attributes.form) {
|
1805
|
+
// Check if the following node is a \nobreak text node, e.g. "~""
|
1806
|
+
const next = i < expression.length - 1 ? expression[i + 1] : null;
|
1807
|
+
let glueIsFreeOfNobreak = true;
|
1808
|
+
if (
|
1809
|
+
!(
|
1810
|
+
next &&
|
1811
|
+
next.type === "mtext" &&
|
1812
|
+
next.attributes.linebreak &&
|
1813
|
+
next.attributes.linebreak === "nobreak"
|
1814
|
+
)
|
1815
|
+
) {
|
1816
|
+
// We may need to start a new block.
|
1817
|
+
// First, put any post-operator glue on same line as operator.
|
1818
|
+
for (let j = i + 1; j < expression.length; j++) {
|
1819
|
+
const nd = expression[j];
|
1852
1820
|
if (
|
1853
|
-
nd.
|
1854
|
-
nd.
|
1855
|
-
nd.attributes.linebreak === "
|
1821
|
+
nd.type &&
|
1822
|
+
nd.type === "mspace" &&
|
1823
|
+
!(nd.attributes.linebreak && nd.attributes.linebreak === "newline")
|
1856
1824
|
) {
|
1857
|
-
|
1825
|
+
block.push(nd);
|
1826
|
+
i += 1;
|
1827
|
+
if (
|
1828
|
+
nd.attributes &&
|
1829
|
+
nd.attributes.linebreak &&
|
1830
|
+
nd.attributes.linebreak === "nobreak"
|
1831
|
+
) {
|
1832
|
+
glueIsFreeOfNobreak = false;
|
1833
|
+
}
|
1834
|
+
} else {
|
1835
|
+
break;
|
1858
1836
|
}
|
1859
|
-
} else {
|
1860
|
-
break;
|
1861
1837
|
}
|
1862
1838
|
}
|
1839
|
+
if (glueIsFreeOfNobreak) {
|
1840
|
+
// Start a new block. (Insert a soft linebreak.)
|
1841
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1842
|
+
mrows.push(element);
|
1843
|
+
block = [];
|
1844
|
+
}
|
1845
|
+
canBeBIN = false;
|
1863
1846
|
}
|
1864
|
-
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1868
|
-
|
1869
|
-
block = [];
|
1870
|
-
}
|
1871
|
-
canBeBIN = false;
|
1847
|
+
const isOpenDelimiter = node.attributes.form && node.attributes.form === "prefix";
|
1848
|
+
// Any operator that follows an open delimiter is unary.
|
1849
|
+
canBeBIN = !(node.attributes.separator || isOpenDelimiter);
|
1850
|
+
} else {
|
1851
|
+
canBeBIN = true;
|
1872
1852
|
}
|
1873
|
-
const isOpenDelimiter = node.attributes.form && node.attributes.form === "prefix";
|
1874
|
-
// Any operator that follows an open delimiter is unary.
|
1875
|
-
canBeBIN = !(node.attributes.separator || isOpenDelimiter);
|
1876
1853
|
} else {
|
1877
1854
|
canBeBIN = true;
|
1878
1855
|
}
|
1856
|
+
i += 1;
|
1879
1857
|
}
|
1880
1858
|
if (block.length > 0) {
|
1881
|
-
const element = new mathMLTree.MathNode(
|
1882
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1859
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1883
1860
|
mrows.push(element);
|
1884
1861
|
}
|
1885
1862
|
if (mtrs.length > 0) {
|
@@ -2014,7 +1991,9 @@ const consolidateNumbers = expression => {
|
|
2014
1991
|
*/
|
2015
1992
|
const makeRow = function(body) {
|
2016
1993
|
if (body.length === 1) {
|
2017
|
-
return body[0]
|
1994
|
+
return body[0] instanceof DocumentFragment
|
1995
|
+
? body[0]
|
1996
|
+
: new mathMLTree.MathNode("mrow", body);
|
2018
1997
|
} else {
|
2019
1998
|
return new mathMLTree.MathNode("mrow", body);
|
2020
1999
|
}
|
@@ -2128,7 +2107,6 @@ function buildMathML(tree, texExpression, style, settings) {
|
|
2128
2107
|
|
2129
2108
|
const n1 = expression.length === 0 ? null : expression[0];
|
2130
2109
|
let wrapper = expression.length === 1 && tag === null && (n1 instanceof MathNode)
|
2131
|
-
&& !(n1.type === "mstyle" && n1.attributes.mathcolor)
|
2132
2110
|
? expression[0]
|
2133
2111
|
: setLineBreaks(expression, wrap, settings.displayMode);
|
2134
2112
|
|
@@ -3055,7 +3033,7 @@ const colorFromSpec = (model, spec) => {
|
|
3055
3033
|
spec.split(",").map(e => {
|
3056
3034
|
const num = Number(e.trim());
|
3057
3035
|
if (num > 1) { throw new ParseError("Color rgb input must be < 1.") }
|
3058
|
-
color += toHex((num * 255));
|
3036
|
+
color += toHex(Number((num * 255).toFixed(0)));
|
3059
3037
|
});
|
3060
3038
|
}
|
3061
3039
|
if (color.charAt(0) !== "#") { color = "#" + color; }
|
@@ -3082,11 +3060,15 @@ const validateColor = (color, macros, token) => {
|
|
3082
3060
|
};
|
3083
3061
|
|
3084
3062
|
const mathmlBuilder$9 = (group, style) => {
|
3085
|
-
|
3086
|
-
//
|
3087
|
-
|
3088
|
-
|
3089
|
-
|
3063
|
+
// In LaTeX, color is not supposed to change the spacing of any node.
|
3064
|
+
// So instead of wrapping the group in an <mstyle>, we apply
|
3065
|
+
// the color individually to each node and return a document fragment.
|
3066
|
+
let expr = buildExpression(group.body, style.withColor(group.color));
|
3067
|
+
expr = expr.map(e => {
|
3068
|
+
e.style.color = group.color;
|
3069
|
+
return e
|
3070
|
+
});
|
3071
|
+
return mathMLTree.newDocumentFragment(expr)
|
3090
3072
|
};
|
3091
3073
|
|
3092
3074
|
defineFunction({
|
@@ -3738,7 +3720,7 @@ defineFunction({
|
|
3738
3720
|
if (group.right === "\u2216" || group.right.indexOf("arrow") > -1) {
|
3739
3721
|
rightNode.setAttribute("stretchy", "true");
|
3740
3722
|
}
|
3741
|
-
if (group.rightColor) { rightNode.
|
3723
|
+
if (group.rightColor) { rightNode.style.color = group.rightColor; }
|
3742
3724
|
inner.push(rightNode);
|
3743
3725
|
|
3744
3726
|
return makeRow(inner);
|
@@ -4922,7 +4904,6 @@ const mathmlBuilder$6 = (group, style) => {
|
|
4922
4904
|
for (let i = 1; i < mathGroup.children.length; i++) {
|
4923
4905
|
mi.children.push(mathGroup.children[i].children[0]);
|
4924
4906
|
}
|
4925
|
-
if (mathGroup.attributes.mathcolor) { mi.attributes.mathcolor = mathGroup.attributes.mathcolor; }
|
4926
4907
|
if (mi.attributes.mathvariant && mi.attributes.mathvariant === "normal") {
|
4927
4908
|
// Workaround for a Firefox bug that renders spurious space around
|
4928
4909
|
// a <mi mathvariant="normal">
|
@@ -12997,7 +12978,7 @@ class Style {
|
|
12997
12978
|
* https://mit-license.org/
|
12998
12979
|
*/
|
12999
12980
|
|
13000
|
-
const version = "0.10.
|
12981
|
+
const version = "0.10.6";
|
13001
12982
|
|
13002
12983
|
function postProcess(block) {
|
13003
12984
|
const labelMap = {};
|
package/dist/temml.js
CHANGED
@@ -1762,125 +1762,102 @@ var temml = (function () {
|
|
1762
1762
|
* much of this module.
|
1763
1763
|
*/
|
1764
1764
|
|
1765
|
-
function setLineBreaks(expression, wrapMode, isDisplayMode
|
1766
|
-
if (color === undefined && wrapMode !== "none") {
|
1767
|
-
// First, make one pass through the expression and split any color nodes.
|
1768
|
-
const upperLimit = expression.length - 1;
|
1769
|
-
for (let i = upperLimit; i >= 0; i--) {
|
1770
|
-
const node = expression[i];
|
1771
|
-
if (node.type === "mstyle" && node.attributes.mathcolor) {
|
1772
|
-
const color = node.attributes.mathcolor;
|
1773
|
-
const fragment = setLineBreaks(node.children, wrapMode, isDisplayMode, color);
|
1774
|
-
if (!(fragment.type && fragment.type !== "mtable")) {
|
1775
|
-
expression.splice(i, 1, ...fragment.children);
|
1776
|
-
}
|
1777
|
-
}
|
1778
|
-
}
|
1779
|
-
}
|
1780
|
-
|
1781
|
-
const tagName = color ? "mstyle" : "mrow";
|
1782
|
-
|
1765
|
+
function setLineBreaks(expression, wrapMode, isDisplayMode) {
|
1783
1766
|
const mtrs = [];
|
1784
1767
|
let mrows = [];
|
1785
1768
|
let block = [];
|
1786
1769
|
let numTopLevelEquals = 0;
|
1787
1770
|
let canBeBIN = false; // The first node cannot be an infix binary operator.
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
// Start a new block. (Insert a soft linebreak.)
|
1793
|
-
mrows.push(new mathMLTree.MathNode(tagName, block));
|
1794
|
-
}
|
1795
|
-
// Insert the mstyle
|
1796
|
-
mrows.push(node);
|
1797
|
-
block = [];
|
1798
|
-
continue
|
1771
|
+
let i = 0;
|
1772
|
+
while (i < expression.length) {
|
1773
|
+
while (expression[i] instanceof DocumentFragment) {
|
1774
|
+
expression.splice(i, 1, ...expression[i].children); // Expand the fragment.
|
1799
1775
|
}
|
1776
|
+
const node = expression[i];
|
1800
1777
|
if (node.attributes && node.attributes.linebreak &&
|
1801
1778
|
node.attributes.linebreak === "newline") {
|
1802
1779
|
// A hard line break. Create a <mtr> for the current block.
|
1803
1780
|
if (block.length > 0) {
|
1804
|
-
|
1805
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1806
|
-
mrows.push(new mathMLTree.MathNode(tagName, block));
|
1781
|
+
mrows.push(new mathMLTree.MathNode("mrow", block));
|
1807
1782
|
}
|
1808
1783
|
mrows.push(node);
|
1809
1784
|
block = [];
|
1810
1785
|
const mtd = new mathMLTree.MathNode("mtd", mrows);
|
1786
|
+
mtd.style.textAlign = "left";
|
1811
1787
|
mtrs.push(new mathMLTree.MathNode("mtr", [mtd]));
|
1812
1788
|
mrows = [];
|
1789
|
+
i += 1;
|
1813
1790
|
continue
|
1814
1791
|
}
|
1815
1792
|
block.push(node);
|
1816
|
-
if (node.type && node.type === "mo" &&
|
1817
|
-
if (
|
1793
|
+
if (node.type && node.type === "mo" && node.children.length === 1) {
|
1794
|
+
if (wrapMode === "=" && node.children[0].text === "=") {
|
1818
1795
|
numTopLevelEquals += 1;
|
1819
1796
|
if (numTopLevelEquals > 1) {
|
1820
1797
|
block.pop();
|
1821
1798
|
// Start a new block. (Insert a soft linebreak.)
|
1822
|
-
const element = new mathMLTree.MathNode(
|
1823
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1799
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1824
1800
|
mrows.push(element);
|
1825
1801
|
block = [node];
|
1826
1802
|
}
|
1827
|
-
}
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1839
|
-
|
1840
|
-
)
|
1841
|
-
|
1842
|
-
|
1843
|
-
|
1844
|
-
|
1845
|
-
const nd = expression[j];
|
1846
|
-
if (
|
1847
|
-
nd.type &&
|
1848
|
-
nd.type === "mspace" &&
|
1849
|
-
!(nd.attributes.linebreak && nd.attributes.linebreak === "newline")
|
1850
|
-
) {
|
1851
|
-
block.push(nd);
|
1852
|
-
i += 1;
|
1803
|
+
} else if (wrapMode === "tex") {
|
1804
|
+
// This may be a place for a soft line break.
|
1805
|
+
if (canBeBIN && !node.attributes.form) {
|
1806
|
+
// Check if the following node is a \nobreak text node, e.g. "~""
|
1807
|
+
const next = i < expression.length - 1 ? expression[i + 1] : null;
|
1808
|
+
let glueIsFreeOfNobreak = true;
|
1809
|
+
if (
|
1810
|
+
!(
|
1811
|
+
next &&
|
1812
|
+
next.type === "mtext" &&
|
1813
|
+
next.attributes.linebreak &&
|
1814
|
+
next.attributes.linebreak === "nobreak"
|
1815
|
+
)
|
1816
|
+
) {
|
1817
|
+
// We may need to start a new block.
|
1818
|
+
// First, put any post-operator glue on same line as operator.
|
1819
|
+
for (let j = i + 1; j < expression.length; j++) {
|
1820
|
+
const nd = expression[j];
|
1853
1821
|
if (
|
1854
|
-
nd.
|
1855
|
-
nd.
|
1856
|
-
nd.attributes.linebreak === "
|
1822
|
+
nd.type &&
|
1823
|
+
nd.type === "mspace" &&
|
1824
|
+
!(nd.attributes.linebreak && nd.attributes.linebreak === "newline")
|
1857
1825
|
) {
|
1858
|
-
|
1826
|
+
block.push(nd);
|
1827
|
+
i += 1;
|
1828
|
+
if (
|
1829
|
+
nd.attributes &&
|
1830
|
+
nd.attributes.linebreak &&
|
1831
|
+
nd.attributes.linebreak === "nobreak"
|
1832
|
+
) {
|
1833
|
+
glueIsFreeOfNobreak = false;
|
1834
|
+
}
|
1835
|
+
} else {
|
1836
|
+
break;
|
1859
1837
|
}
|
1860
|
-
} else {
|
1861
|
-
break;
|
1862
1838
|
}
|
1863
1839
|
}
|
1840
|
+
if (glueIsFreeOfNobreak) {
|
1841
|
+
// Start a new block. (Insert a soft linebreak.)
|
1842
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1843
|
+
mrows.push(element);
|
1844
|
+
block = [];
|
1845
|
+
}
|
1846
|
+
canBeBIN = false;
|
1864
1847
|
}
|
1865
|
-
|
1866
|
-
|
1867
|
-
|
1868
|
-
|
1869
|
-
|
1870
|
-
block = [];
|
1871
|
-
}
|
1872
|
-
canBeBIN = false;
|
1848
|
+
const isOpenDelimiter = node.attributes.form && node.attributes.form === "prefix";
|
1849
|
+
// Any operator that follows an open delimiter is unary.
|
1850
|
+
canBeBIN = !(node.attributes.separator || isOpenDelimiter);
|
1851
|
+
} else {
|
1852
|
+
canBeBIN = true;
|
1873
1853
|
}
|
1874
|
-
const isOpenDelimiter = node.attributes.form && node.attributes.form === "prefix";
|
1875
|
-
// Any operator that follows an open delimiter is unary.
|
1876
|
-
canBeBIN = !(node.attributes.separator || isOpenDelimiter);
|
1877
1854
|
} else {
|
1878
1855
|
canBeBIN = true;
|
1879
1856
|
}
|
1857
|
+
i += 1;
|
1880
1858
|
}
|
1881
1859
|
if (block.length > 0) {
|
1882
|
-
const element = new mathMLTree.MathNode(
|
1883
|
-
if (color) { element.setAttribute("mathcolor", color); }
|
1860
|
+
const element = new mathMLTree.MathNode("mrow", block);
|
1884
1861
|
mrows.push(element);
|
1885
1862
|
}
|
1886
1863
|
if (mtrs.length > 0) {
|
@@ -2015,7 +1992,9 @@ var temml = (function () {
|
|
2015
1992
|
*/
|
2016
1993
|
const makeRow = function(body) {
|
2017
1994
|
if (body.length === 1) {
|
2018
|
-
return body[0]
|
1995
|
+
return body[0] instanceof DocumentFragment
|
1996
|
+
? body[0]
|
1997
|
+
: new mathMLTree.MathNode("mrow", body);
|
2019
1998
|
} else {
|
2020
1999
|
return new mathMLTree.MathNode("mrow", body);
|
2021
2000
|
}
|
@@ -2129,7 +2108,6 @@ var temml = (function () {
|
|
2129
2108
|
|
2130
2109
|
const n1 = expression.length === 0 ? null : expression[0];
|
2131
2110
|
let wrapper = expression.length === 1 && tag === null && (n1 instanceof MathNode)
|
2132
|
-
&& !(n1.type === "mstyle" && n1.attributes.mathcolor)
|
2133
2111
|
? expression[0]
|
2134
2112
|
: setLineBreaks(expression, wrap, settings.displayMode);
|
2135
2113
|
|
@@ -3056,7 +3034,7 @@ var temml = (function () {
|
|
3056
3034
|
spec.split(",").map(e => {
|
3057
3035
|
const num = Number(e.trim());
|
3058
3036
|
if (num > 1) { throw new ParseError("Color rgb input must be < 1.") }
|
3059
|
-
color += toHex((num * 255));
|
3037
|
+
color += toHex(Number((num * 255).toFixed(0)));
|
3060
3038
|
});
|
3061
3039
|
}
|
3062
3040
|
if (color.charAt(0) !== "#") { color = "#" + color; }
|
@@ -3083,11 +3061,15 @@ var temml = (function () {
|
|
3083
3061
|
};
|
3084
3062
|
|
3085
3063
|
const mathmlBuilder$9 = (group, style) => {
|
3086
|
-
|
3087
|
-
//
|
3088
|
-
|
3089
|
-
|
3090
|
-
|
3064
|
+
// In LaTeX, color is not supposed to change the spacing of any node.
|
3065
|
+
// So instead of wrapping the group in an <mstyle>, we apply
|
3066
|
+
// the color individually to each node and return a document fragment.
|
3067
|
+
let expr = buildExpression(group.body, style.withColor(group.color));
|
3068
|
+
expr = expr.map(e => {
|
3069
|
+
e.style.color = group.color;
|
3070
|
+
return e
|
3071
|
+
});
|
3072
|
+
return mathMLTree.newDocumentFragment(expr)
|
3091
3073
|
};
|
3092
3074
|
|
3093
3075
|
defineFunction({
|
@@ -3739,7 +3721,7 @@ var temml = (function () {
|
|
3739
3721
|
if (group.right === "\u2216" || group.right.indexOf("arrow") > -1) {
|
3740
3722
|
rightNode.setAttribute("stretchy", "true");
|
3741
3723
|
}
|
3742
|
-
if (group.rightColor) { rightNode.
|
3724
|
+
if (group.rightColor) { rightNode.style.color = group.rightColor; }
|
3743
3725
|
inner.push(rightNode);
|
3744
3726
|
|
3745
3727
|
return makeRow(inner);
|
@@ -4923,7 +4905,6 @@ var temml = (function () {
|
|
4923
4905
|
for (let i = 1; i < mathGroup.children.length; i++) {
|
4924
4906
|
mi.children.push(mathGroup.children[i].children[0]);
|
4925
4907
|
}
|
4926
|
-
if (mathGroup.attributes.mathcolor) { mi.attributes.mathcolor = mathGroup.attributes.mathcolor; }
|
4927
4908
|
if (mi.attributes.mathvariant && mi.attributes.mathvariant === "normal") {
|
4928
4909
|
// Workaround for a Firefox bug that renders spurious space around
|
4929
4910
|
// a <mi mathvariant="normal">
|
@@ -11098,7 +11079,7 @@ var temml = (function () {
|
|
11098
11079
|
* https://mit-license.org/
|
11099
11080
|
*/
|
11100
11081
|
|
11101
|
-
const version = "0.10.
|
11082
|
+
const version = "0.10.6";
|
11102
11083
|
|
11103
11084
|
function postProcess(block) {
|
11104
11085
|
const labelMap = {};
|