temml 0.10.12 → 0.10.13
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 +54 -27
- package/dist/temml.js +54 -27
- package/dist/temml.min.js +1 -1
- package/dist/temml.mjs +54 -27
- package/dist/temmlPostProcess.js +1 -1
- package/package.json +4 -1
- package/src/functions/arrow.js +50 -24
- package/src/postProcess.js +1 -1
- package/src/symbols.js +1 -0
package/dist/temml.cjs
CHANGED
@@ -970,6 +970,7 @@ defineSymbol(math, rel, "\u21c1", "\\rightharpoondown", true);
|
|
970
970
|
defineSymbol(math, rel, "\u2196", "\\nwarrow", true);
|
971
971
|
defineSymbol(math, rel, "\u21cc", "\\rightleftharpoons", true);
|
972
972
|
defineSymbol(math, mathord, "\u21af", "\\lightning", true);
|
973
|
+
defineSymbol(math, mathord, "\u220E", "\\QED", true);
|
973
974
|
defineSymbol(math, mathord, "\u2030", "\\permil", true);
|
974
975
|
defineSymbol(text, textord, "\u2030", "\\permil");
|
975
976
|
|
@@ -2418,43 +2419,69 @@ const paddedNode = (group, lspace = 0.3, rspace = 0) => {
|
|
2418
2419
|
return new mathMLTree.MathNode("mrow", row)
|
2419
2420
|
};
|
2420
2421
|
|
2421
|
-
const labelSize = (size, scriptLevel) => (size / emScale(scriptLevel)
|
2422
|
+
const labelSize = (size, scriptLevel) => Number(size) / emScale(scriptLevel);
|
2422
2423
|
|
2423
|
-
const munderoverNode = (
|
2424
|
-
const arrowNode = stretchy.mathMLnode(
|
2424
|
+
const munderoverNode = (fName, body, below, style) => {
|
2425
|
+
const arrowNode = stretchy.mathMLnode(fName);
|
2425
2426
|
// Is this the short part of a mhchem equilibrium arrow?
|
2426
|
-
const isEq =
|
2427
|
-
const minWidth =
|
2428
|
-
? "1.75" // mathtools extensible arrows are 1.75em long
|
2429
|
-
:
|
2427
|
+
const isEq = fName.slice(1, 3) === "eq";
|
2428
|
+
const minWidth = fName.charAt(1) === "x"
|
2429
|
+
? "1.75" // mathtools extensible arrows are ≥ 1.75em long
|
2430
|
+
: fName.slice(2, 4) === "cd"
|
2430
2431
|
? "3.0" // cd package arrows
|
2431
2432
|
: isEq
|
2432
2433
|
? "1.0" // The shorter harpoon of a mhchem equilibrium arrow
|
2433
2434
|
: "2.0"; // other mhchem arrows
|
2434
|
-
|
2435
|
+
// TODO: When Firefox supports minsize, use the next line.
|
2436
|
+
//arrowNode.setAttribute("minsize", String(minWidth) + "em")
|
2435
2437
|
arrowNode.setAttribute("lspace", "0");
|
2436
2438
|
arrowNode.setAttribute("rspace", (isEq ? "0.5em" : "0"));
|
2437
2439
|
|
2438
2440
|
// <munderover> upper and lower labels are set to scriptlevel by MathML
|
2439
|
-
// So we have to adjust our dimensions accordingly.
|
2441
|
+
// So we have to adjust our label dimensions accordingly.
|
2440
2442
|
const labelStyle = style.withLevel(style.level < 2 ? 2 : 3);
|
2441
|
-
const
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2445
|
-
const
|
2443
|
+
const minArrowWidth = labelSize(minWidth, labelStyle.level);
|
2444
|
+
// The dummyNode will be inside a <mover> inside a <mover>
|
2445
|
+
// So it will be at scriptlevel 3
|
2446
|
+
const dummyWidth = labelSize(minWidth, 3);
|
2447
|
+
const emptyLabel = paddedNode(null, minArrowWidth.toFixed(4), 0);
|
2448
|
+
const dummyNode = paddedNode(null, dummyWidth.toFixed(4), 0);
|
2449
|
+
// The arrow is a little longer than the label. Set a spacer length.
|
2450
|
+
const space = labelSize((isEq ? 0 : 0.3), labelStyle.level).toFixed(4);
|
2451
|
+
let upperNode;
|
2452
|
+
let lowerNode;
|
2453
|
+
|
2454
|
+
const gotUpper = (body && body.body &&
|
2446
2455
|
// \hphantom visible content
|
2447
|
-
(body.body.body || body.body.length > 0))
|
2448
|
-
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2456
|
-
const
|
2457
|
-
|
2456
|
+
(body.body.body || body.body.length > 0));
|
2457
|
+
if (gotUpper) {
|
2458
|
+
let label = buildGroup$1(body, labelStyle);
|
2459
|
+
label = paddedNode(label, space, space);
|
2460
|
+
// Since Firefox does not support minsize, stack a invisible node
|
2461
|
+
// on top of the label. Its width will serve as a min-width.
|
2462
|
+
// TODO: Refactor this after Firefox supports minsize.
|
2463
|
+
upperNode = new mathMLTree.MathNode("mover", [label, dummyNode]);
|
2464
|
+
}
|
2465
|
+
const gotLower = (below && below.body &&
|
2466
|
+
(below.body.body || below.body.length > 0));
|
2467
|
+
if (gotLower) {
|
2468
|
+
let label = buildGroup$1(below, labelStyle);
|
2469
|
+
label = paddedNode(label, space, space);
|
2470
|
+
lowerNode = new mathMLTree.MathNode("munder", [label, dummyNode]);
|
2471
|
+
}
|
2472
|
+
|
2473
|
+
let node;
|
2474
|
+
if (!gotUpper && !gotLower) {
|
2475
|
+
node = new mathMLTree.MathNode("mover", [arrowNode, emptyLabel]);
|
2476
|
+
} else if (gotUpper && gotLower) {
|
2477
|
+
node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
|
2478
|
+
} else if (gotUpper) {
|
2479
|
+
node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
|
2480
|
+
} else {
|
2481
|
+
node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
|
2482
|
+
}
|
2483
|
+
if (minWidth === "3.0") { node.style.height = "1em"; } // CD environment
|
2484
|
+
node.setAttribute("accent", "false"); // Necessary for MS Word
|
2458
2485
|
return node
|
2459
2486
|
};
|
2460
2487
|
|
@@ -2533,7 +2560,7 @@ defineFunction({
|
|
2533
2560
|
"\\xleftrightharpoons", // mathtools
|
2534
2561
|
"\\xrightleftharpoons", // mathtools
|
2535
2562
|
"\\yieldsLeftRight", // mhchem
|
2536
|
-
"\\equilibrium",
|
2563
|
+
"\\equilibrium", // mhchem
|
2537
2564
|
"\\equilibriumRight",
|
2538
2565
|
"\\equilibriumLeft"
|
2539
2566
|
],
|
@@ -12877,7 +12904,7 @@ class Style {
|
|
12877
12904
|
* https://mit-license.org/
|
12878
12905
|
*/
|
12879
12906
|
|
12880
|
-
const version = "0.10.
|
12907
|
+
const version = "0.10.13";
|
12881
12908
|
|
12882
12909
|
function postProcess(block) {
|
12883
12910
|
const labelMap = {};
|
package/dist/temml.js
CHANGED
@@ -971,6 +971,7 @@ var temml = (function () {
|
|
971
971
|
defineSymbol(math, rel, "\u2196", "\\nwarrow", true);
|
972
972
|
defineSymbol(math, rel, "\u21cc", "\\rightleftharpoons", true);
|
973
973
|
defineSymbol(math, mathord, "\u21af", "\\lightning", true);
|
974
|
+
defineSymbol(math, mathord, "\u220E", "\\QED", true);
|
974
975
|
defineSymbol(math, mathord, "\u2030", "\\permil", true);
|
975
976
|
defineSymbol(text, textord, "\u2030", "\\permil");
|
976
977
|
|
@@ -2419,43 +2420,69 @@ var temml = (function () {
|
|
2419
2420
|
return new mathMLTree.MathNode("mrow", row)
|
2420
2421
|
};
|
2421
2422
|
|
2422
|
-
const labelSize = (size, scriptLevel) => (size / emScale(scriptLevel)
|
2423
|
+
const labelSize = (size, scriptLevel) => Number(size) / emScale(scriptLevel);
|
2423
2424
|
|
2424
|
-
const munderoverNode = (
|
2425
|
-
const arrowNode = stretchy.mathMLnode(
|
2425
|
+
const munderoverNode = (fName, body, below, style) => {
|
2426
|
+
const arrowNode = stretchy.mathMLnode(fName);
|
2426
2427
|
// Is this the short part of a mhchem equilibrium arrow?
|
2427
|
-
const isEq =
|
2428
|
-
const minWidth =
|
2429
|
-
? "1.75" // mathtools extensible arrows are 1.75em long
|
2430
|
-
:
|
2428
|
+
const isEq = fName.slice(1, 3) === "eq";
|
2429
|
+
const minWidth = fName.charAt(1) === "x"
|
2430
|
+
? "1.75" // mathtools extensible arrows are ≥ 1.75em long
|
2431
|
+
: fName.slice(2, 4) === "cd"
|
2431
2432
|
? "3.0" // cd package arrows
|
2432
2433
|
: isEq
|
2433
2434
|
? "1.0" // The shorter harpoon of a mhchem equilibrium arrow
|
2434
2435
|
: "2.0"; // other mhchem arrows
|
2435
|
-
|
2436
|
+
// TODO: When Firefox supports minsize, use the next line.
|
2437
|
+
//arrowNode.setAttribute("minsize", String(minWidth) + "em")
|
2436
2438
|
arrowNode.setAttribute("lspace", "0");
|
2437
2439
|
arrowNode.setAttribute("rspace", (isEq ? "0.5em" : "0"));
|
2438
2440
|
|
2439
2441
|
// <munderover> upper and lower labels are set to scriptlevel by MathML
|
2440
|
-
// So we have to adjust our dimensions accordingly.
|
2442
|
+
// So we have to adjust our label dimensions accordingly.
|
2441
2443
|
const labelStyle = style.withLevel(style.level < 2 ? 2 : 3);
|
2442
|
-
const
|
2443
|
-
|
2444
|
-
|
2445
|
-
|
2446
|
-
const
|
2444
|
+
const minArrowWidth = labelSize(minWidth, labelStyle.level);
|
2445
|
+
// The dummyNode will be inside a <mover> inside a <mover>
|
2446
|
+
// So it will be at scriptlevel 3
|
2447
|
+
const dummyWidth = labelSize(minWidth, 3);
|
2448
|
+
const emptyLabel = paddedNode(null, minArrowWidth.toFixed(4), 0);
|
2449
|
+
const dummyNode = paddedNode(null, dummyWidth.toFixed(4), 0);
|
2450
|
+
// The arrow is a little longer than the label. Set a spacer length.
|
2451
|
+
const space = labelSize((isEq ? 0 : 0.3), labelStyle.level).toFixed(4);
|
2452
|
+
let upperNode;
|
2453
|
+
let lowerNode;
|
2454
|
+
|
2455
|
+
const gotUpper = (body && body.body &&
|
2447
2456
|
// \hphantom visible content
|
2448
|
-
(body.body.body || body.body.length > 0))
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2456
|
-
|
2457
|
-
const
|
2458
|
-
|
2457
|
+
(body.body.body || body.body.length > 0));
|
2458
|
+
if (gotUpper) {
|
2459
|
+
let label = buildGroup$1(body, labelStyle);
|
2460
|
+
label = paddedNode(label, space, space);
|
2461
|
+
// Since Firefox does not support minsize, stack a invisible node
|
2462
|
+
// on top of the label. Its width will serve as a min-width.
|
2463
|
+
// TODO: Refactor this after Firefox supports minsize.
|
2464
|
+
upperNode = new mathMLTree.MathNode("mover", [label, dummyNode]);
|
2465
|
+
}
|
2466
|
+
const gotLower = (below && below.body &&
|
2467
|
+
(below.body.body || below.body.length > 0));
|
2468
|
+
if (gotLower) {
|
2469
|
+
let label = buildGroup$1(below, labelStyle);
|
2470
|
+
label = paddedNode(label, space, space);
|
2471
|
+
lowerNode = new mathMLTree.MathNode("munder", [label, dummyNode]);
|
2472
|
+
}
|
2473
|
+
|
2474
|
+
let node;
|
2475
|
+
if (!gotUpper && !gotLower) {
|
2476
|
+
node = new mathMLTree.MathNode("mover", [arrowNode, emptyLabel]);
|
2477
|
+
} else if (gotUpper && gotLower) {
|
2478
|
+
node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
|
2479
|
+
} else if (gotUpper) {
|
2480
|
+
node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
|
2481
|
+
} else {
|
2482
|
+
node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
|
2483
|
+
}
|
2484
|
+
if (minWidth === "3.0") { node.style.height = "1em"; } // CD environment
|
2485
|
+
node.setAttribute("accent", "false"); // Necessary for MS Word
|
2459
2486
|
return node
|
2460
2487
|
};
|
2461
2488
|
|
@@ -2534,7 +2561,7 @@ var temml = (function () {
|
|
2534
2561
|
"\\xleftrightharpoons", // mathtools
|
2535
2562
|
"\\xrightleftharpoons", // mathtools
|
2536
2563
|
"\\yieldsLeftRight", // mhchem
|
2537
|
-
"\\equilibrium",
|
2564
|
+
"\\equilibrium", // mhchem
|
2538
2565
|
"\\equilibriumRight",
|
2539
2566
|
"\\equilibriumLeft"
|
2540
2567
|
],
|
@@ -10978,7 +11005,7 @@ var temml = (function () {
|
|
10978
11005
|
* https://mit-license.org/
|
10979
11006
|
*/
|
10980
11007
|
|
10981
|
-
const version = "0.10.
|
11008
|
+
const version = "0.10.13";
|
10982
11009
|
|
10983
11010
|
function postProcess(block) {
|
10984
11011
|
const labelMap = {};
|