temml 0.9.1 → 0.9.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  | Library | Minified JavaScript + CSS |
4
4
  |:--------------|:-------------------------:|
5
- | Temml | 147 KB |
5
+ | Temml | 146 KB |
6
6
  | MathJax 2.7.5 | 338 KB |
7
7
  | KaTeX | 280 KB |
8
8
  | TeXZilla | 168 KB |
@@ -87,18 +87,21 @@ mtable.tml-align > mtr > mtd:nth-child(odd),
87
87
  mtable.tml-alignat > mtr > mtd:nth-child(odd),
88
88
  mtable.tml-aligned > mtr > mtd:nth-child(even) {
89
89
  text-align: -webkit-left;
90
+ text-align: -moz-left;
90
91
  }
91
92
 
92
93
  mtable.tml-align > mtr > mtd:nth-child(even),
93
94
  mtable.tml-alignat > mtr > mtd:nth-child(even),
94
95
  mtable.tml-aligned > mtr > mtd:nth-child(odd) {
95
96
  text-align: -webkit-right;
97
+ text-align: -moz-right;
96
98
  }
97
99
 
98
100
  mtable.tml-cases > mtr > mtd {
99
101
  padding-left: 0em;
100
102
  padding-right: 0em;
101
103
  text-align: -webkit-left;
104
+ text-align: -moz-left;
102
105
  }
103
106
 
104
107
  mtable.tml-cases > mtr > mtd:nth-child(2) {
@@ -101,6 +101,7 @@ mtable.tml-align > mtr > mtd:nth-child(odd),
101
101
  mtable.tml-alignat > mtr > mtd:nth-child(odd),
102
102
  mtable.tml-aligned > mtr > mtd:nth-child(even) {
103
103
  text-align: -webkit-left;
104
+ text-align: -moz-left;
104
105
  }
105
106
 
106
107
  mtable.tml-align > mtr > mtd:nth-child(even),
@@ -108,12 +109,14 @@ mtable.tml-alignat > mtr > mtd:nth-child(even),
108
109
  mtable.tml-aligned > mtr > mtd:nth-child(odd),
109
110
  mtable.tml-align-star > mtr > mtd:nth-child(odd) {
110
111
  text-align: -webkit-right;
112
+ text-align: -moz-right;
111
113
  }
112
114
 
113
115
  mtable.tml-cases > mtr > mtd {
114
116
  padding-left: 0em;
115
117
  padding-right: 0em;
116
118
  text-align: -webkit-left;
119
+ text-align: -moz-left;
117
120
  }
118
121
 
119
122
  mtable.tml-cases > mtr > mtd:nth-child(2) {
@@ -99,6 +99,7 @@ mtable.tml-align > mtr > mtd:nth-child(odd),
99
99
  mtable.tml-alignat > mtr > mtd:nth-child(odd),
100
100
  mtable.tml-aligned > mtr > mtd:nth-child(even) {
101
101
  text-align: -webkit-left;
102
+ text-align: -moz-left;
102
103
  }
103
104
 
104
105
  mtable.tml-align > mtr > mtd:nth-child(even),
@@ -106,12 +107,14 @@ mtable.tml-alignat > mtr > mtd:nth-child(even),
106
107
  mtable.tml-aligned > mtr > mtd:nth-child(odd),
107
108
  mtable.tml-align-star > mtr > mtd:nth-child(odd) {
108
109
  text-align: -webkit-right;
110
+ text-align: -moz-right;
109
111
  }
110
112
 
111
113
  mtable.tml-cases > mtr > mtd {
112
114
  padding-left: 0em;
113
115
  padding-right: 0em;
114
116
  text-align: -webkit-left;
117
+ text-align: -moz-left;
115
118
  }
116
119
 
117
120
  mtable.tml-cases > mtr > mtd:nth-child(2) {
@@ -80,18 +80,21 @@ mtable.tml-align > mtr > mtd:nth-child(odd),
80
80
  mtable.tml-alignat > mtr > mtd:nth-child(odd),
81
81
  mtable.tml-aligned > mtr > mtd:nth-child(even) {
82
82
  text-align: -webkit-left;
83
+ text-align: -moz-left;
83
84
  }
84
85
 
85
86
  mtable.tml-align > mtr > mtd:nth-child(even),
86
87
  mtable.tml-alignat > mtr > mtd:nth-child(even),
87
88
  mtable.tml-aligned > mtr > mtd:nth-child(odd) {
88
89
  text-align: -webkit-right;
90
+ text-align: -moz-right;
89
91
  }
90
92
 
91
93
  mtable.tml-cases > mtr > mtd {
92
94
  padding-left: 0em;
93
95
  padding-right: 0em;
94
96
  text-align: -webkit-left;
97
+ text-align: -moz-left;
95
98
  }
96
99
 
97
100
  mtable.tml-cases > mtr > mtd:nth-child(2) {
@@ -89,18 +89,21 @@ mtable.tml-align > mtr > mtd:nth-child(odd),
89
89
  mtable.tml-alignat > mtr > mtd:nth-child(odd),
90
90
  mtable.tml-aligned > mtr > mtd:nth-child(even) {
91
91
  text-align: -webkit-left;
92
+ text-align: -moz-left;
92
93
  }
93
94
 
94
95
  mtable.tml-align > mtr > mtd:nth-child(even),
95
96
  mtable.tml-alignat > mtr > mtd:nth-child(even),
96
97
  mtable.tml-aligned > mtr > mtd:nth-child(odd) {
97
98
  text-align: -webkit-right;
99
+ text-align: -moz-right;
98
100
  }
99
101
 
100
102
  mtable.tml-cases > mtr > mtd {
101
103
  padding-left: 0em;
102
104
  padding-right: 0em;
103
105
  text-align: -webkit-left;
106
+ text-align: -moz-left;
104
107
  }
105
108
 
106
109
  mtable.tml-cases > mtr > mtd:nth-child(2) {
package/dist/temml.cjs CHANGED
@@ -2079,8 +2079,6 @@ function buildMathML(tree, texExpression, style, settings) {
2079
2079
  let wrapper = expression.length === 1 && tag === null && (n1 instanceof MathNode)
2080
2080
  && !(n1.type === "mstyle" && n1.attributes.mathcolor)
2081
2081
  ? expression[0]
2082
- : expression.length > 1 && wrap === "none"
2083
- ? new mathMLTree.MathNode("mrow", expression)
2084
2082
  : setLineBreaks(expression, wrap, settings.displayMode);
2085
2083
 
2086
2084
  if (tag) {
@@ -2095,7 +2093,7 @@ function buildMathML(tree, texExpression, style, settings) {
2095
2093
  wrapper = new mathMLTree.MathNode("semantics", [wrapper, annotation]);
2096
2094
  }
2097
2095
 
2098
- if (wrap !== "none") {
2096
+ if (wrap !== "none" && wrapper.children.length > 1) {
2099
2097
  const maths = [];
2100
2098
  for (let i = 0; i < wrapper.children.length; i++) {
2101
2099
  const math = new mathMLTree.MathNode("math", [wrapper.children[i]]);
@@ -3909,7 +3907,7 @@ defineFunction({
3909
3907
 
3910
3908
  defineFunction({
3911
3909
  type: "enclose",
3912
- names: ["\\angl", "\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\overline", "\\underline"],
3910
+ names: ["\\angl", "\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\overline"],
3913
3911
  // , "\\phase", "\\longdiv"
3914
3912
  props: {
3915
3913
  numArgs: 1
@@ -3926,6 +3924,25 @@ defineFunction({
3926
3924
  mathmlBuilder: mathmlBuilder$8
3927
3925
  });
3928
3926
 
3927
+ defineFunction({
3928
+ type: "enclose",
3929
+ names: ["\\underline"],
3930
+ props: {
3931
+ numArgs: 1,
3932
+ allowedInText: true
3933
+ },
3934
+ handler({ parser, funcName }, args) {
3935
+ const body = args[0];
3936
+ return {
3937
+ type: "enclose",
3938
+ mode: parser.mode,
3939
+ label: funcName,
3940
+ body
3941
+ };
3942
+ },
3943
+ mathmlBuilder: mathmlBuilder$8
3944
+ });
3945
+
3929
3946
  /**
3930
3947
  * All registered environments.
3931
3948
  * `environments.js` exports this same dictionary again and makes it public.
@@ -6731,10 +6748,9 @@ defineFunction({
6731
6748
  }
6732
6749
  });
6733
6750
 
6734
- // \pmb is a simulation of bold font.
6751
+ // In LaTeX, \pmb is a simulation of bold font.
6735
6752
  // The version of \pmb in ambsy.sty works by typesetting three copies of the argument
6736
- // with small offsets. We use CSS text-shadow.
6737
- // It's a hack. Not as good as a real bold font. Better than nothing.
6753
+ // with small offsets. We use CSS font-weight:bold.
6738
6754
 
6739
6755
  defineFunction({
6740
6756
  type: "pmb",
@@ -6754,7 +6770,7 @@ defineFunction({
6754
6770
  const inner = buildExpression(group.body, style);
6755
6771
  // Wrap with an <mstyle> element.
6756
6772
  const node = wrapWithMstyle(inner);
6757
- node.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px");
6773
+ node.setAttribute("style", "font-weight:bold");
6758
6774
  return node
6759
6775
  }
6760
6776
  });
@@ -7627,8 +7643,8 @@ const smallCaps = Object.freeze({
7627
7643
  const numberRegEx$1 = /^\d(?:[\d,.]*\d)?$/; // Keep in sync with numberRegEx in Parser.js
7628
7644
  const latinRegEx = /[A-Ba-z]/;
7629
7645
 
7630
- const italicNumber = (text, variant) => {
7631
- const mn = new mathMLTree.MathNode("mn", [text]);
7646
+ const italicNumber = (text, variant, tag) => {
7647
+ const mn = new mathMLTree.MathNode(tag, [text]);
7632
7648
  const wrapper = new mathMLTree.MathNode("mstyle", [mn]);
7633
7649
  wrapper.style["font-style"] = "italic";
7634
7650
  wrapper.style["font-family"] = "Cambria, 'Times New Roman', serif";
@@ -7678,28 +7694,24 @@ defineFunctionBuilders({
7678
7694
  const variant = getVariant(group, style) || "normal";
7679
7695
 
7680
7696
  let node;
7681
- if (group.mode === "text") {
7682
- if (variant === "italic" || variant === "bold-italic") {
7683
- if (numberRegEx$1.test(group.text)) {
7684
- return italicNumber(text, variant)
7685
- }
7686
- }
7687
- if (variant !== "normal") {
7688
- text.text = variantChar(text.text, variant);
7689
- }
7690
- node = new mathMLTree.MathNode("mtext", [text]);
7691
- } else if (numberRegEx$1.test(group.text)) {
7697
+ if (numberRegEx$1.test(group.text)) {
7698
+ const tag = group.mode === "text" ? "mtext" : "mn";
7692
7699
  if (variant === "oldstylenums") {
7693
7700
  const ms = new mathMLTree.MathNode("mstyle", [text], ["oldstylenums"]);
7694
- node = new mathMLTree.MathNode("mn", [ms]);
7701
+ node = new mathMLTree.MathNode(tag, [ms]);
7695
7702
  } else if (variant === "italic" || variant === "bold-italic") {
7696
- return italicNumber(text, variant)
7703
+ return italicNumber(text, variant, tag)
7697
7704
  } else {
7698
7705
  if (variant !== "normal") {
7699
7706
  text.text = text.text.split("").map(c => variantChar(c, variant)).join("");
7700
7707
  }
7701
- node = new mathMLTree.MathNode("mn", [text]);
7708
+ node = new mathMLTree.MathNode(tag, [text]);
7702
7709
  }
7710
+ } else if (group.mode === "text") {
7711
+ if (variant !== "normal") {
7712
+ text.text = variantChar(text.text, variant);
7713
+ }
7714
+ node = new mathMLTree.MathNode("mtext", [text]);
7703
7715
  } else if (group.text === "\\prime") {
7704
7716
  node = new mathMLTree.MathNode("mo", [text]);
7705
7717
  // TODO: If/when Chromium uses ssty variant for prime, remove the next line.
@@ -8398,7 +8410,7 @@ defineMacro("\\underbar", "\\underline{\\text{#1}}");
8398
8410
  // \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
8399
8411
  // We'll call \varvdots, which gets a glyph from symbols.js.
8400
8412
  // The zero-width rule gets us an equivalent to the vertical 6pt kern.
8401
- defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}");
8413
+ defineMacro("\\vdots", "{\\varvdots\\rule{0pt}{15pt}}");
8402
8414
  defineMacro("\u22ee", "\\vdots");
8403
8415
 
8404
8416
  //////////////////////////////////////////////////////////////////////
@@ -12909,7 +12921,7 @@ class Style {
12909
12921
  * https://mit-license.org/
12910
12922
  */
12911
12923
 
12912
- const version = "0.9.1";
12924
+ const version = "0.9.2";
12913
12925
 
12914
12926
  function postProcess(block) {
12915
12927
  const labelMap = {};
package/dist/temml.js CHANGED
@@ -2080,8 +2080,6 @@ var temml = (function () {
2080
2080
  let wrapper = expression.length === 1 && tag === null && (n1 instanceof MathNode)
2081
2081
  && !(n1.type === "mstyle" && n1.attributes.mathcolor)
2082
2082
  ? expression[0]
2083
- : expression.length > 1 && wrap === "none"
2084
- ? new mathMLTree.MathNode("mrow", expression)
2085
2083
  : setLineBreaks(expression, wrap, settings.displayMode);
2086
2084
 
2087
2085
  if (tag) {
@@ -2096,7 +2094,7 @@ var temml = (function () {
2096
2094
  wrapper = new mathMLTree.MathNode("semantics", [wrapper, annotation]);
2097
2095
  }
2098
2096
 
2099
- if (wrap !== "none") {
2097
+ if (wrap !== "none" && wrapper.children.length > 1) {
2100
2098
  const maths = [];
2101
2099
  for (let i = 0; i < wrapper.children.length; i++) {
2102
2100
  const math = new mathMLTree.MathNode("math", [wrapper.children[i]]);
@@ -3910,7 +3908,7 @@ var temml = (function () {
3910
3908
 
3911
3909
  defineFunction({
3912
3910
  type: "enclose",
3913
- names: ["\\angl", "\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\overline", "\\underline"],
3911
+ names: ["\\angl", "\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\overline"],
3914
3912
  // , "\\phase", "\\longdiv"
3915
3913
  props: {
3916
3914
  numArgs: 1
@@ -3927,6 +3925,25 @@ var temml = (function () {
3927
3925
  mathmlBuilder: mathmlBuilder$8
3928
3926
  });
3929
3927
 
3928
+ defineFunction({
3929
+ type: "enclose",
3930
+ names: ["\\underline"],
3931
+ props: {
3932
+ numArgs: 1,
3933
+ allowedInText: true
3934
+ },
3935
+ handler({ parser, funcName }, args) {
3936
+ const body = args[0];
3937
+ return {
3938
+ type: "enclose",
3939
+ mode: parser.mode,
3940
+ label: funcName,
3941
+ body
3942
+ };
3943
+ },
3944
+ mathmlBuilder: mathmlBuilder$8
3945
+ });
3946
+
3930
3947
  /**
3931
3948
  * All registered environments.
3932
3949
  * `environments.js` exports this same dictionary again and makes it public.
@@ -6732,10 +6749,9 @@ var temml = (function () {
6732
6749
  }
6733
6750
  });
6734
6751
 
6735
- // \pmb is a simulation of bold font.
6752
+ // In LaTeX, \pmb is a simulation of bold font.
6736
6753
  // The version of \pmb in ambsy.sty works by typesetting three copies of the argument
6737
- // with small offsets. We use CSS text-shadow.
6738
- // It's a hack. Not as good as a real bold font. Better than nothing.
6754
+ // with small offsets. We use CSS font-weight:bold.
6739
6755
 
6740
6756
  defineFunction({
6741
6757
  type: "pmb",
@@ -6755,7 +6771,7 @@ var temml = (function () {
6755
6771
  const inner = buildExpression(group.body, style);
6756
6772
  // Wrap with an <mstyle> element.
6757
6773
  const node = wrapWithMstyle(inner);
6758
- node.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px");
6774
+ node.setAttribute("style", "font-weight:bold");
6759
6775
  return node
6760
6776
  }
6761
6777
  });
@@ -7628,8 +7644,8 @@ var temml = (function () {
7628
7644
  const numberRegEx$1 = /^\d(?:[\d,.]*\d)?$/; // Keep in sync with numberRegEx in Parser.js
7629
7645
  const latinRegEx = /[A-Ba-z]/;
7630
7646
 
7631
- const italicNumber = (text, variant) => {
7632
- const mn = new mathMLTree.MathNode("mn", [text]);
7647
+ const italicNumber = (text, variant, tag) => {
7648
+ const mn = new mathMLTree.MathNode(tag, [text]);
7633
7649
  const wrapper = new mathMLTree.MathNode("mstyle", [mn]);
7634
7650
  wrapper.style["font-style"] = "italic";
7635
7651
  wrapper.style["font-family"] = "Cambria, 'Times New Roman', serif";
@@ -7679,28 +7695,24 @@ var temml = (function () {
7679
7695
  const variant = getVariant(group, style) || "normal";
7680
7696
 
7681
7697
  let node;
7682
- if (group.mode === "text") {
7683
- if (variant === "italic" || variant === "bold-italic") {
7684
- if (numberRegEx$1.test(group.text)) {
7685
- return italicNumber(text, variant)
7686
- }
7687
- }
7688
- if (variant !== "normal") {
7689
- text.text = variantChar(text.text, variant);
7690
- }
7691
- node = new mathMLTree.MathNode("mtext", [text]);
7692
- } else if (numberRegEx$1.test(group.text)) {
7698
+ if (numberRegEx$1.test(group.text)) {
7699
+ const tag = group.mode === "text" ? "mtext" : "mn";
7693
7700
  if (variant === "oldstylenums") {
7694
7701
  const ms = new mathMLTree.MathNode("mstyle", [text], ["oldstylenums"]);
7695
- node = new mathMLTree.MathNode("mn", [ms]);
7702
+ node = new mathMLTree.MathNode(tag, [ms]);
7696
7703
  } else if (variant === "italic" || variant === "bold-italic") {
7697
- return italicNumber(text, variant)
7704
+ return italicNumber(text, variant, tag)
7698
7705
  } else {
7699
7706
  if (variant !== "normal") {
7700
7707
  text.text = text.text.split("").map(c => variantChar(c, variant)).join("");
7701
7708
  }
7702
- node = new mathMLTree.MathNode("mn", [text]);
7709
+ node = new mathMLTree.MathNode(tag, [text]);
7703
7710
  }
7711
+ } else if (group.mode === "text") {
7712
+ if (variant !== "normal") {
7713
+ text.text = variantChar(text.text, variant);
7714
+ }
7715
+ node = new mathMLTree.MathNode("mtext", [text]);
7704
7716
  } else if (group.text === "\\prime") {
7705
7717
  node = new mathMLTree.MathNode("mo", [text]);
7706
7718
  // TODO: If/when Chromium uses ssty variant for prime, remove the next line.
@@ -8399,7 +8411,7 @@ var temml = (function () {
8399
8411
  // \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
8400
8412
  // We'll call \varvdots, which gets a glyph from symbols.js.
8401
8413
  // The zero-width rule gets us an equivalent to the vertical 6pt kern.
8402
- defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}");
8414
+ defineMacro("\\vdots", "{\\varvdots\\rule{0pt}{15pt}}");
8403
8415
  defineMacro("\u22ee", "\\vdots");
8404
8416
 
8405
8417
  //////////////////////////////////////////////////////////////////////
@@ -11010,7 +11022,7 @@ var temml = (function () {
11010
11022
  * https://mit-license.org/
11011
11023
  */
11012
11024
 
11013
- const version = "0.9.1";
11025
+ const version = "0.9.2";
11014
11026
 
11015
11027
  function postProcess(block) {
11016
11028
  const labelMap = {};