temml 0.9.2 → 0.10.2
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/README.md +1 -1
- package/contrib/auto-render/test/auto-render-spec.js +1 -1
- package/contrib/mhchem/mhchem.js +2 -2
- package/dist/Temml-Asana.css +0 -4
- package/dist/Temml-Latin-Modern.css +0 -5
- package/dist/Temml-Libertinus.css +0 -5
- package/dist/Temml-Local.css +0 -4
- package/dist/Temml-STIX2.css +0 -5
- package/dist/temml.cjs +112 -56
- package/dist/temml.js +110 -54
- package/dist/temml.min.js +1 -1
- package/dist/temml.mjs +112 -56
- package/dist/temmlPostProcess.js +1 -1
- package/package.json +2 -1
- package/src/MacroExpander.js +20 -21
- package/src/Parser.js +25 -3
- package/src/asciiFromScript.js +29 -0
- package/src/buildMathML.js +1 -1
- package/src/functions/cr.js +2 -3
- package/src/functions/delimsizing.js +5 -0
- package/src/functions/font.js +0 -1
- package/src/functions/op.js +1 -5
- package/src/functions/operatorname.js +10 -8
- package/src/functions/supsub.js +7 -0
- package/src/functions/symbolsOrd.js +1 -4
- package/src/mathMLTree.js +1 -1
- package/src/postProcess.js +1 -1
- package/src/symbols.js +7 -2
- package/src/variant.js +1 -4
package/src/functions/op.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
import defineFunction, { ordargument } from "../defineFunction";
|
3
3
|
import * as mathMLTree from "../mathMLTree";
|
4
4
|
import * as mml from "../buildMathML";
|
5
|
-
import {
|
5
|
+
import { isDelimiter } from "./delimsizing"
|
6
6
|
|
7
7
|
// Some helpers
|
8
8
|
|
@@ -14,10 +14,6 @@ const noSuccessor = ["\\smallint"];
|
|
14
14
|
// Math operators (e.g. \sin) need a space between these types and themselves:
|
15
15
|
export const ordTypes = ["textord", "mathord", "ordgroup", "close", "leftright"];
|
16
16
|
|
17
|
-
const dels = ["}", "\\left", "\\middle", "\\right"]
|
18
|
-
const isDelimiter = str => str.length > 0 &&
|
19
|
-
(delimiters.includes(str) || delimiterSizes[str] || dels.includes(str))
|
20
|
-
|
21
17
|
// NOTE: Unlike most `builders`s, this one handles not only "op", but also
|
22
18
|
// "supsub" since some of them (like \int) can affect super/subscripting.
|
23
19
|
|
@@ -3,15 +3,11 @@ import defineMacro from "../defineMacro";
|
|
3
3
|
import mathMLTree from "../mathMLTree"
|
4
4
|
import { spaceCharacter } from "./kern"
|
5
5
|
import { ordTypes } from "./op"
|
6
|
-
import {
|
6
|
+
import { isDelimiter } from "./delimsizing"
|
7
7
|
|
8
8
|
import * as mml from "../buildMathML"
|
9
9
|
|
10
|
-
|
11
|
-
const isDelimiter = str => str.length > 0 &&
|
12
|
-
(delimiters.includes(str) || delimiterSizes[str] || dels.includes(str))
|
13
|
-
|
14
|
-
// NOTE: Unlike most builders, this one handles not only
|
10
|
+
// NOTE: Unlike most builders, this one handles not only
|
15
11
|
// "operatorname", but also "supsub" since \operatorname* can
|
16
12
|
// affect super/subscripting.
|
17
13
|
|
@@ -21,8 +17,12 @@ const mathmlBuilder = (group, style) => {
|
|
21
17
|
// Is expression a string or has it something like a fraction?
|
22
18
|
let isAllString = true; // default
|
23
19
|
for (let i = 0; i < expression.length; i++) {
|
24
|
-
|
20
|
+
let node = expression[i]
|
25
21
|
if (node instanceof mathMLTree.MathNode) {
|
22
|
+
if (node.type === "mrow" && node.children.length === 1 &&
|
23
|
+
node.children[0] instanceof mathMLTree.MathNode) {
|
24
|
+
node = node.children[0]
|
25
|
+
}
|
26
26
|
switch (node.type) {
|
27
27
|
case "mi":
|
28
28
|
case "mn":
|
@@ -80,7 +80,9 @@ const mathmlBuilder = (group, style) => {
|
|
80
80
|
let wrapper;
|
81
81
|
if (isAllString) {
|
82
82
|
wrapper = new mathMLTree.MathNode("mi", expression)
|
83
|
-
|
83
|
+
if (expression[0].text.length === 1) {
|
84
|
+
wrapper.setAttribute("mathvariant", "normal")
|
85
|
+
}
|
84
86
|
} else {
|
85
87
|
wrapper = new mathMLTree.MathNode("mrow", expression)
|
86
88
|
}
|
package/src/functions/supsub.js
CHANGED
@@ -24,6 +24,7 @@ defineFunctionBuilders({
|
|
24
24
|
let isOver
|
25
25
|
let isSup
|
26
26
|
let appendApplyFunction = false
|
27
|
+
let appendSpace = false
|
27
28
|
let needsLeadingSpace = false
|
28
29
|
|
29
30
|
if (group.base && group.base.type === "horizBrace") {
|
@@ -38,6 +39,7 @@ defineFunctionBuilders({
|
|
38
39
|
(group.base.type === "op" || group.base.type === "operatorname")) {
|
39
40
|
group.base.parentIsSupSub = true
|
40
41
|
appendApplyFunction = !group.base.symbol
|
42
|
+
appendSpace = appendApplyFunction && !group.isFollowedByDelimiter
|
41
43
|
needsLeadingSpace = group.base.needsLeadingSpace
|
42
44
|
}
|
43
45
|
|
@@ -125,6 +127,11 @@ defineFunctionBuilders({
|
|
125
127
|
} else {
|
126
128
|
node = mathMLTree.newDocumentFragment([node, operator])
|
127
129
|
}
|
130
|
+
if (appendSpace) {
|
131
|
+
const space = new mathMLTree.MathNode("mspace")
|
132
|
+
space.setAttribute("width", "0.1667em") // thin space.
|
133
|
+
node.children.push(space)
|
134
|
+
}
|
128
135
|
} else if (symbolRegEx.test(nodeType)) {
|
129
136
|
// Wrap in a <mrow>. Otherwise Firefox stretchy parens will not stretch to include limits.
|
130
137
|
node = new mathMLTree.MathNode("mrow", [node])
|
@@ -63,10 +63,7 @@ defineFunctionBuilders({
|
|
63
63
|
let node
|
64
64
|
if (numberRegEx.test(group.text)) {
|
65
65
|
const tag = group.mode === "text" ? "mtext" : "mn"
|
66
|
-
if (variant === "
|
67
|
-
const ms = new mathMLTree.MathNode("mstyle", [text], ["oldstylenums"])
|
68
|
-
node = new mathMLTree.MathNode(tag, [ms])
|
69
|
-
} else if (variant === "italic" || variant === "bold-italic") {
|
66
|
+
if (variant === "italic" || variant === "bold-italic") {
|
70
67
|
return italicNumber(text, variant, tag)
|
71
68
|
} else {
|
72
69
|
if (variant !== "normal") {
|
package/src/mathMLTree.js
CHANGED
package/src/postProcess.js
CHANGED
package/src/symbols.js
CHANGED
@@ -85,7 +85,6 @@ defineSymbol(math, rel, "\u226a", "\\ll", true);
|
|
85
85
|
defineSymbol(math, rel, "\u226b", "\\gg", true);
|
86
86
|
defineSymbol(math, rel, "\u224d", "\\asymp", true);
|
87
87
|
defineSymbol(math, rel, "\u2225", "\\parallel");
|
88
|
-
defineSymbol(math, rel, "\u22c8", "\\bowtie", true);
|
89
88
|
defineSymbol(math, rel, "\u2323", "\\smile", true);
|
90
89
|
defineSymbol(math, rel, "\u2291", "\\sqsubseteq", true);
|
91
90
|
defineSymbol(math, rel, "\u2292", "\\sqsupseteq", true);
|
@@ -402,7 +401,6 @@ defineSymbol(math, rel, "\u22d9", "\\gggtr");
|
|
402
401
|
defineSymbol(math, bin, "\u22b2", "\\lhd");
|
403
402
|
defineSymbol(math, bin, "\u22b3", "\\rhd");
|
404
403
|
defineSymbol(math, rel, "\u2242", "\\eqsim", true);
|
405
|
-
defineSymbol(math, rel, "\u22c8", "\\Join");
|
406
404
|
defineSymbol(math, rel, "\u2251", "\\Doteq", true);
|
407
405
|
defineSymbol(math, rel, "\u297d", "\\strictif", true);
|
408
406
|
defineSymbol(math, rel, "\u297c", "\\strictfi", true);
|
@@ -428,6 +426,11 @@ defineSymbol(math, bin, "\u22ba", "\\intercal", true);
|
|
428
426
|
defineSymbol(math, bin, "\u22d2", "\\doublecap");
|
429
427
|
defineSymbol(math, bin, "\u22d3", "\\doublecup");
|
430
428
|
defineSymbol(math, bin, "\u22a0", "\\boxtimes", true);
|
429
|
+
defineSymbol(math, bin, "\u22c8", "\\bowtie", true);
|
430
|
+
defineSymbol(math, bin, "\u22c8", "\\Join");
|
431
|
+
defineSymbol(math, bin, "\u27d5", "\\leftouterjoin", true);
|
432
|
+
defineSymbol(math, bin, "\u27d6", "\\rightouterjoin", true);
|
433
|
+
defineSymbol(math, bin, "\u27d7", "\\fullouterjoin", true);
|
431
434
|
|
432
435
|
// AMS Arrows
|
433
436
|
// Note: unicode-math maps \u21e2 to their own function \rightdasharrow.
|
@@ -474,6 +477,8 @@ defineSymbol(math, textord, "\u2018", "`");
|
|
474
477
|
defineSymbol(math, textord, "$", "\\$");
|
475
478
|
defineSymbol(text, textord, "$", "\\$");
|
476
479
|
defineSymbol(text, textord, "$", "\\textdollar");
|
480
|
+
defineSymbol(math, textord, "¢", "\\cent");
|
481
|
+
defineSymbol(text, textord, "¢", "\\cent");
|
477
482
|
defineSymbol(math, textord, "%", "\\%");
|
478
483
|
defineSymbol(text, textord, "%", "\\%");
|
479
484
|
defineSymbol(math, textord, "_", "\\_");
|
package/src/variant.js
CHANGED
@@ -17,8 +17,7 @@ const fontMap = {
|
|
17
17
|
mathfrak: "fraktur",
|
18
18
|
mathscr: "script",
|
19
19
|
mathsf: "sans-serif",
|
20
|
-
mathtt: "monospace"
|
21
|
-
oldstylenums: "oldstylenums"
|
20
|
+
mathtt: "monospace"
|
22
21
|
}
|
23
22
|
|
24
23
|
/**
|
@@ -88,8 +87,6 @@ export const getVariant = function(group, style) {
|
|
88
87
|
return "sans-serif"
|
89
88
|
case "mathtt":
|
90
89
|
return "monospace"
|
91
|
-
case "oldstylenums":
|
92
|
-
return "oldstylenums"
|
93
90
|
default:
|
94
91
|
break
|
95
92
|
}
|