jekyll-theme-hydejack 9.1.0 → 9.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/body/footer.html +1 -1
  3. data/_includes/body/scripts.html +2 -2
  4. data/_includes/components/post.html +20 -14
  5. data/_includes/components/tag-list.html +24 -24
  6. data/_includes/head/meta-static.html +1 -1
  7. data/_includes/head/styles-inline.html +1 -1
  8. data/_includes/head/styles-no-inline.html +1 -1
  9. data/_includes/header.txt +1 -1
  10. data/_includes/styles/style.scss +1 -0
  11. data/_layouts/compress.html +1 -1
  12. data/_sass/_mixins.scss +18 -1
  13. data/_sass/_tippy.scss +40 -0
  14. data/_sass/html.scss +1 -7
  15. data/_sass/pooleparty/__inline__/_posts.scss +4 -1
  16. data/_sass/pooleparty/__inline__/_type.scss +2 -0
  17. data/_sass/pooleparty/__link__/_footnotes.scss +2 -1
  18. data/_sass/pooleparty/__link__/_type.scss +2 -0
  19. data/_sass/pooleparty/_footnotes.pre.scss +2 -1
  20. data/_sass/pooleparty/_posts.pre.scss +4 -1
  21. data/_sass/pooleparty/_type.pre.scss +2 -0
  22. data/_sass/tippyjs/_mixins.scss +25 -0
  23. data/_sass/tippyjs/_vars.scss +6 -0
  24. data/_sass/tippyjs/animations/fade.scss +8 -0
  25. data/_sass/tippyjs/index.scss +90 -0
  26. data/assets/bower.json +1 -1
  27. data/assets/bower_components/katex/.bower.json +7 -6
  28. data/assets/bower_components/katex/LICENSE +1 -1
  29. data/assets/bower_components/katex/dist/contrib/auto-render.js +3 -14
  30. data/assets/bower_components/katex/dist/contrib/auto-render.min.js +1 -1
  31. data/assets/bower_components/katex/dist/contrib/auto-render.mjs +3 -14
  32. data/assets/bower_components/katex/dist/contrib/mhchem.min.js +1 -1
  33. data/assets/bower_components/katex/dist/contrib/render-a11y-string.js +0 -12
  34. data/assets/bower_components/katex/dist/contrib/render-a11y-string.min.js +1 -1
  35. data/assets/bower_components/katex/dist/contrib/render-a11y-string.mjs +0 -12
  36. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  37. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  38. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  39. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  40. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  41. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  42. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  43. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  44. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  45. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  46. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  47. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  48. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  49. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  50. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  51. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  52. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  53. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  54. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  55. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  56. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  57. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  58. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  59. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  60. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  61. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  62. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  63. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  64. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  65. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  66. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  67. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  68. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  69. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  70. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  71. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  72. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  73. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  74. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  75. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  76. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  77. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  78. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  79. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  80. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  81. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  82. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  83. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  84. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  85. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  86. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  87. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  88. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  89. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  90. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  91. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  92. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  93. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  94. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  95. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  96. data/assets/bower_components/katex/dist/katex.css +2 -25
  97. data/assets/bower_components/katex/dist/katex.js +1257 -1140
  98. data/assets/bower_components/katex/dist/katex.min.css +1 -1
  99. data/assets/bower_components/katex/dist/katex.min.js +1 -1
  100. data/assets/bower_components/katex/dist/katex.mjs +1246 -1136
  101. data/assets/bower_components/katex/yarn.lock +114 -166
  102. data/assets/css/{hydejack-9.1.0.css → hydejack-9.1.1.css} +0 -0
  103. data/assets/js/{LEGACY-clap-button-hydejack-9.1.0.js → LEGACY-clap-button-hydejack-9.1.1.js} +2 -2
  104. data/assets/js/{LEGACY-drawer-hydejack-9.1.0.js → LEGACY-drawer-hydejack-9.1.1.js} +2 -2
  105. data/assets/js/{LEGACY-shadydom-hydejack-9.1.0.js → LEGACY-fetch-hydejack-9.1.1.js} +2 -2
  106. data/assets/js/LEGACY-hydejack-9.1.0.js +28795 -26
  107. data/assets/js/LEGACY-hydejack-9.1.0.js.map +1 -0
  108. data/assets/js/LEGACY-hydejack-9.1.1.js +27 -0
  109. data/assets/js/{LEGACY-navbar-hydejack-9.1.0.js → LEGACY-navbar-hydejack-9.1.1.js} +2 -2
  110. data/assets/js/{LEGACY-push-state-hydejack-9.1.0.js → LEGACY-push-state-hydejack-9.1.1.js} +2 -2
  111. data/assets/js/{resize-observer-hydejack-9.1.0.js → LEGACY-resize-observer-hydejack-9.1.1.js} +2 -2
  112. data/assets/js/{shadydom-hydejack-9.1.0.js → LEGACY-shadydom-hydejack-9.1.1.js} +2 -2
  113. data/assets/js/{LEGACY-vendors~clap-button-hydejack-9.1.0.js → LEGACY-vendors~clap-button-hydejack-9.1.1.js} +5 -5
  114. data/assets/js/{LEGACY-vendors~drawer-hydejack-9.1.0.js → LEGACY-vendors~drawer-hydejack-9.1.1.js} +4 -4
  115. data/assets/js/{LEGACY-vendors~drawer~push-state-hydejack-9.1.0.js → LEGACY-vendors~drawer~push-state-hydejack-9.1.1.js} +13 -13
  116. data/assets/js/{LEGACY-vendors~fetch-hydejack-9.1.0.js → LEGACY-vendors~fetch-hydejack-9.1.1.js} +2 -2
  117. data/assets/js/{LEGACY-vendors~intersection-observer-hydejack-9.1.0.js → LEGACY-vendors~intersection-observer-hydejack-9.1.1.js} +2 -2
  118. data/assets/js/{LEGACY-vendors~push-state-hydejack-9.1.0.js → LEGACY-vendors~push-state-hydejack-9.1.1.js} +3 -3
  119. data/assets/js/{LEGACY-vendors~shadydom-hydejack-9.1.0.js → LEGACY-vendors~shadydom-hydejack-9.1.1.js} +2 -2
  120. data/assets/js/{LEGACY-vendors~webanimations-hydejack-9.1.0.js → LEGACY-vendors~webanimations-hydejack-9.1.1.js} +2 -2
  121. data/assets/js/{LEGACY-vendors~webcomponents-hydejack-9.1.0.js → LEGACY-vendors~webcomponents-hydejack-9.1.1.js} +4 -4
  122. data/assets/js/{LEGACY-webcomponents-hydejack-9.1.0.js → LEGACY-webcomponents-hydejack-9.1.1.js} +2 -2
  123. data/assets/js/{clap-button-hydejack-9.1.0.js → clap-button-hydejack-9.1.1.js} +2 -2
  124. data/assets/js/{drawer-hydejack-9.1.0.js → drawer-hydejack-9.1.1.js} +2 -2
  125. data/assets/js/{fetch-hydejack-9.1.0.js → fetch-hydejack-9.1.1.js} +2 -2
  126. data/assets/js/hydejack-9.1.0.js +20722 -27
  127. data/assets/js/hydejack-9.1.0.js.map +1 -0
  128. data/assets/js/hydejack-9.1.1.js +28 -0
  129. data/assets/js/{navbar-hydejack-9.1.0.js → navbar-hydejack-9.1.1.js} +2 -2
  130. data/assets/js/{push-state-hydejack-9.1.0.js → push-state-hydejack-9.1.1.js} +2 -2
  131. data/assets/js/{LEGACY-resize-observer-hydejack-9.1.0.js → resize-observer-hydejack-9.1.1.js} +2 -2
  132. data/assets/js/{LEGACY-fetch-hydejack-9.1.0.js → shadydom-hydejack-9.1.1.js} +2 -2
  133. data/assets/js/{vendors~clap-button-hydejack-9.1.0.js → vendors~clap-button-hydejack-9.1.1.js} +5 -5
  134. data/assets/js/{vendors~drawer-hydejack-9.1.0.js → vendors~drawer-hydejack-9.1.1.js} +4 -4
  135. data/assets/js/{vendors~drawer~push-state-hydejack-9.1.0.js → vendors~drawer~push-state-hydejack-9.1.1.js} +11 -11
  136. data/assets/js/{vendors~fetch-hydejack-9.1.0.js → vendors~fetch-hydejack-9.1.1.js} +2 -2
  137. data/assets/js/{vendors~intersection-observer-hydejack-9.1.0.js → vendors~intersection-observer-hydejack-9.1.1.js} +2 -2
  138. data/assets/js/{vendors~push-state-hydejack-9.1.0.js → vendors~push-state-hydejack-9.1.1.js} +3 -3
  139. data/assets/js/{vendors~shadydom-hydejack-9.1.0.js → vendors~shadydom-hydejack-9.1.1.js} +2 -2
  140. data/assets/js/{vendors~webanimations-hydejack-9.1.0.js → vendors~webanimations-hydejack-9.1.1.js} +2 -2
  141. data/assets/js/{webcomponents-hydejack-9.1.0.js → webcomponents-hydejack-9.1.1.js} +2 -2
  142. data/assets/version.json +2 -2
  143. metadata +45 -36
@@ -177,14 +177,10 @@ function () {
177
177
  var Token_Token =
178
178
  /*#__PURE__*/
179
179
  function () {
180
- // don't expand the token
181
- // used in \noexpand
182
180
  function Token(text, // the text of this token
183
181
  loc) {
184
182
  this.text = void 0;
185
183
  this.loc = void 0;
186
- this.noexpand = void 0;
187
- this.treatAsRelax = void 0;
188
184
  this.text = text;
189
185
  this.loc = loc;
190
186
  }
@@ -422,7 +418,6 @@ function () {
422
418
  this.trust = void 0;
423
419
  this.maxSize = void 0;
424
420
  this.maxExpand = void 0;
425
- this.globalGroup = void 0;
426
421
  // allow null options
427
422
  options = options || {};
428
423
  this.displayMode = utils.deflt(options.displayMode, false);
@@ -438,7 +433,6 @@ function () {
438
433
  this.trust = utils.deflt(options.trust, false);
439
434
  this.maxSize = Math.max(0, utils.deflt(options.maxSize, Infinity));
440
435
  this.maxExpand = Math.max(0, utils.deflt(options.maxExpand, 1000));
441
- this.globalGroup = utils.deflt(options.globalGroup, false);
442
436
  }
443
437
  /**
444
438
  * Report nonstrict (non-LaTeX-compatible) input.
@@ -850,9 +844,6 @@ var sqrtPath = function sqrtPath(size, extraViniculum, viewBoxHeight) {
850
844
  return path;
851
845
  };
852
846
  var svgGeometry_path = {
853
- // Two paths that cover gaps in built-up parentheses.
854
- leftParenInner: "M291 0 H417 V300 H291 z",
855
- rightParenInner: "M457 0 H583 V300 H457 z",
856
847
  // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main
857
848
  doubleleftarrow: "M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",
858
849
  // doublerightarrow is from glyph U+21D2 in font KaTeX Main
@@ -1577,7 +1568,6 @@ function assertSpan(group) {
1577
1568
  // This file is GENERATED by buildMetrics.sh. DO NOT MODIFY.
1578
1569
  /* harmony default export */ var fontMetricsData = ({
1579
1570
  "AMS-Regular": {
1580
- "32": [0, 0, 0, 0, 0.25],
1581
1571
  "65": [0, 0.68889, 0, 0, 0.72222],
1582
1572
  "66": [0, 0.68889, 0, 0, 0.66667],
1583
1573
  "67": [0, 0.68889, 0, 0, 0.72222],
@@ -1605,7 +1595,6 @@ function assertSpan(group) {
1605
1595
  "89": [0, 0.68889, 0, 0, 0.72222],
1606
1596
  "90": [0, 0.68889, 0, 0, 0.66667],
1607
1597
  "107": [0, 0.68889, 0, 0, 0.55556],
1608
- "160": [0, 0, 0, 0, 0.25],
1609
1598
  "165": [0, 0.675, 0.025, 0, 0.75],
1610
1599
  "174": [0.15559, 0.69224, 0, 0, 0.94666],
1611
1600
  "240": [0, 0.68889, 0, 0, 0.55556],
@@ -1836,7 +1825,16 @@ function assertSpan(group) {
1836
1825
  "57371": [0.13597, 0.63597, 0, 0, 0.77778]
1837
1826
  },
1838
1827
  "Caligraphic-Regular": {
1839
- "32": [0, 0, 0, 0, 0.25],
1828
+ "48": [0, 0.43056, 0, 0, 0.5],
1829
+ "49": [0, 0.43056, 0, 0, 0.5],
1830
+ "50": [0, 0.43056, 0, 0, 0.5],
1831
+ "51": [0.19444, 0.43056, 0, 0, 0.5],
1832
+ "52": [0.19444, 0.43056, 0, 0, 0.5],
1833
+ "53": [0.19444, 0.43056, 0, 0, 0.5],
1834
+ "54": [0, 0.64444, 0, 0, 0.5],
1835
+ "55": [0.19444, 0.43056, 0, 0, 0.5],
1836
+ "56": [0, 0.64444, 0, 0, 0.5],
1837
+ "57": [0.19444, 0.43056, 0, 0, 0.5],
1840
1838
  "65": [0, 0.68333, 0, 0.19445, 0.79847],
1841
1839
  "66": [0, 0.68333, 0.03041, 0.13889, 0.65681],
1842
1840
  "67": [0, 0.68333, 0.05834, 0.13889, 0.52653],
@@ -1862,11 +1860,9 @@ function assertSpan(group) {
1862
1860
  "87": [0, 0.68333, 0.08222, 0.08334, 0.98778],
1863
1861
  "88": [0, 0.68333, 0.14643, 0.13889, 0.7133],
1864
1862
  "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
1865
- "90": [0, 0.68333, 0.07944, 0.13889, 0.72473],
1866
- "160": [0, 0, 0, 0, 0.25]
1863
+ "90": [0, 0.68333, 0.07944, 0.13889, 0.72473]
1867
1864
  },
1868
1865
  "Fraktur-Regular": {
1869
- "32": [0, 0, 0, 0, 0.25],
1870
1866
  "33": [0, 0.69141, 0, 0, 0.29574],
1871
1867
  "34": [0, 0.69141, 0, 0, 0.21471],
1872
1868
  "38": [0, 0.69141, 0, 0, 0.73786],
@@ -1948,7 +1944,6 @@ function assertSpan(group) {
1948
1944
  "120": [0.18906, 0.47534, 0, 0, 0.38865],
1949
1945
  "121": [0.18906, 0.47534, 0, 0, 0.49884],
1950
1946
  "122": [0.18906, 0.47534, 0, 0, 0.39054],
1951
- "160": [0, 0, 0, 0, 0.25],
1952
1947
  "8216": [0, 0.69141, 0, 0, 0.21471],
1953
1948
  "8217": [0, 0.69141, 0, 0, 0.21471],
1954
1949
  "58112": [0, 0.62119, 0, 0, 0.49749],
@@ -1961,7 +1956,6 @@ function assertSpan(group) {
1961
1956
  "58119": [0, 0.47534, 0, 0, 0.50073]
1962
1957
  },
1963
1958
  "Main-Bold": {
1964
- "32": [0, 0, 0, 0, 0.25],
1965
1959
  "33": [0, 0.69444, 0, 0, 0.35],
1966
1960
  "34": [0, 0.69444, 0, 0, 0.60278],
1967
1961
  "35": [0.19444, 0.69444, 0, 0, 0.95833],
@@ -2055,8 +2049,6 @@ function assertSpan(group) {
2055
2049
  "124": [0.25, 0.75, 0, 0, 0.31944],
2056
2050
  "125": [0.25, 0.75, 0, 0, 0.575],
2057
2051
  "126": [0.35, 0.34444, 0, 0, 0.575],
2058
- "160": [0, 0, 0, 0, 0.25],
2059
- "163": [0, 0.69444, 0, 0, 0.86853],
2060
2052
  "168": [0, 0.69444, 0, 0, 0.575],
2061
2053
  "172": [0, 0.44444, 0, 0, 0.76666],
2062
2054
  "176": [0, 0.69444, 0, 0, 0.86944],
@@ -2214,7 +2206,6 @@ function assertSpan(group) {
2214
2206
  "57376": [0.19444, 0.69444, 0, 0, 0]
2215
2207
  },
2216
2208
  "Main-BoldItalic": {
2217
- "32": [0, 0, 0, 0, 0.25],
2218
2209
  "33": [0, 0.69444, 0.11417, 0, 0.38611],
2219
2210
  "34": [0, 0.69444, 0.07939, 0, 0.62055],
2220
2211
  "35": [0.19444, 0.69444, 0.06833, 0, 0.94444],
@@ -2301,7 +2292,7 @@ function assertSpan(group) {
2301
2292
  "121": [0.19444, 0.44444, 0.105, 0, 0.56166],
2302
2293
  "122": [0, 0.44444, 0.13889, 0, 0.49055],
2303
2294
  "126": [0.35, 0.34444, 0.11472, 0, 0.59111],
2304
- "160": [0, 0, 0, 0, 0.25],
2295
+ "163": [0, 0.69444, 0, 0, 0.86853],
2305
2296
  "168": [0, 0.69444, 0.11473, 0, 0.59111],
2306
2297
  "176": [0, 0.69444, 0, 0, 0.94888],
2307
2298
  "184": [0.17014, 0, 0, 0, 0.53222],
@@ -2343,7 +2334,6 @@ function assertSpan(group) {
2343
2334
  "8221": [0, 0.69444, 0.07939, 0, 0.62055]
2344
2335
  },
2345
2336
  "Main-Italic": {
2346
- "32": [0, 0, 0, 0, 0.25],
2347
2337
  "33": [0, 0.69444, 0.12417, 0, 0.30667],
2348
2338
  "34": [0, 0.69444, 0.06961, 0, 0.51444],
2349
2339
  "35": [0.19444, 0.69444, 0.06616, 0, 0.81777],
@@ -2430,7 +2420,7 @@ function assertSpan(group) {
2430
2420
  "121": [0.19444, 0.43056, 0.08847, 0, 0.48555],
2431
2421
  "122": [0, 0.43056, 0.12292, 0, 0.40889],
2432
2422
  "126": [0.35, 0.31786, 0.11585, 0, 0.51111],
2433
- "160": [0, 0, 0, 0, 0.25],
2423
+ "163": [0, 0.69444, 0, 0, 0.76909],
2434
2424
  "168": [0, 0.66786, 0.10474, 0, 0.51111],
2435
2425
  "176": [0, 0.69444, 0, 0, 0.83129],
2436
2426
  "184": [0.17014, 0, 0, 0, 0.46],
@@ -2439,8 +2429,10 @@ function assertSpan(group) {
2439
2429
  "223": [0.19444, 0.69444, 0.10514, 0, 0.53666],
2440
2430
  "230": [0, 0.43056, 0.07514, 0, 0.71555],
2441
2431
  "248": [0.09722, 0.52778, 0.09194, 0, 0.51111],
2432
+ "305": [0, 0.43056, 0, 0.02778, 0.32246],
2442
2433
  "338": [0, 0.68333, 0.12028, 0, 0.98499],
2443
2434
  "339": [0, 0.43056, 0.07514, 0, 0.71555],
2435
+ "567": [0.19444, 0.43056, 0, 0.08334, 0.38403],
2444
2436
  "710": [0, 0.69444, 0.06646, 0, 0.51111],
2445
2437
  "711": [0, 0.62847, 0.08295, 0, 0.51111],
2446
2438
  "713": [0, 0.56167, 0.10333, 0, 0.51111],
@@ -2566,7 +2558,6 @@ function assertSpan(group) {
2566
2558
  "125": [0.25, 0.75, 0, 0, 0.5],
2567
2559
  "126": [0.35, 0.31786, 0, 0, 0.5],
2568
2560
  "160": [0, 0, 0, 0, 0.25],
2569
- "163": [0, 0.69444, 0, 0, 0.76909],
2570
2561
  "167": [0.19444, 0.69444, 0, 0, 0.44445],
2571
2562
  "168": [0, 0.66786, 0, 0, 0.5],
2572
2563
  "172": [0, 0.43056, 0, 0, 0.66667],
@@ -2749,17 +2740,6 @@ function assertSpan(group) {
2749
2740
  "57376": [0.19444, 0.69444, 0, 0, 0]
2750
2741
  },
2751
2742
  "Math-BoldItalic": {
2752
- "32": [0, 0, 0, 0, 0.25],
2753
- "48": [0, 0.44444, 0, 0, 0.575],
2754
- "49": [0, 0.44444, 0, 0, 0.575],
2755
- "50": [0, 0.44444, 0, 0, 0.575],
2756
- "51": [0.19444, 0.44444, 0, 0, 0.575],
2757
- "52": [0.19444, 0.44444, 0, 0, 0.575],
2758
- "53": [0.19444, 0.44444, 0, 0, 0.575],
2759
- "54": [0, 0.64444, 0, 0, 0.575],
2760
- "55": [0.19444, 0.44444, 0, 0, 0.575],
2761
- "56": [0, 0.64444, 0, 0, 0.575],
2762
- "57": [0.19444, 0.44444, 0, 0, 0.575],
2763
2743
  "65": [0, 0.68611, 0, 0, 0.86944],
2764
2744
  "66": [0, 0.68611, 0.04835, 0, 0.8664],
2765
2745
  "67": [0, 0.68611, 0.06979, 0, 0.81694],
@@ -2812,7 +2792,6 @@ function assertSpan(group) {
2812
2792
  "120": [0, 0.44444, 0, 0, 0.65903],
2813
2793
  "121": [0.19444, 0.44444, 0.03704, 0, 0.59028],
2814
2794
  "122": [0, 0.44444, 0.04213, 0, 0.55509],
2815
- "160": [0, 0, 0, 0, 0.25],
2816
2795
  "915": [0, 0.68611, 0.15972, 0, 0.65694],
2817
2796
  "916": [0, 0.68611, 0, 0, 0.95833],
2818
2797
  "920": [0, 0.68611, 0.03194, 0, 0.86722],
@@ -2853,22 +2832,9 @@ function assertSpan(group) {
2853
2832
  "981": [0.19444, 0.69444, 0, 0, 0.7125],
2854
2833
  "982": [0, 0.44444, 0.03194, 0, 0.975],
2855
2834
  "1009": [0.19444, 0.44444, 0, 0, 0.6118],
2856
- "1013": [0, 0.44444, 0, 0, 0.48333],
2857
- "57649": [0, 0.44444, 0, 0, 0.39352],
2858
- "57911": [0.19444, 0.44444, 0, 0, 0.43889]
2835
+ "1013": [0, 0.44444, 0, 0, 0.48333]
2859
2836
  },
2860
2837
  "Math-Italic": {
2861
- "32": [0, 0, 0, 0, 0.25],
2862
- "48": [0, 0.43056, 0, 0, 0.5],
2863
- "49": [0, 0.43056, 0, 0, 0.5],
2864
- "50": [0, 0.43056, 0, 0, 0.5],
2865
- "51": [0.19444, 0.43056, 0, 0, 0.5],
2866
- "52": [0.19444, 0.43056, 0, 0, 0.5],
2867
- "53": [0.19444, 0.43056, 0, 0, 0.5],
2868
- "54": [0, 0.64444, 0, 0, 0.5],
2869
- "55": [0.19444, 0.43056, 0, 0, 0.5],
2870
- "56": [0, 0.64444, 0, 0, 0.5],
2871
- "57": [0.19444, 0.43056, 0, 0, 0.5],
2872
2838
  "65": [0, 0.68333, 0, 0.13889, 0.75],
2873
2839
  "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
2874
2840
  "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
@@ -2921,7 +2887,6 @@ function assertSpan(group) {
2921
2887
  "120": [0, 0.43056, 0, 0.02778, 0.57153],
2922
2888
  "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
2923
2889
  "122": [0, 0.43056, 0.04398, 0.05556, 0.46505],
2924
- "160": [0, 0, 0, 0, 0.25],
2925
2890
  "915": [0, 0.68333, 0.13889, 0.08334, 0.61528],
2926
2891
  "916": [0, 0.68333, 0, 0.16667, 0.83334],
2927
2892
  "920": [0, 0.68333, 0.02778, 0.08334, 0.76278],
@@ -2962,12 +2927,104 @@ function assertSpan(group) {
2962
2927
  "981": [0.19444, 0.69444, 0, 0.08334, 0.59583],
2963
2928
  "982": [0, 0.43056, 0.02778, 0, 0.82813],
2964
2929
  "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702],
2965
- "1013": [0, 0.43056, 0, 0.05556, 0.4059],
2966
- "57649": [0, 0.43056, 0, 0.02778, 0.32246],
2967
- "57911": [0.19444, 0.43056, 0, 0.08334, 0.38403]
2930
+ "1013": [0, 0.43056, 0, 0.05556, 0.4059]
2931
+ },
2932
+ "Math-Regular": {
2933
+ "65": [0, 0.68333, 0, 0.13889, 0.75],
2934
+ "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
2935
+ "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
2936
+ "68": [0, 0.68333, 0.02778, 0.05556, 0.82792],
2937
+ "69": [0, 0.68333, 0.05764, 0.08334, 0.7382],
2938
+ "70": [0, 0.68333, 0.13889, 0.08334, 0.64306],
2939
+ "71": [0, 0.68333, 0, 0.08334, 0.78625],
2940
+ "72": [0, 0.68333, 0.08125, 0.05556, 0.83125],
2941
+ "73": [0, 0.68333, 0.07847, 0.11111, 0.43958],
2942
+ "74": [0, 0.68333, 0.09618, 0.16667, 0.55451],
2943
+ "75": [0, 0.68333, 0.07153, 0.05556, 0.84931],
2944
+ "76": [0, 0.68333, 0, 0.02778, 0.68056],
2945
+ "77": [0, 0.68333, 0.10903, 0.08334, 0.97014],
2946
+ "78": [0, 0.68333, 0.10903, 0.08334, 0.80347],
2947
+ "79": [0, 0.68333, 0.02778, 0.08334, 0.76278],
2948
+ "80": [0, 0.68333, 0.13889, 0.08334, 0.64201],
2949
+ "81": [0.19444, 0.68333, 0, 0.08334, 0.79056],
2950
+ "82": [0, 0.68333, 0.00773, 0.08334, 0.75929],
2951
+ "83": [0, 0.68333, 0.05764, 0.08334, 0.6132],
2952
+ "84": [0, 0.68333, 0.13889, 0.08334, 0.58438],
2953
+ "85": [0, 0.68333, 0.10903, 0.02778, 0.68278],
2954
+ "86": [0, 0.68333, 0.22222, 0, 0.58333],
2955
+ "87": [0, 0.68333, 0.13889, 0, 0.94445],
2956
+ "88": [0, 0.68333, 0.07847, 0.08334, 0.82847],
2957
+ "89": [0, 0.68333, 0.22222, 0, 0.58056],
2958
+ "90": [0, 0.68333, 0.07153, 0.08334, 0.68264],
2959
+ "97": [0, 0.43056, 0, 0, 0.52859],
2960
+ "98": [0, 0.69444, 0, 0, 0.42917],
2961
+ "99": [0, 0.43056, 0, 0.05556, 0.43276],
2962
+ "100": [0, 0.69444, 0, 0.16667, 0.52049],
2963
+ "101": [0, 0.43056, 0, 0.05556, 0.46563],
2964
+ "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
2965
+ "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
2966
+ "104": [0, 0.69444, 0, 0, 0.57616],
2967
+ "105": [0, 0.65952, 0, 0, 0.34451],
2968
+ "106": [0.19444, 0.65952, 0.05724, 0, 0.41181],
2969
+ "107": [0, 0.69444, 0.03148, 0, 0.5206],
2970
+ "108": [0, 0.69444, 0.01968, 0.08334, 0.29838],
2971
+ "109": [0, 0.43056, 0, 0, 0.87801],
2972
+ "110": [0, 0.43056, 0, 0, 0.60023],
2973
+ "111": [0, 0.43056, 0, 0.05556, 0.48472],
2974
+ "112": [0.19444, 0.43056, 0, 0.08334, 0.50313],
2975
+ "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
2976
+ "114": [0, 0.43056, 0.02778, 0.05556, 0.45116],
2977
+ "115": [0, 0.43056, 0, 0.05556, 0.46875],
2978
+ "116": [0, 0.61508, 0, 0.08334, 0.36111],
2979
+ "117": [0, 0.43056, 0, 0.02778, 0.57246],
2980
+ "118": [0, 0.43056, 0.03588, 0.02778, 0.48472],
2981
+ "119": [0, 0.43056, 0.02691, 0.08334, 0.71592],
2982
+ "120": [0, 0.43056, 0, 0.02778, 0.57153],
2983
+ "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
2984
+ "122": [0, 0.43056, 0.04398, 0.05556, 0.46505],
2985
+ "915": [0, 0.68333, 0.13889, 0.08334, 0.61528],
2986
+ "916": [0, 0.68333, 0, 0.16667, 0.83334],
2987
+ "920": [0, 0.68333, 0.02778, 0.08334, 0.76278],
2988
+ "923": [0, 0.68333, 0, 0.16667, 0.69445],
2989
+ "926": [0, 0.68333, 0.07569, 0.08334, 0.74236],
2990
+ "928": [0, 0.68333, 0.08125, 0.05556, 0.83125],
2991
+ "931": [0, 0.68333, 0.05764, 0.08334, 0.77986],
2992
+ "933": [0, 0.68333, 0.13889, 0.05556, 0.58333],
2993
+ "934": [0, 0.68333, 0, 0.08334, 0.66667],
2994
+ "936": [0, 0.68333, 0.11, 0.05556, 0.61222],
2995
+ "937": [0, 0.68333, 0.05017, 0.08334, 0.7724],
2996
+ "945": [0, 0.43056, 0.0037, 0.02778, 0.6397],
2997
+ "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
2998
+ "947": [0.19444, 0.43056, 0.05556, 0, 0.51773],
2999
+ "948": [0, 0.69444, 0.03785, 0.05556, 0.44444],
3000
+ "949": [0, 0.43056, 0, 0.08334, 0.46632],
3001
+ "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
3002
+ "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
3003
+ "952": [0, 0.69444, 0.02778, 0.08334, 0.46944],
3004
+ "953": [0, 0.43056, 0, 0.05556, 0.35394],
3005
+ "954": [0, 0.43056, 0, 0, 0.57616],
3006
+ "955": [0, 0.69444, 0, 0, 0.58334],
3007
+ "956": [0.19444, 0.43056, 0, 0.02778, 0.60255],
3008
+ "957": [0, 0.43056, 0.06366, 0.02778, 0.49398],
3009
+ "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
3010
+ "959": [0, 0.43056, 0, 0.05556, 0.48472],
3011
+ "960": [0, 0.43056, 0.03588, 0, 0.57003],
3012
+ "961": [0.19444, 0.43056, 0, 0.08334, 0.51702],
3013
+ "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
3014
+ "963": [0, 0.43056, 0.03588, 0, 0.57141],
3015
+ "964": [0, 0.43056, 0.1132, 0.02778, 0.43715],
3016
+ "965": [0, 0.43056, 0.03588, 0.02778, 0.54028],
3017
+ "966": [0.19444, 0.43056, 0, 0.08334, 0.65417],
3018
+ "967": [0.19444, 0.43056, 0, 0.05556, 0.62569],
3019
+ "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
3020
+ "969": [0, 0.43056, 0.03588, 0, 0.62245],
3021
+ "977": [0, 0.69444, 0, 0.08334, 0.59144],
3022
+ "981": [0.19444, 0.69444, 0, 0.08334, 0.59583],
3023
+ "982": [0, 0.43056, 0.02778, 0, 0.82813],
3024
+ "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702],
3025
+ "1013": [0, 0.43056, 0, 0.05556, 0.4059]
2968
3026
  },
2969
3027
  "SansSerif-Bold": {
2970
- "32": [0, 0, 0, 0, 0.25],
2971
3028
  "33": [0, 0.69444, 0, 0, 0.36667],
2972
3029
  "34": [0, 0.69444, 0, 0, 0.55834],
2973
3030
  "35": [0.19444, 0.69444, 0, 0, 0.91667],
@@ -3055,7 +3112,6 @@ function assertSpan(group) {
3055
3112
  "121": [0.19444, 0.45833, 0.01528, 0, 0.5],
3056
3113
  "122": [0, 0.45833, 0, 0, 0.47639],
3057
3114
  "126": [0.35, 0.34444, 0, 0, 0.55],
3058
- "160": [0, 0, 0, 0, 0.25],
3059
3115
  "168": [0, 0.69444, 0, 0, 0.55],
3060
3116
  "176": [0, 0.69444, 0, 0, 0.73334],
3061
3117
  "180": [0, 0.69444, 0, 0, 0.55],
@@ -3089,7 +3145,6 @@ function assertSpan(group) {
3089
3145
  "8221": [0, 0.69444, 0, 0, 0.55834]
3090
3146
  },
3091
3147
  "SansSerif-Italic": {
3092
- "32": [0, 0, 0, 0, 0.25],
3093
3148
  "33": [0, 0.69444, 0.05733, 0, 0.31945],
3094
3149
  "34": [0, 0.69444, 0.00316, 0, 0.5],
3095
3150
  "35": [0.19444, 0.69444, 0.05087, 0, 0.83334],
@@ -3177,7 +3232,6 @@ function assertSpan(group) {
3177
3232
  "121": [0.19444, 0.44444, 0.10836, 0, 0.46111],
3178
3233
  "122": [0, 0.44444, 0.08752, 0, 0.43472],
3179
3234
  "126": [0.35, 0.32659, 0.08826, 0, 0.5],
3180
- "160": [0, 0, 0, 0, 0.25],
3181
3235
  "168": [0, 0.67937, 0.06385, 0, 0.5],
3182
3236
  "176": [0, 0.69444, 0, 0, 0.73752],
3183
3237
  "184": [0.17014, 0, 0, 0, 0.44445],
@@ -3212,7 +3266,6 @@ function assertSpan(group) {
3212
3266
  "8221": [0, 0.69444, 0.00316, 0, 0.5]
3213
3267
  },
3214
3268
  "SansSerif-Regular": {
3215
- "32": [0, 0, 0, 0, 0.25],
3216
3269
  "33": [0, 0.69444, 0, 0, 0.31945],
3217
3270
  "34": [0, 0.69444, 0, 0, 0.5],
3218
3271
  "35": [0.19444, 0.69444, 0, 0, 0.83334],
@@ -3300,7 +3353,6 @@ function assertSpan(group) {
3300
3353
  "121": [0.19444, 0.44444, 0.01389, 0, 0.46111],
3301
3354
  "122": [0, 0.44444, 0, 0, 0.43472],
3302
3355
  "126": [0.35, 0.32659, 0, 0, 0.5],
3303
- "160": [0, 0, 0, 0, 0.25],
3304
3356
  "168": [0, 0.67937, 0, 0, 0.5],
3305
3357
  "176": [0, 0.69444, 0, 0, 0.66667],
3306
3358
  "184": [0.17014, 0, 0, 0, 0.44445],
@@ -3335,7 +3387,6 @@ function assertSpan(group) {
3335
3387
  "8221": [0, 0.69444, 0, 0, 0.5]
3336
3388
  },
3337
3389
  "Script-Regular": {
3338
- "32": [0, 0, 0, 0, 0.25],
3339
3390
  "65": [0, 0.7, 0.22925, 0, 0.80253],
3340
3391
  "66": [0, 0.7, 0.04087, 0, 0.90757],
3341
3392
  "67": [0, 0.7, 0.1689, 0, 0.66619],
@@ -3361,11 +3412,9 @@ function assertSpan(group) {
3361
3412
  "87": [0, 0.7, 0.27523, 0, 0.80532],
3362
3413
  "88": [0, 0.7, 0.26006, 0, 0.94445],
3363
3414
  "89": [0, 0.7, 0.2939, 0, 0.70961],
3364
- "90": [0, 0.7, 0.24037, 0, 0.8212],
3365
- "160": [0, 0, 0, 0, 0.25]
3415
+ "90": [0, 0.7, 0.24037, 0, 0.8212]
3366
3416
  },
3367
3417
  "Size1-Regular": {
3368
- "32": [0, 0, 0, 0, 0.25],
3369
3418
  "40": [0.35001, 0.85, 0, 0, 0.45834],
3370
3419
  "41": [0.35001, 0.85, 0, 0, 0.45834],
3371
3420
  "47": [0.35001, 0.85, 0, 0, 0.57778],
@@ -3374,7 +3423,6 @@ function assertSpan(group) {
3374
3423
  "93": [0.35001, 0.85, 0, 0, 0.41667],
3375
3424
  "123": [0.35001, 0.85, 0, 0, 0.58334],
3376
3425
  "125": [0.35001, 0.85, 0, 0, 0.58334],
3377
- "160": [0, 0, 0, 0, 0.25],
3378
3426
  "710": [0, 0.72222, 0, 0, 0.55556],
3379
3427
  "732": [0, 0.72222, 0, 0, 0.55556],
3380
3428
  "770": [0, 0.72222, 0, 0, 0.55556],
@@ -3412,7 +3460,6 @@ function assertSpan(group) {
3412
3460
  "10758": [0.25001, 0.75, 0, 0, 0.83334]
3413
3461
  },
3414
3462
  "Size2-Regular": {
3415
- "32": [0, 0, 0, 0, 0.25],
3416
3463
  "40": [0.65002, 1.15, 0, 0, 0.59722],
3417
3464
  "41": [0.65002, 1.15, 0, 0, 0.59722],
3418
3465
  "47": [0.65002, 1.15, 0, 0, 0.81111],
@@ -3421,7 +3468,6 @@ function assertSpan(group) {
3421
3468
  "93": [0.65002, 1.15, 0, 0, 0.47222],
3422
3469
  "123": [0.65002, 1.15, 0, 0, 0.66667],
3423
3470
  "125": [0.65002, 1.15, 0, 0, 0.66667],
3424
- "160": [0, 0, 0, 0, 0.25],
3425
3471
  "710": [0, 0.75, 0, 0, 1.0],
3426
3472
  "732": [0, 0.75, 0, 0, 1.0],
3427
3473
  "770": [0, 0.75, 0, 0, 1.0],
@@ -3451,7 +3497,6 @@ function assertSpan(group) {
3451
3497
  "10758": [0.55001, 1.05, 0, 0, 1.11111]
3452
3498
  },
3453
3499
  "Size3-Regular": {
3454
- "32": [0, 0, 0, 0, 0.25],
3455
3500
  "40": [0.95003, 1.45, 0, 0, 0.73611],
3456
3501
  "41": [0.95003, 1.45, 0, 0, 0.73611],
3457
3502
  "47": [0.95003, 1.45, 0, 0, 1.04445],
@@ -3460,7 +3505,6 @@ function assertSpan(group) {
3460
3505
  "93": [0.95003, 1.45, 0, 0, 0.52778],
3461
3506
  "123": [0.95003, 1.45, 0, 0, 0.75],
3462
3507
  "125": [0.95003, 1.45, 0, 0, 0.75],
3463
- "160": [0, 0, 0, 0, 0.25],
3464
3508
  "710": [0, 0.75, 0, 0, 1.44445],
3465
3509
  "732": [0, 0.75, 0, 0, 1.44445],
3466
3510
  "770": [0, 0.75, 0, 0, 1.44445],
@@ -3474,7 +3518,6 @@ function assertSpan(group) {
3474
3518
  "10217": [0.95003, 1.45, 0, 0, 0.75]
3475
3519
  },
3476
3520
  "Size4-Regular": {
3477
- "32": [0, 0, 0, 0, 0.25],
3478
3521
  "40": [1.25003, 1.75, 0, 0, 0.79167],
3479
3522
  "41": [1.25003, 1.75, 0, 0, 0.79167],
3480
3523
  "47": [1.25003, 1.75, 0, 0, 1.27778],
@@ -3483,7 +3526,6 @@ function assertSpan(group) {
3483
3526
  "93": [1.25003, 1.75, 0, 0, 0.58334],
3484
3527
  "123": [1.25003, 1.75, 0, 0, 0.80556],
3485
3528
  "125": [1.25003, 1.75, 0, 0, 0.80556],
3486
- "160": [0, 0, 0, 0, 0.25],
3487
3529
  "710": [0, 0.825, 0, 0, 1.8889],
3488
3530
  "732": [0, 0.825, 0, 0, 1.8889],
3489
3531
  "770": [0, 0.825, 0, 0, 1.8889],
@@ -4196,10 +4238,9 @@ defineSymbol(symbols_math, ams, symbols_textord, "\u25A0", "\\blacksquare");
4196
4238
  defineSymbol(symbols_math, ams, symbols_textord, "\u29EB", "\\blacklozenge");
4197
4239
  defineSymbol(symbols_math, ams, symbols_textord, "\u2605", "\\bigstar");
4198
4240
  defineSymbol(symbols_math, ams, symbols_textord, "\u2222", "\\sphericalangle", true);
4199
- defineSymbol(symbols_math, ams, symbols_textord, "\u2201", "\\complement", true); // unicode-math maps U+F0 to \matheth. We map to AMS function \eth
4241
+ defineSymbol(symbols_math, ams, symbols_textord, "\u2201", "\\complement", true); // unicode-math maps U+F0 (ð) to \matheth. We map to AMS function \eth
4200
4242
 
4201
4243
  defineSymbol(symbols_math, ams, symbols_textord, "\xF0", "\\eth", true);
4202
- defineSymbol(symbols_text, main, symbols_textord, "\xF0", "\xF0");
4203
4244
  defineSymbol(symbols_math, ams, symbols_textord, "\u2571", "\\diagup");
4204
4245
  defineSymbol(symbols_math, ams, symbols_textord, "\u2572", "\\diagdown");
4205
4246
  defineSymbol(symbols_math, ams, symbols_textord, "\u25A1", "\\square");
@@ -4218,10 +4259,10 @@ defineSymbol(symbols_math, ams, symbols_textord, "\u2137", "\\gimel", true); //
4218
4259
  defineSymbol(symbols_math, ams, symbols_textord, "\u03DD", "\\digamma", true);
4219
4260
  defineSymbol(symbols_math, ams, symbols_textord, "\u03F0", "\\varkappa"); // AMS Delimiters
4220
4261
 
4221
- defineSymbol(symbols_math, ams, symbols_open, "\u250C", "\\@ulcorner", true);
4222
- defineSymbol(symbols_math, ams, symbols_close, "\u2510", "\\@urcorner", true);
4223
- defineSymbol(symbols_math, ams, symbols_open, "\u2514", "\\@llcorner", true);
4224
- defineSymbol(symbols_math, ams, symbols_close, "\u2518", "\\@lrcorner", true); // AMS Binary Relations
4262
+ defineSymbol(symbols_math, ams, symbols_open, "\u250C", "\\ulcorner", true);
4263
+ defineSymbol(symbols_math, ams, symbols_close, "\u2510", "\\urcorner", true);
4264
+ defineSymbol(symbols_math, ams, symbols_open, "\u2514", "\\llcorner", true);
4265
+ defineSymbol(symbols_math, ams, symbols_close, "\u2518", "\\lrcorner", true); // AMS Binary Relations
4225
4266
 
4226
4267
  defineSymbol(symbols_math, ams, rel, "\u2266", "\\leqq", true);
4227
4268
  defineSymbol(symbols_math, ams, rel, "\u2A7D", "\\leqslant", true);
@@ -4449,22 +4490,28 @@ defineSymbol(symbols_math, main, bin, "\u2228", "\\lor");
4449
4490
  defineSymbol(symbols_math, main, bin, "\u2227", "\\wedge", true);
4450
4491
  defineSymbol(symbols_math, main, bin, "\u2228", "\\vee", true);
4451
4492
  defineSymbol(symbols_math, main, symbols_textord, "\u221A", "\\surd");
4493
+ defineSymbol(symbols_math, main, symbols_open, "(", "(");
4494
+ defineSymbol(symbols_math, main, symbols_open, "[", "[");
4452
4495
  defineSymbol(symbols_math, main, symbols_open, "\u27E8", "\\langle", true);
4453
4496
  defineSymbol(symbols_math, main, symbols_open, "\u2223", "\\lvert");
4454
4497
  defineSymbol(symbols_math, main, symbols_open, "\u2225", "\\lVert");
4498
+ defineSymbol(symbols_math, main, symbols_close, ")", ")");
4499
+ defineSymbol(symbols_math, main, symbols_close, "]", "]");
4455
4500
  defineSymbol(symbols_math, main, symbols_close, "?", "?");
4456
4501
  defineSymbol(symbols_math, main, symbols_close, "!", "!");
4457
4502
  defineSymbol(symbols_math, main, symbols_close, "\u27E9", "\\rangle", true);
4458
4503
  defineSymbol(symbols_math, main, symbols_close, "\u2223", "\\rvert");
4459
4504
  defineSymbol(symbols_math, main, symbols_close, "\u2225", "\\rVert");
4460
4505
  defineSymbol(symbols_math, main, rel, "=", "=");
4506
+ defineSymbol(symbols_math, main, rel, "<", "<");
4507
+ defineSymbol(symbols_math, main, rel, ">", ">");
4461
4508
  defineSymbol(symbols_math, main, rel, ":", ":");
4462
4509
  defineSymbol(symbols_math, main, rel, "\u2248", "\\approx", true);
4463
4510
  defineSymbol(symbols_math, main, rel, "\u2245", "\\cong", true);
4464
4511
  defineSymbol(symbols_math, main, rel, "\u2265", "\\ge");
4465
4512
  defineSymbol(symbols_math, main, rel, "\u2265", "\\geq", true);
4466
4513
  defineSymbol(symbols_math, main, rel, "\u2190", "\\gets");
4467
- defineSymbol(symbols_math, main, rel, ">", "\\gt", true);
4514
+ defineSymbol(symbols_math, main, rel, ">", "\\gt");
4468
4515
  defineSymbol(symbols_math, main, rel, "\u2208", "\\in", true);
4469
4516
  defineSymbol(symbols_math, main, rel, "\uE020", "\\@not");
4470
4517
  defineSymbol(symbols_math, main, rel, "\u2282", "\\subset", true);
@@ -4477,7 +4524,7 @@ defineSymbol(symbols_math, main, rel, "\u22A8", "\\models");
4477
4524
  defineSymbol(symbols_math, main, rel, "\u2190", "\\leftarrow", true);
4478
4525
  defineSymbol(symbols_math, main, rel, "\u2264", "\\le");
4479
4526
  defineSymbol(symbols_math, main, rel, "\u2264", "\\leq", true);
4480
- defineSymbol(symbols_math, main, rel, "<", "\\lt", true);
4527
+ defineSymbol(symbols_math, main, rel, "<", "\\lt");
4481
4528
  defineSymbol(symbols_math, main, rel, "\u2192", "\\rightarrow", true);
4482
4529
  defineSymbol(symbols_math, main, rel, "\u2192", "\\to");
4483
4530
  defineSymbol(symbols_math, ams, rel, "\u2271", "\\ngeq", true);
@@ -4488,7 +4535,6 @@ defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "\\space"); // Ref: La
4488
4535
 
4489
4536
  defineSymbol(symbols_math, main, symbols_spacing, "\xA0", "\\nobreakspace");
4490
4537
  defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\ ");
4491
- defineSymbol(symbols_text, main, symbols_spacing, "\xA0", " ");
4492
4538
  defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "~");
4493
4539
  defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\space");
4494
4540
  defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\nobreakspace");
@@ -4520,15 +4566,15 @@ defineSymbol(symbols_text, main, symbols_textord, "}", "\\}");
4520
4566
  defineSymbol(symbols_text, main, symbols_textord, "}", "\\textbraceright");
4521
4567
  defineSymbol(symbols_math, main, symbols_open, "{", "\\lbrace");
4522
4568
  defineSymbol(symbols_math, main, symbols_close, "}", "\\rbrace");
4523
- defineSymbol(symbols_math, main, symbols_open, "[", "\\lbrack", true);
4524
- defineSymbol(symbols_text, main, symbols_textord, "[", "\\lbrack", true);
4525
- defineSymbol(symbols_math, main, symbols_close, "]", "\\rbrack", true);
4526
- defineSymbol(symbols_text, main, symbols_textord, "]", "\\rbrack", true);
4527
- defineSymbol(symbols_math, main, symbols_open, "(", "\\lparen", true);
4528
- defineSymbol(symbols_math, main, symbols_close, ")", "\\rparen", true);
4529
- defineSymbol(symbols_text, main, symbols_textord, "<", "\\textless", true); // in T1 fontenc
4569
+ defineSymbol(symbols_math, main, symbols_open, "[", "\\lbrack");
4570
+ defineSymbol(symbols_text, main, symbols_textord, "[", "\\lbrack");
4571
+ defineSymbol(symbols_math, main, symbols_close, "]", "\\rbrack");
4572
+ defineSymbol(symbols_text, main, symbols_textord, "]", "\\rbrack");
4573
+ defineSymbol(symbols_math, main, symbols_open, "(", "\\lparen");
4574
+ defineSymbol(symbols_math, main, symbols_close, ")", "\\rparen");
4575
+ defineSymbol(symbols_text, main, symbols_textord, "<", "\\textless"); // in T1 fontenc
4530
4576
 
4531
- defineSymbol(symbols_text, main, symbols_textord, ">", "\\textgreater", true); // in T1 fontenc
4577
+ defineSymbol(symbols_text, main, symbols_textord, ">", "\\textgreater"); // in T1 fontenc
4532
4578
 
4533
4579
  defineSymbol(symbols_math, main, symbols_open, "\u230A", "\\lfloor", true);
4534
4580
  defineSymbol(symbols_math, main, symbols_close, "\u230B", "\\rfloor", true);
@@ -4537,7 +4583,7 @@ defineSymbol(symbols_math, main, symbols_close, "\u2309", "\\rceil", true);
4537
4583
  defineSymbol(symbols_math, main, symbols_textord, "\\", "\\backslash");
4538
4584
  defineSymbol(symbols_math, main, symbols_textord, "\u2223", "|");
4539
4585
  defineSymbol(symbols_math, main, symbols_textord, "\u2223", "\\vert");
4540
- defineSymbol(symbols_text, main, symbols_textord, "|", "\\textbar", true); // in T1 fontenc
4586
+ defineSymbol(symbols_text, main, symbols_textord, "|", "\\textbar"); // in T1 fontenc
4541
4587
 
4542
4588
  defineSymbol(symbols_math, main, symbols_textord, "\u2225", "\\|");
4543
4589
  defineSymbol(symbols_math, main, symbols_textord, "\u2225", "\\Vert");
@@ -4567,6 +4613,8 @@ defineSymbol(symbols_math, main, op, "\u2A02", "\\bigotimes");
4567
4613
  defineSymbol(symbols_math, main, op, "\u2A01", "\\bigoplus");
4568
4614
  defineSymbol(symbols_math, main, op, "\u2A00", "\\bigodot");
4569
4615
  defineSymbol(symbols_math, main, op, "\u222E", "\\oint");
4616
+ defineSymbol(symbols_math, main, op, "\u222F", "\\oiint");
4617
+ defineSymbol(symbols_math, main, op, "\u2230", "\\oiiint");
4570
4618
  defineSymbol(symbols_math, main, op, "\u2A06", "\\bigsqcup");
4571
4619
  defineSymbol(symbols_math, main, op, "\u222B", "\\smallint");
4572
4620
  defineSymbol(symbols_text, main, symbols_inner, "\u2026", "\\textellipsis");
@@ -4587,16 +4635,14 @@ defineSymbol(symbols_math, main, symbols_accent, "\u02C7", "\\check");
4587
4635
  defineSymbol(symbols_math, main, symbols_accent, "^", "\\hat");
4588
4636
  defineSymbol(symbols_math, main, symbols_accent, "\u20D7", "\\vec");
4589
4637
  defineSymbol(symbols_math, main, symbols_accent, "\u02D9", "\\dot");
4590
- defineSymbol(symbols_math, main, symbols_accent, "\u02DA", "\\mathring"); // \imath and \jmath should be invariant to \mathrm, \mathbf, etc., so use PUA
4591
-
4592
- defineSymbol(symbols_math, main, mathord, "\uE131", "\\@imath");
4593
- defineSymbol(symbols_math, main, mathord, "\uE237", "\\@jmath");
4594
- defineSymbol(symbols_math, main, symbols_textord, "\u0131", "\u0131");
4595
- defineSymbol(symbols_math, main, symbols_textord, "\u0237", "\u0237");
4638
+ defineSymbol(symbols_math, main, symbols_accent, "\u02DA", "\\mathring");
4639
+ defineSymbol(symbols_math, main, mathord, "\u0131", "\\imath", true);
4640
+ defineSymbol(symbols_math, main, mathord, "\u0237", "\\jmath", true);
4596
4641
  defineSymbol(symbols_text, main, symbols_textord, "\u0131", "\\i", true);
4597
4642
  defineSymbol(symbols_text, main, symbols_textord, "\u0237", "\\j", true);
4598
4643
  defineSymbol(symbols_text, main, symbols_textord, "\xDF", "\\ss", true);
4599
4644
  defineSymbol(symbols_text, main, symbols_textord, "\xE6", "\\ae", true);
4645
+ defineSymbol(symbols_text, main, symbols_textord, "\xE6", "\\ae", true);
4600
4646
  defineSymbol(symbols_text, main, symbols_textord, "\u0153", "\\oe", true);
4601
4647
  defineSymbol(symbols_text, main, symbols_textord, "\xF8", "\\o", true);
4602
4648
  defineSymbol(symbols_text, main, symbols_textord, "\xC6", "\\AE", true);
@@ -4633,31 +4679,34 @@ var ligatures = {
4633
4679
  "``": true,
4634
4680
  "''": true
4635
4681
  };
4636
- defineSymbol(symbols_text, main, symbols_textord, "\u2013", "--", true);
4682
+ defineSymbol(symbols_text, main, symbols_textord, "\u2013", "--");
4637
4683
  defineSymbol(symbols_text, main, symbols_textord, "\u2013", "\\textendash");
4638
- defineSymbol(symbols_text, main, symbols_textord, "\u2014", "---", true);
4684
+ defineSymbol(symbols_text, main, symbols_textord, "\u2014", "---");
4639
4685
  defineSymbol(symbols_text, main, symbols_textord, "\u2014", "\\textemdash");
4640
- defineSymbol(symbols_text, main, symbols_textord, "\u2018", "`", true);
4686
+ defineSymbol(symbols_text, main, symbols_textord, "\u2018", "`");
4641
4687
  defineSymbol(symbols_text, main, symbols_textord, "\u2018", "\\textquoteleft");
4642
- defineSymbol(symbols_text, main, symbols_textord, "\u2019", "'", true);
4688
+ defineSymbol(symbols_text, main, symbols_textord, "\u2019", "'");
4643
4689
  defineSymbol(symbols_text, main, symbols_textord, "\u2019", "\\textquoteright");
4644
- defineSymbol(symbols_text, main, symbols_textord, "\u201C", "``", true);
4690
+ defineSymbol(symbols_text, main, symbols_textord, "\u201C", "``");
4645
4691
  defineSymbol(symbols_text, main, symbols_textord, "\u201C", "\\textquotedblleft");
4646
- defineSymbol(symbols_text, main, symbols_textord, "\u201D", "''", true);
4692
+ defineSymbol(symbols_text, main, symbols_textord, "\u201D", "''");
4647
4693
  defineSymbol(symbols_text, main, symbols_textord, "\u201D", "\\textquotedblright"); // \degree from gensymb package
4648
4694
 
4649
4695
  defineSymbol(symbols_math, main, symbols_textord, "\xB0", "\\degree", true);
4650
4696
  defineSymbol(symbols_text, main, symbols_textord, "\xB0", "\\degree"); // \textdegree from inputenc package
4651
4697
 
4652
4698
  defineSymbol(symbols_text, main, symbols_textord, "\xB0", "\\textdegree", true); // TODO: In LaTeX, \pounds can generate a different character in text and math
4653
- // mode, but among our fonts, only Main-Regular defines this character "163".
4699
+ // mode, but among our fonts, only Main-Italic defines this character "163".
4654
4700
 
4655
- defineSymbol(symbols_math, main, symbols_textord, "\xA3", "\\pounds");
4656
- defineSymbol(symbols_math, main, symbols_textord, "\xA3", "\\mathsterling", true);
4657
- defineSymbol(symbols_text, main, symbols_textord, "\xA3", "\\pounds");
4658
- defineSymbol(symbols_text, main, symbols_textord, "\xA3", "\\textsterling", true);
4701
+ defineSymbol(symbols_math, main, mathord, "\xA3", "\\pounds");
4702
+ defineSymbol(symbols_math, main, mathord, "\xA3", "\\mathsterling", true);
4703
+ defineSymbol(symbols_text, main, mathord, "\xA3", "\\pounds");
4704
+ defineSymbol(symbols_text, main, mathord, "\xA3", "\\textsterling", true);
4659
4705
  defineSymbol(symbols_math, ams, symbols_textord, "\u2720", "\\maltese");
4660
- defineSymbol(symbols_text, ams, symbols_textord, "\u2720", "\\maltese"); // There are lots of symbols which are the same, so we add them in afterwards.
4706
+ defineSymbol(symbols_text, ams, symbols_textord, "\u2720", "\\maltese");
4707
+ defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "\\ ");
4708
+ defineSymbol(symbols_text, main, symbols_spacing, "\xA0", " ");
4709
+ defineSymbol(symbols_text, main, symbols_spacing, "\xA0", "~"); // There are lots of symbols which are the same, so we add them in afterwards.
4661
4710
  // All of these are textords in math mode
4662
4711
 
4663
4712
  var mathTextSymbols = "0123456789/@.\"";
@@ -4668,7 +4717,7 @@ for (var symbols_i = 0; symbols_i < mathTextSymbols.length; symbols_i++) {
4668
4717
  } // All of these are textords in text mode
4669
4718
 
4670
4719
 
4671
- var textSymbols = "0123456789!@*()-=+\";:?/.,";
4720
+ var textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,";
4672
4721
 
4673
4722
  for (var src_symbols_i = 0; src_symbols_i < textSymbols.length; src_symbols_i++) {
4674
4723
  var _ch = textSymbols.charAt(src_symbols_i);
@@ -4797,7 +4846,7 @@ for (var symbols_i4 = 0; symbols_i4 < 10; symbols_i4++) {
4797
4846
  // TODO(edemaine): Fix this.
4798
4847
 
4799
4848
 
4800
- var extraLatin = "\xC7\xD0\xDE\xE7\xFE";
4849
+ var extraLatin = "ÇÐÞçþ";
4801
4850
 
4802
4851
  for (var _i5 = 0; _i5 < extraLatin.length; _i5++) {
4803
4852
  var _ch5 = extraLatin.charAt(_i5);
@@ -4805,6 +4854,15 @@ for (var _i5 = 0; _i5 < extraLatin.length; _i5++) {
4805
4854
  defineSymbol(symbols_math, main, mathord, _ch5, _ch5);
4806
4855
  defineSymbol(symbols_text, main, symbols_textord, _ch5, _ch5);
4807
4856
  }
4857
+
4858
+ defineSymbol(symbols_text, main, symbols_textord, "ð", "ð"); // Unicode versions of existing characters
4859
+
4860
+ defineSymbol(symbols_text, main, symbols_textord, "\u2013", "–");
4861
+ defineSymbol(symbols_text, main, symbols_textord, "\u2014", "—");
4862
+ defineSymbol(symbols_text, main, symbols_textord, "\u2018", "‘");
4863
+ defineSymbol(symbols_text, main, symbols_textord, "\u2019", "’");
4864
+ defineSymbol(symbols_text, main, symbols_textord, "\u201C", "“");
4865
+ defineSymbol(symbols_text, main, symbols_textord, "\u201D", "”");
4808
4866
  // CONCATENATED MODULE: ./src/wide-character.js
4809
4867
  /**
4810
4868
  * This file provides support for Unicode range U+1D400 to U+1D7FF,
@@ -4826,8 +4884,8 @@ for (var _i5 = 0; _i5 < extraLatin.length; _i5++) {
4826
4884
 
4827
4885
  var wideLatinLetterData = [["mathbf", "textbf", "Main-Bold"], // A-Z bold upright
4828
4886
  ["mathbf", "textbf", "Main-Bold"], // a-z bold upright
4829
- ["mathnormal", "textit", "Math-Italic"], // A-Z italic
4830
- ["mathnormal", "textit", "Math-Italic"], // a-z italic
4887
+ ["mathdefault", "textit", "Math-Italic"], // A-Z italic
4888
+ ["mathdefault", "textit", "Math-Italic"], // a-z italic
4831
4889
  ["boldsymbol", "boldsymbol", "Main-BoldItalic"], // A-Z bold italic
4832
4890
  ["boldsymbol", "boldsymbol", "Main-BoldItalic"], // a-z bold italic
4833
4891
  // Map fancy A-Z letters to script, not calligraphic.
@@ -5330,10 +5388,15 @@ var units_calculateSize = function calculateSize(sizeValue, options) {
5330
5388
 
5331
5389
 
5332
5390
 
5391
+ // The following have to be loaded from Main-Italic font, using class mathit
5392
+ var mathitLetters = ["\\imath", "ı", // dotless i
5393
+ "\\jmath", "ȷ", // dotless j
5394
+ "\\pounds", "\\mathsterling", "\\textsterling", "£"];
5333
5395
  /**
5334
5396
  * Looks up the given symbol in fontMetrics, after applying any symbol
5335
5397
  * replacements defined in symbol.js
5336
5398
  */
5399
+
5337
5400
  var buildCommon_lookupSymbol = function lookupSymbol(value, // TODO(#963): Use a union type for this.
5338
5401
  fontName, mode) {
5339
5402
  // Replace the value with its replaced value from symbol.js
@@ -5420,6 +5483,54 @@ var buildCommon_mathsym = function mathsym(value, mode, options, classes) {
5420
5483
  return buildCommon_makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"]));
5421
5484
  }
5422
5485
  };
5486
+ /**
5487
+ * Determines which of the two font names (Main-Italic and Math-Italic) and
5488
+ * corresponding style tags (maindefault or mathit) to use for default math font,
5489
+ * depending on the symbol.
5490
+ */
5491
+
5492
+
5493
+ var buildCommon_mathdefault = function mathdefault(value, mode, options, classes) {
5494
+ if (/[0-9]/.test(value.charAt(0)) || // glyphs for \imath and \jmath do not exist in Math-Italic so we
5495
+ // need to use Main-Italic instead
5496
+ utils.contains(mathitLetters, value)) {
5497
+ return {
5498
+ fontName: "Main-Italic",
5499
+ fontClass: "mathit"
5500
+ };
5501
+ } else {
5502
+ return {
5503
+ fontName: "Math-Italic",
5504
+ fontClass: "mathdefault"
5505
+ };
5506
+ }
5507
+ };
5508
+ /**
5509
+ * Determines which of the font names (Main-Italic, Math-Italic, and Caligraphic)
5510
+ * and corresponding style tags (mathit, mathdefault, or mathcal) to use for font
5511
+ * "mathnormal", depending on the symbol. Use this function instead of fontMap for
5512
+ * font "mathnormal".
5513
+ */
5514
+
5515
+
5516
+ var buildCommon_mathnormal = function mathnormal(value, mode, options, classes) {
5517
+ if (utils.contains(mathitLetters, value)) {
5518
+ return {
5519
+ fontName: "Main-Italic",
5520
+ fontClass: "mathit"
5521
+ };
5522
+ } else if (/[0-9]/.test(value.charAt(0))) {
5523
+ return {
5524
+ fontName: "Caligraphic-Regular",
5525
+ fontClass: "mathcal"
5526
+ };
5527
+ } else {
5528
+ return {
5529
+ fontName: "Math-Italic",
5530
+ fontClass: "mathdefault"
5531
+ };
5532
+ }
5533
+ };
5423
5534
  /**
5424
5535
  * Determines which of the two font names (Main-Bold and Math-BoldItalic) and
5425
5536
  * corresponding style tags (mathbf or boldsymbol) to use for font "boldsymbol",
@@ -5428,8 +5539,8 @@ var buildCommon_mathsym = function mathsym(value, mode, options, classes) {
5428
5539
  */
5429
5540
 
5430
5541
 
5431
- var boldsymbol = function boldsymbol(value, mode, options, classes, type) {
5432
- if (type !== "textord" && buildCommon_lookupSymbol(value, "Math-BoldItalic", mode).metrics) {
5542
+ var boldsymbol = function boldsymbol(value, mode, options, classes) {
5543
+ if (buildCommon_lookupSymbol(value, "Math-BoldItalic", mode).metrics) {
5433
5544
  return {
5434
5545
  fontName: "Math-BoldItalic",
5435
5546
  fontClass: "boldsymbol"
@@ -5467,10 +5578,13 @@ var buildCommon_makeOrd = function makeOrd(group, options, type) {
5467
5578
  var fontName;
5468
5579
  var fontClasses;
5469
5580
 
5470
- if (fontOrFamily === "boldsymbol") {
5471
- var fontData = boldsymbol(text, mode, options, classes, type);
5581
+ if (fontOrFamily === "boldsymbol" || fontOrFamily === "mathnormal") {
5582
+ var fontData = fontOrFamily === "boldsymbol" ? boldsymbol(text, mode, options, classes) : buildCommon_mathnormal(text, mode, options, classes);
5472
5583
  fontName = fontData.fontName;
5473
5584
  fontClasses = [fontData.fontClass];
5585
+ } else if (utils.contains(mathitLetters, text)) {
5586
+ fontName = "Main-Italic";
5587
+ fontClasses = ["mathit"];
5474
5588
  } else if (isFont) {
5475
5589
  fontName = fontMap[fontOrFamily].fontName;
5476
5590
  fontClasses = [fontOrFamily];
@@ -5495,7 +5609,8 @@ var buildCommon_makeOrd = function makeOrd(group, options, type) {
5495
5609
 
5496
5610
 
5497
5611
  if (type === "mathord") {
5498
- return buildCommon_makeSymbol(text, "Math-Italic", mode, options, classes.concat(["mathnormal"]));
5612
+ var fontLookup = buildCommon_mathdefault(text, mode, options, classes);
5613
+ return buildCommon_makeSymbol(text, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass]));
5499
5614
  } else if (type === "textord") {
5500
5615
  var font = src_symbols[mode][text] && src_symbols[mode][text].font;
5501
5616
 
@@ -5913,13 +6028,12 @@ var fontMap = {
5913
6028
  variant: "italic",
5914
6029
  fontName: "Main-Italic"
5915
6030
  },
5916
- "mathnormal": {
5917
- variant: "italic",
5918
- fontName: "Math-Italic"
5919
- },
5920
- // "boldsymbol" is missing because they require the use of multiple fonts:
5921
- // Math-BoldItalic and Main-Bold. This is handled by a special case in
5922
- // makeOrd which ends up calling boldsymbol.
6031
+ // Default math font, "mathnormal" and "boldsymbol" are missing because they
6032
+ // require the use of several fonts: Main-Italic and Math-Italic for default
6033
+ // math font, Main-Italic, Math-Italic, Caligraphic for "mathnormal", and
6034
+ // Math-BoldItalic and Main-Bold for "boldsymbol". This is handled by a
6035
+ // special case in makeOrd which ends up calling mathdefault, mathnormal,
6036
+ // and boldsymbol.
5923
6037
  // families
5924
6038
  "mathbb": {
5925
6039
  variant: "double-struck",
@@ -5954,9 +6068,7 @@ var svgData = {
5954
6068
  // oval to overlay the integrand
5955
6069
  oiintSize2: ["oiintSize2", 1.472, 0.659],
5956
6070
  oiiintSize1: ["oiiintSize1", 1.304, 0.499],
5957
- oiiintSize2: ["oiiintSize2", 1.98, 0.659],
5958
- leftParenInner: ["leftParenInner", 0.875, 0.3],
5959
- rightParenInner: ["rightParenInner", 0.875, 0.3]
6071
+ oiiintSize2: ["oiiintSize2", 1.98, 0.659]
5960
6072
  };
5961
6073
 
5962
6074
  var buildCommon_staticSvg = function staticSvg(value, options) {
@@ -5998,6 +6110,88 @@ var buildCommon_staticSvg = function staticSvg(value, options) {
5998
6110
  svgData: svgData,
5999
6111
  tryCombineChars: buildCommon_tryCombineChars
6000
6112
  });
6113
+ // CONCATENATED MODULE: ./src/parseNode.js
6114
+
6115
+
6116
+ /**
6117
+ * Asserts that the node is of the given type and returns it with stricter
6118
+ * typing. Throws if the node's type does not match.
6119
+ */
6120
+ function assertNodeType(node, type) {
6121
+ var typedNode = checkNodeType(node, type);
6122
+
6123
+ if (!typedNode) {
6124
+ throw new Error("Expected node of type " + type + ", but got " + (node ? "node of type " + node.type : String(node)));
6125
+ } // $FlowFixMe: Unsure why.
6126
+
6127
+
6128
+ return typedNode;
6129
+ }
6130
+ /**
6131
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
6132
+ * returns null.
6133
+ */
6134
+
6135
+ function checkNodeType(node, type) {
6136
+ if (node && node.type === type) {
6137
+ // The definition of ParseNode<TYPE> doesn't communicate to flow that
6138
+ // `type: TYPE` (as that's not explicitly mentioned anywhere), though that
6139
+ // happens to be true for all our value types.
6140
+ // $FlowFixMe
6141
+ return node;
6142
+ }
6143
+
6144
+ return null;
6145
+ }
6146
+ /**
6147
+ * Asserts that the node is of the given type and returns it with stricter
6148
+ * typing. Throws if the node's type does not match.
6149
+ */
6150
+
6151
+ function assertAtomFamily(node, family) {
6152
+ var typedNode = checkAtomFamily(node, family);
6153
+
6154
+ if (!typedNode) {
6155
+ throw new Error("Expected node of type \"atom\" and family \"" + family + "\", but got " + (node ? node.type === "atom" ? "atom of family " + node.family : "node of type " + node.type : String(node)));
6156
+ }
6157
+
6158
+ return typedNode;
6159
+ }
6160
+ /**
6161
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
6162
+ * returns null.
6163
+ */
6164
+
6165
+ function checkAtomFamily(node, family) {
6166
+ return node && node.type === "atom" && node.family === family ? node : null;
6167
+ }
6168
+ /**
6169
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
6170
+ * returns null.
6171
+ */
6172
+
6173
+ function assertSymbolNodeType(node) {
6174
+ var typedNode = checkSymbolNodeType(node);
6175
+
6176
+ if (!typedNode) {
6177
+ throw new Error("Expected node of symbol group type, but got " + (node ? "node of type " + node.type : String(node)));
6178
+ }
6179
+
6180
+ return typedNode;
6181
+ }
6182
+ /**
6183
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
6184
+ * returns null.
6185
+ */
6186
+
6187
+ function checkSymbolNodeType(node) {
6188
+ if (node && (node.type === "atom" || NON_ATOMS.hasOwnProperty(node.type))) {
6189
+ // $FlowFixMe
6190
+ return node;
6191
+ }
6192
+
6193
+ return null;
6194
+ }
6001
6195
  // CONCATENATED MODULE: ./src/spacingData.js
6002
6196
  /**
6003
6197
  * Describes spaces between different classes of atoms.
@@ -6092,20 +6286,7 @@ var tightSpacings = {
6092
6286
  }
6093
6287
  };
6094
6288
  // CONCATENATED MODULE: ./src/defineFunction.js
6095
- /** Context provided to function handlers for error messages. */
6096
- // Note: reverse the order of the return type union will cause a flow error.
6097
- // See https://github.com/facebook/flow/issues/3663.
6098
- // More general version of `HtmlBuilder` for nodes (e.g. \sum, accent types)
6099
- // whose presence impacts super/subscripting. In this case, ParseNode<"supsub">
6100
- // delegates its HTML building to the HtmlBuilder corresponding to these nodes.
6101
6289
 
6102
- /**
6103
- * Final function spec for use at parse time.
6104
- * This is almost identical to `FunctionPropSpec`, except it
6105
- * 1. includes the function handler, and
6106
- * 2. requires all arguments except argTypes.
6107
- * It is generated by `defineFunction()` below.
6108
- */
6109
6290
 
6110
6291
  /**
6111
6292
  * All registered functions.
@@ -6184,8 +6365,9 @@ function defineFunctionBuilders(_ref2) {
6184
6365
  } // Since the corresponding buildHTML/buildMathML function expects a
6185
6366
  // list of elements, we normalize for different kinds of arguments
6186
6367
 
6187
- var ordargument = function ordargument(arg) {
6188
- return arg.type === "ordgroup" ? arg.body : [arg];
6368
+ var defineFunction_ordargument = function ordargument(arg) {
6369
+ var node = checkNodeType(arg, "ordgroup");
6370
+ return node ? node.body : [arg];
6189
6371
  };
6190
6372
  // CONCATENATED MODULE: ./src/buildHTML.js
6191
6373
  /**
@@ -6202,6 +6384,7 @@ var ordargument = function ordargument(arg) {
6202
6384
 
6203
6385
 
6204
6386
 
6387
+
6205
6388
  var buildHTML_makeSpan = buildCommon.makeSpan; // Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)
6206
6389
  // depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
6207
6390
  // and the text before Rule 19.
@@ -6261,9 +6444,10 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
6261
6444
  var glueOptions = options;
6262
6445
 
6263
6446
  if (expression.length === 1) {
6264
- var node = expression[0];
6447
+ var node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
6265
6448
 
6266
- if (node.type === "sizing") {
6449
+ if (!node) {// No match.
6450
+ } else if (node.type === "sizing") {
6267
6451
  glueOptions = options.havingSize(node.size);
6268
6452
  } else if (node.type === "styling") {
6269
6453
  glueOptions = options.havingStyle(styleMap[node.style]);
@@ -6280,7 +6464,6 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
6280
6464
  // Before determining what spaces to insert, perform bin cancellation.
6281
6465
  // Binary operators change to ordinary symbols in some contexts.
6282
6466
 
6283
- var isRoot = isRealGroup === "root";
6284
6467
  traverseNonSpaceNodes(groups, function (node, prev) {
6285
6468
  var prevType = prev.classes[0];
6286
6469
  var type = node.classes[0];
@@ -6292,7 +6475,7 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
6292
6475
  }
6293
6476
  }, {
6294
6477
  node: dummyPrev
6295
- }, dummyNext, isRoot);
6478
+ }, dummyNext);
6296
6479
  traverseNonSpaceNodes(groups, function (node, prev) {
6297
6480
  var prevType = getTypeOfDomTree(prev);
6298
6481
  var type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.
@@ -6305,7 +6488,7 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
6305
6488
  }
6306
6489
  }, {
6307
6490
  node: dummyPrev
6308
- }, dummyNext, isRoot);
6491
+ }, dummyNext);
6309
6492
  return groups;
6310
6493
  }; // Depth-first traverse non-space `nodes`, calling `callback` with the current and
6311
6494
  // previous node as arguments, optionally returning a node to insert after the
@@ -6313,7 +6496,7 @@ var buildHTML_buildExpression = function buildExpression(expression, options, is
6313
6496
  // function to insert after it. `next` is a node that will be added to the right.
6314
6497
  // Used for bin cancellation and inserting spacings.
6315
6498
 
6316
- var traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next, isRoot) {
6499
+ var traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) {
6317
6500
  if (next) {
6318
6501
  // temporarily append the right node, if exists
6319
6502
  nodes.push(next);
@@ -6328,33 +6511,29 @@ var traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev
6328
6511
  if (partialGroup) {
6329
6512
  // Recursive DFS
6330
6513
  // $FlowFixMe: make nodes a $ReadOnlyArray by returning a new array
6331
- traverseNonSpaceNodes(partialGroup.children, callback, prev, null, isRoot);
6514
+ traverseNonSpaceNodes(partialGroup.children, callback, prev);
6332
6515
  continue;
6333
6516
  } // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
6334
6517
  // spacing should go between atoms of different classes
6335
6518
 
6336
6519
 
6337
- var nonspace = !node.hasClass("mspace");
6520
+ if (node.classes[0] === "mspace") {
6521
+ continue;
6522
+ }
6338
6523
 
6339
- if (nonspace) {
6340
- var result = callback(node, prev.node);
6524
+ var result = callback(node, prev.node);
6341
6525
 
6342
- if (result) {
6343
- if (prev.insertAfter) {
6344
- prev.insertAfter(result);
6345
- } else {
6346
- // insert at front
6347
- nodes.unshift(result);
6348
- i++;
6349
- }
6526
+ if (result) {
6527
+ if (prev.insertAfter) {
6528
+ prev.insertAfter(result);
6529
+ } else {
6530
+ // insert at front
6531
+ nodes.unshift(result);
6532
+ i++;
6350
6533
  }
6351
6534
  }
6352
6535
 
6353
- if (nonspace) {
6354
- prev.node = node;
6355
- } else if (isRoot && node.hasClass("newline")) {
6356
- prev.node = buildHTML_makeSpan(["leftmost"]); // treat like beginning of line
6357
- }
6536
+ prev.node = node;
6358
6537
 
6359
6538
  prev.insertAfter = function (index) {
6360
6539
  return function (n) {
@@ -6371,7 +6550,7 @@ var traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev
6371
6550
 
6372
6551
 
6373
6552
  var buildHTML_checkPartialGroup = function checkPartialGroup(node) {
6374
- if (node instanceof tree_DocumentFragment || node instanceof domTree_Anchor || node instanceof domTree_Span && node.hasClass("enclosing")) {
6553
+ if (node instanceof tree_DocumentFragment || node instanceof domTree_Anchor) {
6375
6554
  return node;
6376
6555
  }
6377
6556
 
@@ -6456,6 +6635,10 @@ function buildHTMLUnbreakable(children, options) {
6456
6635
  var body = buildHTML_makeSpan(["base"], children, options); // Add strut, which ensures that the top of the HTML element falls at
6457
6636
  // the height of the expression, and the bottom of the HTML element
6458
6637
  // falls at the depth of the expression.
6638
+ // We used to have separate top and bottom struts, where the bottom strut
6639
+ // would like to use `vertical-align: top`, but in IE 9 this lowers the
6640
+ // baseline of the box to the bottom of this strut (instead of staying in
6641
+ // the normal place) so we use an absolute value for vertical-align instead.
6459
6642
 
6460
6643
  var strut = buildHTML_makeSpan(["strut"]);
6461
6644
  strut.style.height = body.height + body.depth + "em";
@@ -6479,7 +6662,7 @@ function buildHTML(tree, options) {
6479
6662
  } // Build the expression contained in the tree
6480
6663
 
6481
6664
 
6482
- var expression = buildHTML_buildExpression(tree, options, "root");
6665
+ var expression = buildHTML_buildExpression(tree, options, true);
6483
6666
  var children = []; // Create one base node for each chunk between potential line breaks.
6484
6667
  // The TeXBook [p.173] says "A formula will be broken only after a
6485
6668
  // relation symbol like $=$ or $<$ or $\rightarrow$, or after a binary
@@ -6867,7 +7050,7 @@ var buildMathML_getVariant = function getVariant(group, options) {
6867
7050
  if (font === "mathit") {
6868
7051
  return "italic";
6869
7052
  } else if (font === "boldsymbol") {
6870
- return group.type === "textord" ? "bold" : "bold-italic";
7053
+ return "bold-italic";
6871
7054
  } else if (font === "mathbf") {
6872
7055
  return "bold";
6873
7056
  } else if (font === "mathbb") {
@@ -7007,7 +7190,7 @@ var buildMathML_buildGroup = function buildGroup(group, options) {
7007
7190
  * we can do appropriate styling.
7008
7191
  */
7009
7192
 
7010
- function buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) {
7193
+ function buildMathML(tree, texExpression, options, forMathmlOnly) {
7011
7194
  var expression = buildMathML_buildExpression(tree, options); // Wrap up the expression in an mrow so it is presented in the semantics
7012
7195
  // tag correctly, unless it's a single <mrow> or <mtable>.
7013
7196
 
@@ -7024,16 +7207,11 @@ function buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly)
7024
7207
  annotation.setAttribute("encoding", "application/x-tex");
7025
7208
  var semantics = new mathMLTree.MathNode("semantics", [wrapper, annotation]);
7026
7209
  var math = new mathMLTree.MathNode("math", [semantics]);
7027
- math.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML");
7028
-
7029
- if (isDisplayMode) {
7030
- math.setAttribute("display", "block");
7031
- } // You can't style <math> nodes, so we wrap the node in a span.
7210
+ math.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"); // You can't style <math> nodes, so we wrap the node in a span.
7032
7211
  // NOTE: The span class is not typed to have <math> nodes as children, and
7033
7212
  // we don't want to make the children type more generic since the children
7034
7213
  // of span are expected to have more fields in `buildHtml` contexts.
7035
7214
 
7036
-
7037
7215
  var wrapperClass = forMathmlOnly ? "katex" : "katex-mathml"; // $FlowFixMe
7038
7216
 
7039
7217
  return buildCommon.makeSpan([wrapperClass], [math]);
@@ -7077,12 +7255,12 @@ var buildTree_buildTree = function buildTree(tree, expression, settings) {
7077
7255
  var katexNode;
7078
7256
 
7079
7257
  if (settings.output === "mathml") {
7080
- return buildMathML(tree, expression, options, settings.displayMode, true);
7258
+ return buildMathML(tree, expression, options, true);
7081
7259
  } else if (settings.output === "html") {
7082
7260
  var htmlNode = buildHTML(tree, options);
7083
7261
  katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
7084
7262
  } else {
7085
- var mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false);
7263
+ var mathMLNode = buildMathML(tree, expression, options, false);
7086
7264
 
7087
7265
  var _htmlNode = buildHTML(tree, options);
7088
7266
 
@@ -7442,47 +7620,6 @@ var stretchy_encloseSpan = function encloseSpan(inner, label, pad, options) {
7442
7620
  mathMLnode: stretchy_mathMLnode,
7443
7621
  svgSpan: stretchy_svgSpan
7444
7622
  });
7445
- // CONCATENATED MODULE: ./src/parseNode.js
7446
-
7447
-
7448
- /**
7449
- * Asserts that the node is of the given type and returns it with stricter
7450
- * typing. Throws if the node's type does not match.
7451
- */
7452
- function assertNodeType(node, type) {
7453
- if (!node || node.type !== type) {
7454
- throw new Error("Expected node of type " + type + ", but got " + (node ? "node of type " + node.type : String(node)));
7455
- }
7456
-
7457
- return node;
7458
- }
7459
- /**
7460
- * Returns the node more strictly typed iff it is of the given type. Otherwise,
7461
- * returns null.
7462
- */
7463
-
7464
- function assertSymbolNodeType(node) {
7465
- var typedNode = checkSymbolNodeType(node);
7466
-
7467
- if (!typedNode) {
7468
- throw new Error("Expected node of symbol group type, but got " + (node ? "node of type " + node.type : String(node)));
7469
- }
7470
-
7471
- return typedNode;
7472
- }
7473
- /**
7474
- * Returns the node more strictly typed iff it is of the given type. Otherwise,
7475
- * returns null.
7476
- */
7477
-
7478
- function checkSymbolNodeType(node) {
7479
- if (node && (node.type === "atom" || NON_ATOMS.hasOwnProperty(node.type))) {
7480
- // $FlowFixMe
7481
- return node;
7482
- }
7483
-
7484
- return null;
7485
- }
7486
7623
  // CONCATENATED MODULE: ./src/functions/accent.js
7487
7624
 
7488
7625
 
@@ -7498,9 +7635,10 @@ var accent_htmlBuilder = function htmlBuilder(grp, options) {
7498
7635
  // Accents are handled in the TeXbook pg. 443, rule 12.
7499
7636
  var base;
7500
7637
  var group;
7638
+ var supSub = checkNodeType(grp, "supsub");
7501
7639
  var supSubGroup;
7502
7640
 
7503
- if (grp && grp.type === "supsub") {
7641
+ if (supSub) {
7504
7642
  // If our base is a character box, and we have superscripts and
7505
7643
  // subscripts, the supsub will defer to us. In particular, we want
7506
7644
  // to attach the superscripts and subscripts to the inner body (so
@@ -7509,16 +7647,16 @@ var accent_htmlBuilder = function htmlBuilder(grp, options) {
7509
7647
  // sticking the base of the accent into the base of the supsub, and
7510
7648
  // rendering that, while keeping track of where the accent is.
7511
7649
  // The real accent group is the base of the supsub group
7512
- group = assertNodeType(grp.base, "accent"); // The character box is the base of the accent group
7650
+ group = assertNodeType(supSub.base, "accent"); // The character box is the base of the accent group
7513
7651
 
7514
7652
  base = group.base; // Stick the character box into the base of the supsub group
7515
7653
 
7516
- grp.base = base; // Rerender the supsub group with its new base, and store that
7654
+ supSub.base = base; // Rerender the supsub group with its new base, and store that
7517
7655
  // result.
7518
7656
 
7519
- supSubGroup = assertSpan(buildHTML_buildGroup(grp, options)); // reset original base
7657
+ supSubGroup = assertSpan(buildHTML_buildGroup(supSub, options)); // reset original base
7520
7658
 
7521
- grp.base = group;
7659
+ supSub.base = group;
7522
7660
  } else {
7523
7661
  group = assertNodeType(grp, "accent");
7524
7662
  base = group.base;
@@ -7742,8 +7880,8 @@ defineFunction({
7742
7880
  var kern = group.label === "\\utilde" ? 0.12 : 0; // Generate the vlist, with the appropriate kerns
7743
7881
 
7744
7882
  var vlist = buildCommon.makeVList({
7745
- positionType: "top",
7746
- positionData: innerGroup.height,
7883
+ positionType: "bottom",
7884
+ positionData: accentBody.height + kern,
7747
7885
  children: [{
7748
7886
  type: "elem",
7749
7887
  elem: accentBody,
@@ -7979,7 +8117,7 @@ defineFunction({
7979
8117
  type: "color",
7980
8118
  mode: parser.mode,
7981
8119
  color: color,
7982
- body: ordargument(body)
8120
+ body: defineFunction_ordargument(body)
7983
8121
  };
7984
8122
  },
7985
8123
  htmlBuilder: color_htmlBuilder,
@@ -8081,212 +8219,15 @@ defineFunction({
8081
8219
  mathmlBuilder: function mathmlBuilder(group, options) {
8082
8220
  var node = new mathMLTree.MathNode("mspace");
8083
8221
 
8084
- if (group.newLine) {
8085
- node.setAttribute("linebreak", "newline");
8086
-
8087
- if (group.size) {
8088
- node.setAttribute("height", units_calculateSize(group.size, options) + "em");
8089
- }
8090
- }
8091
-
8092
- return node;
8093
- }
8094
- });
8095
- // CONCATENATED MODULE: ./src/functions/def.js
8096
-
8097
-
8098
-
8099
- var globalMap = {
8100
- "\\global": "\\global",
8101
- "\\long": "\\\\globallong",
8102
- "\\\\globallong": "\\\\globallong",
8103
- "\\def": "\\gdef",
8104
- "\\gdef": "\\gdef",
8105
- "\\edef": "\\xdef",
8106
- "\\xdef": "\\xdef",
8107
- "\\let": "\\\\globallet",
8108
- "\\futurelet": "\\\\globalfuture"
8109
- };
8110
-
8111
- var def_checkControlSequence = function checkControlSequence(tok) {
8112
- var name = tok.text;
8113
-
8114
- if (/^(?:[\\{}$&#^_]|EOF)$/.test(name)) {
8115
- throw new src_ParseError("Expected a control sequence", tok);
8116
- }
8117
-
8118
- return name;
8119
- };
8120
-
8121
- var getRHS = function getRHS(parser) {
8122
- var tok = parser.gullet.popToken();
8123
-
8124
- if (tok.text === "=") {
8125
- // consume optional equals
8126
- tok = parser.gullet.popToken();
8127
-
8128
- if (tok.text === " ") {
8129
- // consume one optional space
8130
- tok = parser.gullet.popToken();
8131
- }
8132
- }
8133
-
8134
- return tok;
8135
- };
8136
-
8137
- var letCommand = function letCommand(parser, name, tok, global) {
8138
- var macro = parser.gullet.macros.get(tok.text);
8139
-
8140
- if (macro == null) {
8141
- // don't expand it later even if a macro with the same name is defined
8142
- // e.g., \let\foo=\frac \def\frac{\relax} \frac12
8143
- tok.noexpand = true;
8144
- macro = {
8145
- tokens: [tok],
8146
- numArgs: 0,
8147
- // reproduce the same behavior in expansion
8148
- unexpandable: !parser.gullet.isExpandable(tok.text)
8149
- };
8150
- }
8151
-
8152
- parser.gullet.macros.set(name, macro, global);
8153
- }; // <assignment> -> <non-macro assignment>|<macro assignment>
8154
- // <non-macro assignment> -> <simple assignment>|\global<non-macro assignment>
8155
- // <macro assignment> -> <definition>|<prefix><macro assignment>
8156
- // <prefix> -> \global|\long|\outer
8157
-
8158
-
8159
- defineFunction({
8160
- type: "internal",
8161
- names: ["\\global", "\\long", "\\\\globallong"],
8162
- props: {
8163
- numArgs: 0,
8164
- allowedInText: true
8165
- },
8166
- handler: function handler(_ref) {
8167
- var parser = _ref.parser,
8168
- funcName = _ref.funcName;
8169
- parser.consumeSpaces();
8170
- var token = parser.fetch();
8171
-
8172
- if (globalMap[token.text]) {
8173
- // KaTeX doesn't have \par, so ignore \long
8174
- if (funcName === "\\global" || funcName === "\\\\globallong") {
8175
- token.text = globalMap[token.text];
8176
- }
8177
-
8178
- return assertNodeType(parser.parseFunction(), "internal");
8179
- }
8180
-
8181
- throw new src_ParseError("Invalid token after macro prefix", token);
8182
- }
8183
- }); // Basic support for macro definitions: \def, \gdef, \edef, \xdef
8184
- // <definition> -> <def><control sequence><definition text>
8185
- // <def> -> \def|\gdef|\edef|\xdef
8186
- // <definition text> -> <parameter text><left brace><balanced text><right brace>
8187
-
8188
- defineFunction({
8189
- type: "internal",
8190
- names: ["\\def", "\\gdef", "\\edef", "\\xdef"],
8191
- props: {
8192
- numArgs: 0,
8193
- allowedInText: true
8194
- },
8195
- handler: function handler(_ref2) {
8196
- var parser = _ref2.parser,
8197
- funcName = _ref2.funcName;
8198
- var arg = parser.gullet.consumeArgs(1)[0];
8199
-
8200
- if (arg.length !== 1) {
8201
- throw new src_ParseError("\\gdef's first argument must be a macro name");
8202
- }
8203
-
8204
- var name = arg[0].text; // Count argument specifiers, and check they are in the order #1 #2 ...
8205
-
8206
- var numArgs = 0;
8207
- arg = parser.gullet.consumeArgs(1)[0];
8208
-
8209
- while (arg.length === 1 && arg[0].text === "#") {
8210
- arg = parser.gullet.consumeArgs(1)[0];
8211
-
8212
- if (arg.length !== 1) {
8213
- throw new src_ParseError("Invalid argument number length \"" + arg.length + "\"");
8214
- }
8215
-
8216
- if (!/^[1-9]$/.test(arg[0].text)) {
8217
- throw new src_ParseError("Invalid argument number \"" + arg[0].text + "\"");
8218
- }
8219
-
8220
- numArgs++;
8222
+ if (group.newLine) {
8223
+ node.setAttribute("linebreak", "newline");
8221
8224
 
8222
- if (parseInt(arg[0].text) !== numArgs) {
8223
- throw new src_ParseError("Argument number \"" + arg[0].text + "\" out of order");
8225
+ if (group.size) {
8226
+ node.setAttribute("height", units_calculateSize(group.size, options) + "em");
8224
8227
  }
8225
-
8226
- arg = parser.gullet.consumeArgs(1)[0];
8227
8228
  }
8228
8229
 
8229
- if (funcName === "\\edef" || funcName === "\\xdef") {
8230
- arg = parser.gullet.expandTokens(arg);
8231
- arg.reverse(); // to fit in with stack order
8232
- } // Final arg is the expansion of the macro
8233
-
8234
-
8235
- parser.gullet.macros.set(name, {
8236
- tokens: arg,
8237
- numArgs: numArgs
8238
- }, funcName === globalMap[funcName]);
8239
- return {
8240
- type: "internal",
8241
- mode: parser.mode
8242
- };
8243
- }
8244
- }); // <simple assignment> -> <let assignment>
8245
- // <let assignment> -> \futurelet<control sequence><token><token>
8246
- // | \let<control sequence><equals><one optional space><token>
8247
- // <equals> -> <optional spaces>|<optional spaces>=
8248
-
8249
- defineFunction({
8250
- type: "internal",
8251
- names: ["\\let", "\\\\globallet"],
8252
- props: {
8253
- numArgs: 0,
8254
- allowedInText: true
8255
- },
8256
- handler: function handler(_ref3) {
8257
- var parser = _ref3.parser,
8258
- funcName = _ref3.funcName;
8259
- var name = def_checkControlSequence(parser.gullet.popToken());
8260
- parser.gullet.consumeSpaces();
8261
- var tok = getRHS(parser);
8262
- letCommand(parser, name, tok, funcName === "\\\\globallet");
8263
- return {
8264
- type: "internal",
8265
- mode: parser.mode
8266
- };
8267
- }
8268
- }); // ref: https://www.tug.org/TUGboat/tb09-3/tb22bechtolsheim.pdf
8269
-
8270
- defineFunction({
8271
- type: "internal",
8272
- names: ["\\futurelet", "\\\\globalfuture"],
8273
- props: {
8274
- numArgs: 0,
8275
- allowedInText: true
8276
- },
8277
- handler: function handler(_ref4) {
8278
- var parser = _ref4.parser,
8279
- funcName = _ref4.funcName;
8280
- var name = def_checkControlSequence(parser.gullet.popToken());
8281
- var middle = parser.gullet.popToken();
8282
- var tok = parser.gullet.popToken();
8283
- letCommand(parser, name, tok, funcName === "\\\\globalfuture");
8284
- parser.gullet.pushToken(tok);
8285
- parser.gullet.pushToken(middle);
8286
- return {
8287
- type: "internal",
8288
- mode: parser.mode
8289
- };
8230
+ return node;
8290
8231
  }
8291
8232
  });
8292
8233
  // CONCATENATED MODULE: ./src/delimiter.js
@@ -8617,33 +8558,12 @@ var delimiter_makeStackedDelim = function makeStackedDelim(delim, heightTotal, c
8617
8558
  // at a position that juts 0.005 above the bottom of the top element.
8618
8559
 
8619
8560
 
8620
- if ((repeat === "\u239C" || repeat === "\u239F") && repeatCount === 0) {
8621
- // Parentheses need a short repeat element in order to avoid an overrun.
8622
- // We'll make a 0.3em tall element from a SVG.
8623
- var overlap = buildCommon.svgData.leftParenInner[2] / 2;
8624
- inners.push({
8625
- type: "kern",
8626
- size: -overlap
8627
- });
8628
- var pathName = repeat === "\u239C" ? "leftParenInner" : "rightParenInner";
8629
- var innerSpan = buildCommon.staticSvg(pathName, options);
8630
- inners.push({
8631
- type: "elem",
8632
- elem: innerSpan
8633
- });
8634
- inners.push({
8635
- type: "kern",
8636
- size: -overlap
8637
- });
8638
- } else {
8639
- inners.push({
8640
- type: "kern",
8641
- size: shiftOfExtraElement
8642
- });
8643
- inners.push(delimiter_makeInner(repeat, font, mode));
8644
- inners.push(lap);
8645
- } // Add the top symbol
8646
-
8561
+ inners.push({
8562
+ type: "kern",
8563
+ size: shiftOfExtraElement
8564
+ });
8565
+ inners.push(delimiter_makeInner(repeat, font, mode));
8566
+ inners.push(lap); // Add the top symbol
8647
8567
 
8648
8568
  inners.push(delimiter_makeInner(top, font, mode)); // Finally, build the vlist
8649
8569
 
@@ -9067,10 +8987,8 @@ function checkDelimiter(delim, context) {
9067
8987
 
9068
8988
  if (symDelim && utils.contains(delimiters, symDelim.text)) {
9069
8989
  return symDelim;
9070
- } else if (symDelim) {
9071
- throw new src_ParseError("Invalid delimiter '" + symDelim.text + "' after '" + context.funcName + "'", delim);
9072
8990
  } else {
9073
- throw new src_ParseError("Invalid delimiter type '" + delim.type + "'", delim);
8991
+ throw new src_ParseError("Invalid delimiter: '" + (symDelim ? symDelim.text : JSON.stringify(delim)) + "' after '" + context.funcName + "'", delim);
9074
8992
  }
9075
8993
  }
9076
8994
 
@@ -10058,7 +9976,7 @@ var array_mathmlBuilder = function mathmlBuilder(group, options) {
10058
9976
  var menclose = "";
10059
9977
  var align = "";
10060
9978
 
10061
- if (group.cols && group.cols.length > 0) {
9979
+ if (group.cols) {
10062
9980
  // Find column alignment, column spacing, and vertical lines.
10063
9981
  var cols = group.cols;
10064
9982
  var columnLines = "";
@@ -10173,12 +10091,13 @@ var array_alignedHandler = function alignedHandler(context, args) {
10173
10091
  mode: context.mode,
10174
10092
  body: []
10175
10093
  };
10094
+ var ordgroup = checkNodeType(args[0], "ordgroup");
10176
10095
 
10177
- if (args[0] && args[0].type === "ordgroup") {
10096
+ if (ordgroup) {
10178
10097
  var arg0 = "";
10179
10098
 
10180
- for (var i = 0; i < args[0].body.length; i++) {
10181
- var textord = assertNodeType(args[0].body[i], "textord");
10099
+ for (var i = 0; i < ordgroup.body.length; i++) {
10100
+ var textord = assertNodeType(ordgroup.body[i], "textord");
10182
10101
  arg0 += textord.text;
10183
10102
  }
10184
10103
 
@@ -10191,8 +10110,10 @@ var array_alignedHandler = function alignedHandler(context, args) {
10191
10110
  for (var _i3 = 1; _i3 < row.length; _i3 += 2) {
10192
10111
  // Modify ordgroup node within styling node
10193
10112
  var styling = assertNodeType(row[_i3], "styling");
10194
- var ordgroup = assertNodeType(styling.body[0], "ordgroup");
10195
- ordgroup.body.unshift(emptyGroup);
10113
+
10114
+ var _ordgroup = assertNodeType(styling.body[0], "ordgroup");
10115
+
10116
+ _ordgroup.body.unshift(emptyGroup);
10196
10117
  }
10197
10118
 
10198
10119
  if (!isAligned) {
@@ -10370,7 +10291,7 @@ defineEnvironment({
10370
10291
  };
10371
10292
  res = parseArray(context.parser, res, "script");
10372
10293
 
10373
- if (res.body.length > 0 && res.body[0].length > 1) {
10294
+ if (res.body[0].length > 1) {
10374
10295
  throw new src_ParseError("{subarray} can contain only one column");
10375
10296
  }
10376
10297
 
@@ -10383,11 +10304,10 @@ defineEnvironment({
10383
10304
  // \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right.
10384
10305
  // {dcases} is a {cases} environment where cells are set in \displaystyle,
10385
10306
  // as defined in mathtools.sty.
10386
- // {rcases} is another mathtools environment. It's brace is on the right side.
10387
10307
 
10388
10308
  defineEnvironment({
10389
10309
  type: "array",
10390
- names: ["cases", "dcases", "rcases", "drcases"],
10310
+ names: ["cases", "dcases"],
10391
10311
  props: {
10392
10312
  numArgs: 0
10393
10313
  },
@@ -10417,8 +10337,8 @@ defineEnvironment({
10417
10337
  type: "leftright",
10418
10338
  mode: context.mode,
10419
10339
  body: [res],
10420
- left: context.envName.indexOf("r") > -1 ? "." : "\\{",
10421
- right: context.envName.indexOf("r") > -1 ? "\\}" : ".",
10340
+ left: "\\{",
10341
+ right: ".",
10422
10342
  rightColor: undefined
10423
10343
  };
10424
10344
  },
@@ -10637,7 +10557,7 @@ defineFunction({
10637
10557
  mode: parser.mode,
10638
10558
  mclass: "m" + funcName.substr(5),
10639
10559
  // TODO(kevinb): don't prefix with 'm'
10640
- body: ordargument(body),
10560
+ body: defineFunction_ordargument(body),
10641
10561
  isCharacterBox: utils.isCharacterBox(body)
10642
10562
  };
10643
10563
  },
@@ -10705,7 +10625,7 @@ defineFunction({
10705
10625
  parentIsSupSub: false,
10706
10626
  symbol: false,
10707
10627
  suppressBaseShift: funcName !== "\\stackrel",
10708
- body: ordargument(baseArg)
10628
+ body: defineFunction_ordargument(baseArg)
10709
10629
  };
10710
10630
  var supsub = {
10711
10631
  type: "supsub",
@@ -10811,7 +10731,7 @@ defineFunction({
10811
10731
 
10812
10732
  defineFunction({
10813
10733
  type: "font",
10814
- names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"],
10734
+ names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it"],
10815
10735
  props: {
10816
10736
  numArgs: 0,
10817
10737
  allowedInText: true
@@ -11224,8 +11144,20 @@ defineFunction({
11224
11144
  var numer = args[4];
11225
11145
  var denom = args[5]; // Look into the parse nodes to get the desired delimiters.
11226
11146
 
11227
- var leftDelim = args[0].type === "atom" && args[0].family === "open" ? delimFromValue(args[0].text) : null;
11228
- var rightDelim = args[1].type === "atom" && args[1].family === "close" ? delimFromValue(args[1].text) : null;
11147
+ var leftNode = checkNodeType(args[0], "atom");
11148
+
11149
+ if (leftNode) {
11150
+ leftNode = assertAtomFamily(args[0], "open");
11151
+ }
11152
+
11153
+ var leftDelim = leftNode ? delimFromValue(leftNode.text) : null;
11154
+ var rightNode = checkNodeType(args[1], "atom");
11155
+
11156
+ if (rightNode) {
11157
+ rightNode = assertAtomFamily(args[1], "close");
11158
+ }
11159
+
11160
+ var rightDelim = rightNode ? delimFromValue(rightNode.text) : null;
11229
11161
  var barNode = assertNodeType(args[2], "size");
11230
11162
  var hasBarLine;
11231
11163
  var barSize = null;
@@ -11242,15 +11174,15 @@ defineFunction({
11242
11174
 
11243
11175
 
11244
11176
  var size = "auto";
11245
- var styl = args[3];
11177
+ var styl = checkNodeType(args[3], "ordgroup");
11246
11178
 
11247
- if (styl.type === "ordgroup") {
11179
+ if (styl) {
11248
11180
  if (styl.body.length > 0) {
11249
11181
  var textOrd = assertNodeType(styl.body[0], "textord");
11250
11182
  size = stylArray[Number(textOrd.text)];
11251
11183
  }
11252
11184
  } else {
11253
- styl = assertNodeType(styl, "textord");
11185
+ styl = assertNodeType(args[3], "textord");
11254
11186
  size = stylArray[Number(styl.text)];
11255
11187
  }
11256
11188
 
@@ -11337,13 +11269,14 @@ var horizBrace_htmlBuilder = function htmlBuilder(grp, options) {
11337
11269
 
11338
11270
  var supSubGroup;
11339
11271
  var group;
11272
+ var supSub = checkNodeType(grp, "supsub");
11340
11273
 
11341
- if (grp.type === "supsub") {
11274
+ if (supSub) {
11342
11275
  // Ref: LaTeX source2e: }}}}\limits}
11343
11276
  // i.e. LaTeX treats the brace similar to an op and passes it
11344
11277
  // with \limits, so we need to assign supsub style.
11345
- supSubGroup = grp.sup ? buildHTML_buildGroup(grp.sup, options.havingStyle(style.sup()), options) : buildHTML_buildGroup(grp.sub, options.havingStyle(style.sub()), options);
11346
- group = assertNodeType(grp.base, "horizBrace");
11278
+ supSubGroup = supSub.sup ? buildHTML_buildGroup(supSub.sup, options.havingStyle(style.sup()), options) : buildHTML_buildGroup(supSub.sub, options.havingStyle(style.sub()), options);
11279
+ group = assertNodeType(supSub.base, "horizBrace");
11347
11280
  } else {
11348
11281
  group = assertNodeType(grp, "horizBrace");
11349
11282
  } // Build the base group
@@ -11493,7 +11426,7 @@ defineFunction({
11493
11426
  type: "href",
11494
11427
  mode: parser.mode,
11495
11428
  href: href,
11496
- body: ordargument(body)
11429
+ body: defineFunction_ordargument(body)
11497
11430
  };
11498
11431
  },
11499
11432
  htmlBuilder: function htmlBuilder(group, options) {
@@ -11556,120 +11489,8 @@ defineFunction({
11556
11489
  type: "href",
11557
11490
  mode: parser.mode,
11558
11491
  href: href,
11559
- body: ordargument(body)
11560
- };
11561
- }
11562
- });
11563
- // CONCATENATED MODULE: ./src/functions/html.js
11564
-
11565
-
11566
-
11567
-
11568
-
11569
-
11570
- defineFunction({
11571
- type: "html",
11572
- names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"],
11573
- props: {
11574
- numArgs: 2,
11575
- argTypes: ["raw", "original"],
11576
- allowedInText: true
11577
- },
11578
- handler: function handler(_ref, args) {
11579
- var parser = _ref.parser,
11580
- funcName = _ref.funcName,
11581
- token = _ref.token;
11582
- var value = assertNodeType(args[0], "raw").string;
11583
- var body = args[1];
11584
-
11585
- if (parser.settings.strict) {
11586
- parser.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode");
11587
- }
11588
-
11589
- var trustContext;
11590
- var attributes = {};
11591
-
11592
- switch (funcName) {
11593
- case "\\htmlClass":
11594
- attributes.class = value;
11595
- trustContext = {
11596
- command: "\\htmlClass",
11597
- class: value
11598
- };
11599
- break;
11600
-
11601
- case "\\htmlId":
11602
- attributes.id = value;
11603
- trustContext = {
11604
- command: "\\htmlId",
11605
- id: value
11606
- };
11607
- break;
11608
-
11609
- case "\\htmlStyle":
11610
- attributes.style = value;
11611
- trustContext = {
11612
- command: "\\htmlStyle",
11613
- style: value
11614
- };
11615
- break;
11616
-
11617
- case "\\htmlData":
11618
- {
11619
- var data = value.split(",");
11620
-
11621
- for (var i = 0; i < data.length; i++) {
11622
- var keyVal = data[i].split("=");
11623
-
11624
- if (keyVal.length !== 2) {
11625
- throw new src_ParseError("Error parsing key-value for \\htmlData");
11626
- }
11627
-
11628
- attributes["data-" + keyVal[0].trim()] = keyVal[1].trim();
11629
- }
11630
-
11631
- trustContext = {
11632
- command: "\\htmlData",
11633
- attributes: attributes
11634
- };
11635
- break;
11636
- }
11637
-
11638
- default:
11639
- throw new Error("Unrecognized html command");
11640
- }
11641
-
11642
- if (!parser.settings.isTrusted(trustContext)) {
11643
- return parser.formatUnsupportedCmd(funcName);
11644
- }
11645
-
11646
- return {
11647
- type: "html",
11648
- mode: parser.mode,
11649
- attributes: attributes,
11650
- body: ordargument(body)
11492
+ body: defineFunction_ordargument(body)
11651
11493
  };
11652
- },
11653
- htmlBuilder: function htmlBuilder(group, options) {
11654
- var elements = buildHTML_buildExpression(group.body, options, false);
11655
- var classes = ["enclosing"];
11656
-
11657
- if (group.attributes.class) {
11658
- classes.push.apply(classes, group.attributes.class.trim().split(/\s+/));
11659
- }
11660
-
11661
- var span = buildCommon.makeSpan(classes, elements, options);
11662
-
11663
- for (var attr in group.attributes) {
11664
- if (attr !== "class" && group.attributes.hasOwnProperty(attr)) {
11665
- span.setAttribute(attr, group.attributes[attr]);
11666
- }
11667
- }
11668
-
11669
- return span;
11670
- },
11671
- mathmlBuilder: function mathmlBuilder(group, options) {
11672
- return buildExpressionRow(group.body, options);
11673
11494
  }
11674
11495
  });
11675
11496
  // CONCATENATED MODULE: ./src/functions/htmlmathml.js
@@ -11689,8 +11510,8 @@ defineFunction({
11689
11510
  return {
11690
11511
  type: "htmlmathml",
11691
11512
  mode: parser.mode,
11692
- html: ordargument(args[0]),
11693
- mathml: ordargument(args[1])
11513
+ html: defineFunction_ordargument(args[0]),
11514
+ mathml: defineFunction_ordargument(args[1])
11694
11515
  };
11695
11516
  },
11696
11517
  htmlBuilder: function htmlBuilder(group, options) {
@@ -11979,16 +11800,21 @@ defineFunction({
11979
11800
  // two items involved in the lap.
11980
11801
  // Next, use a strut to set the height of the HTML bounding box.
11981
11802
  // Otherwise, a tall argument may be misplaced.
11982
- // This code resolved issue #1153
11983
11803
 
11984
11804
  var strut = buildCommon.makeSpan(["strut"]);
11985
11805
  strut.style.height = node.height + node.depth + "em";
11986
11806
  strut.style.verticalAlign = -node.depth + "em";
11987
11807
  node.children.unshift(strut); // Next, prevent vertical misplacement when next to something tall.
11988
- // This code resolves issue #1234
11989
11808
 
11990
- node = buildCommon.makeSpan(["thinbox"], [node], options);
11991
- return buildCommon.makeSpan(["mord", "vbox"], [node], options);
11809
+ node = buildCommon.makeVList({
11810
+ positionType: "firstBaseline",
11811
+ children: [{
11812
+ type: "elem",
11813
+ elem: node
11814
+ }]
11815
+ }, options); // Get the horizontal spacing correct relative to adjacent items.
11816
+
11817
+ return buildCommon.makeSpan(["mord"], [node], options);
11992
11818
  },
11993
11819
  mathmlBuilder: function mathmlBuilder(group, options) {
11994
11820
  // mathllap, mathrlap, mathclap
@@ -12083,10 +11909,10 @@ defineFunction({
12083
11909
  return {
12084
11910
  type: "mathchoice",
12085
11911
  mode: parser.mode,
12086
- display: ordargument(args[0]),
12087
- text: ordargument(args[1]),
12088
- script: ordargument(args[2]),
12089
- scriptscript: ordargument(args[3])
11912
+ display: defineFunction_ordargument(args[0]),
11913
+ text: defineFunction_ordargument(args[1]),
11914
+ script: defineFunction_ordargument(args[2]),
11915
+ scriptscript: defineFunction_ordargument(args[3])
12090
11916
  };
12091
11917
  },
12092
11918
  htmlBuilder: function htmlBuilder(group, options) {
@@ -12104,6 +11930,8 @@ defineFunction({
12104
11930
 
12105
11931
  // For an operator with limits, assemble the base, sup, and sub into a span.
12106
11932
  var assembleSupSub_assembleSupSub = function assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift) {
11933
+ // IE 8 clips \int if it is in a display: inline-block. We wrap it
11934
+ // in a new span so it is an inline, and works.
12107
11935
  base = buildCommon.makeSpan([], [base]);
12108
11936
  var sub;
12109
11937
  var sup; // We manually have to handle the superscripts and subscripts. This,
@@ -12236,14 +12064,15 @@ var op_htmlBuilder = function htmlBuilder(grp, options) {
12236
12064
  var subGroup;
12237
12065
  var hasLimits = false;
12238
12066
  var group;
12067
+ var supSub = checkNodeType(grp, "supsub");
12239
12068
 
12240
- if (grp.type === "supsub") {
12069
+ if (supSub) {
12241
12070
  // If we have limits, supsub will pass us its group to handle. Pull
12242
12071
  // out the superscript and subscript and set the group to the op in
12243
12072
  // its base.
12244
- supGroup = grp.sup;
12245
- subGroup = grp.sub;
12246
- group = assertNodeType(grp.base, "op");
12073
+ supGroup = supSub.sup;
12074
+ subGroup = supSub.sub;
12075
+ group = assertNodeType(supSub.base, "op");
12247
12076
  hasLimits = true;
12248
12077
  } else {
12249
12078
  group = assertNodeType(grp, "op");
@@ -12439,7 +12268,7 @@ defineFunction({
12439
12268
  limits: false,
12440
12269
  parentIsSupSub: false,
12441
12270
  symbol: false,
12442
- body: ordargument(body)
12271
+ body: defineFunction_ordargument(body)
12443
12272
  };
12444
12273
  },
12445
12274
  htmlBuilder: op_htmlBuilder,
@@ -12545,14 +12374,15 @@ var operatorname_htmlBuilder = function htmlBuilder(grp, options) {
12545
12374
  var subGroup;
12546
12375
  var hasLimits = false;
12547
12376
  var group;
12377
+ var supSub = checkNodeType(grp, "supsub");
12548
12378
 
12549
- if (grp.type === "supsub") {
12379
+ if (supSub) {
12550
12380
  // If we have limits, supsub will pass us its group to handle. Pull
12551
12381
  // out the superscript and subscript and set the group to the op in
12552
12382
  // its base.
12553
- supGroup = grp.sup;
12554
- subGroup = grp.sub;
12555
- group = assertNodeType(grp.base, "operatorname");
12383
+ supGroup = supSub.sup;
12384
+ subGroup = supSub.sub;
12385
+ group = assertNodeType(supSub.base, "operatorname");
12556
12386
  hasLimits = true;
12557
12387
  } else {
12558
12388
  group = assertNodeType(grp, "operatorname");
@@ -12677,7 +12507,7 @@ defineFunction({
12677
12507
  return {
12678
12508
  type: "operatorname",
12679
12509
  mode: parser.mode,
12680
- body: ordargument(body),
12510
+ body: defineFunction_ordargument(body),
12681
12511
  alwaysHandleSupSub: funcName === "\\operatorname*",
12682
12512
  limits: false,
12683
12513
  parentIsSupSub: false
@@ -12778,7 +12608,7 @@ defineFunction({
12778
12608
  return {
12779
12609
  type: "phantom",
12780
12610
  mode: parser.mode,
12781
- body: ordargument(body)
12611
+ body: defineFunction_ordargument(body)
12782
12612
  };
12783
12613
  },
12784
12614
  htmlBuilder: function htmlBuilder(group, options) {
@@ -12832,7 +12662,7 @@ defineFunction({
12832
12662
  return buildCommon.makeSpan(["mord"], [node], options);
12833
12663
  },
12834
12664
  mathmlBuilder: function mathmlBuilder(group, options) {
12835
- var inner = buildMathML_buildExpression(ordargument(group.body), options);
12665
+ var inner = buildMathML_buildExpression(defineFunction_ordargument(group.body), options);
12836
12666
  var phantom = new mathMLTree.MathNode("mphantom", inner);
12837
12667
  var node = new mathMLTree.MathNode("mpadded", [phantom]);
12838
12668
  node.setAttribute("height", "0px");
@@ -12862,7 +12692,7 @@ defineFunction({
12862
12692
  return buildCommon.makeSpan(["mord", "rlap"], [inner, fix], options);
12863
12693
  },
12864
12694
  mathmlBuilder: function mathmlBuilder(group, options) {
12865
- var inner = buildMathML_buildExpression(ordargument(group.body), options);
12695
+ var inner = buildMathML_buildExpression(defineFunction_ordargument(group.body), options);
12866
12696
  var phantom = new mathMLTree.MathNode("mphantom", inner);
12867
12697
  var node = new mathMLTree.MathNode("mpadded", [phantom]);
12868
12698
  node.setAttribute("width", "0px");
@@ -13362,6 +13192,7 @@ defineFunction({
13362
13192
 
13363
13193
 
13364
13194
 
13195
+
13365
13196
  /**
13366
13197
  * Sometimes, groups perform special rules when they have superscripts or
13367
13198
  * subscripts attached to them. This function lets the `supsub` group know that
@@ -13542,13 +13373,14 @@ defineFunctionBuilders({
13542
13373
  var isBrace = false;
13543
13374
  var isOver;
13544
13375
  var isSup;
13376
+ var horizBrace = checkNodeType(group.base, "horizBrace");
13545
13377
 
13546
- if (group.base && group.base.type === "horizBrace") {
13378
+ if (horizBrace) {
13547
13379
  isSup = !!group.sup;
13548
13380
 
13549
- if (isSup === group.base.isOver) {
13381
+ if (isSup === horizBrace.isOver) {
13550
13382
  isBrace = true;
13551
- isOver = group.base.isOver;
13383
+ isOver = horizBrace.isOver;
13552
13384
  }
13553
13385
  }
13554
13386
 
@@ -13838,7 +13670,7 @@ defineFunction({
13838
13670
  return {
13839
13671
  type: "text",
13840
13672
  mode: parser.mode,
13841
- body: ordargument(body),
13673
+ body: defineFunction_ordargument(body),
13842
13674
  font: funcName
13843
13675
  };
13844
13676
  },
@@ -14005,8 +13837,6 @@ var functions = _functions;
14005
13837
 
14006
13838
 
14007
13839
 
14008
-
14009
-
14010
13840
 
14011
13841
 
14012
13842
 
@@ -14282,7 +14112,6 @@ function () {
14282
14112
 
14283
14113
 
14284
14114
 
14285
-
14286
14115
  var builtinMacros = {};
14287
14116
  /* harmony default export */ var macros = (builtinMacros); // This function might one day accept an additional argument and do more things.
14288
14117
 
@@ -14290,37 +14119,7 @@ function defineMacro(name, body) {
14290
14119
  builtinMacros[name] = body;
14291
14120
  } //////////////////////////////////////////////////////////////////////
14292
14121
  // macro tools
14293
-
14294
- defineMacro("\\noexpand", function (context) {
14295
- // The expansion is the token itself; but that token is interpreted
14296
- // as if its meaning were ‘\relax’ if it is a control sequence that
14297
- // would ordinarily be expanded by TeX’s expansion rules.
14298
- var t = context.popToken();
14299
-
14300
- if (context.isExpandable(t.text)) {
14301
- t.noexpand = true;
14302
- t.treatAsRelax = true;
14303
- }
14304
-
14305
- return {
14306
- tokens: [t],
14307
- numArgs: 0
14308
- };
14309
- });
14310
- defineMacro("\\expandafter", function (context) {
14311
- // TeX first reads the token that comes immediately after \expandafter,
14312
- // without expanding it; let’s call this token t. Then TeX reads the
14313
- // token that comes after t (and possibly more tokens, if that token
14314
- // has an argument), replacing it by its expansion. Finally TeX puts
14315
- // t back in front of that expansion.
14316
- var t = context.popToken();
14317
- context.expandOnce(true); // expand only an expandable token
14318
-
14319
- return {
14320
- tokens: [t],
14321
- numArgs: 0
14322
- };
14323
- }); // LaTeX's \@firstoftwo{#1}{#2} expands to #1, skipping #2
14122
+ // LaTeX's \@firstoftwo{#1}{#2} expands to #1, skipping #2
14324
14123
  // TeX source: \long\def\@firstoftwo#1#2{#1}
14325
14124
 
14326
14125
  defineMacro("\\@firstoftwo", function (context) {
@@ -14339,14 +14138,12 @@ defineMacro("\\@secondoftwo", function (context) {
14339
14138
  numArgs: 0
14340
14139
  };
14341
14140
  }); // LaTeX's \@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)
14342
- // symbol that isn't a space, consuming any spaces but not consuming the
14343
- // first nonspace character. If that nonspace character matches #1, then
14344
- // the macro expands to #2; otherwise, it expands to #3.
14141
+ // symbol. If it matches #1, then the macro expands to #2; otherwise, #3.
14142
+ // Note, however, that it does not consume the next symbol in either case.
14345
14143
 
14346
14144
  defineMacro("\\@ifnextchar", function (context) {
14347
14145
  var args = context.consumeArgs(3); // symbol, if, else
14348
14146
 
14349
- context.consumeSpaces();
14350
14147
  var nextToken = context.future();
14351
14148
 
14352
14149
  if (args[0].length === 1 && args[0][0].text === nextToken.text) {
@@ -14459,6 +14256,74 @@ defineMacro("\\char", function (context) {
14459
14256
  }
14460
14257
 
14461
14258
  return "\\@char{" + number + "}";
14259
+ }); // Basic support for macro definitions:
14260
+ // \def\macro{expansion}
14261
+ // \def\macro#1{expansion}
14262
+ // \def\macro#1#2{expansion}
14263
+ // \def\macro#1#2#3#4#5#6#7#8#9{expansion}
14264
+ // Also the \gdef and \global\def equivalents
14265
+
14266
+ var macros_def = function def(context, global) {
14267
+ var arg = context.consumeArgs(1)[0];
14268
+
14269
+ if (arg.length !== 1) {
14270
+ throw new src_ParseError("\\gdef's first argument must be a macro name");
14271
+ }
14272
+
14273
+ var name = arg[0].text; // Count argument specifiers, and check they are in the order #1 #2 ...
14274
+
14275
+ var numArgs = 0;
14276
+ arg = context.consumeArgs(1)[0];
14277
+
14278
+ while (arg.length === 1 && arg[0].text === "#") {
14279
+ arg = context.consumeArgs(1)[0];
14280
+
14281
+ if (arg.length !== 1) {
14282
+ throw new src_ParseError("Invalid argument number length \"" + arg.length + "\"");
14283
+ }
14284
+
14285
+ if (!/^[1-9]$/.test(arg[0].text)) {
14286
+ throw new src_ParseError("Invalid argument number \"" + arg[0].text + "\"");
14287
+ }
14288
+
14289
+ numArgs++;
14290
+
14291
+ if (parseInt(arg[0].text) !== numArgs) {
14292
+ throw new src_ParseError("Argument number \"" + arg[0].text + "\" out of order");
14293
+ }
14294
+
14295
+ arg = context.consumeArgs(1)[0];
14296
+ } // Final arg is the expansion of the macro
14297
+
14298
+
14299
+ context.macros.set(name, {
14300
+ tokens: arg,
14301
+ numArgs: numArgs
14302
+ }, global);
14303
+ return '';
14304
+ };
14305
+
14306
+ defineMacro("\\gdef", function (context) {
14307
+ return macros_def(context, true);
14308
+ });
14309
+ defineMacro("\\def", function (context) {
14310
+ return macros_def(context, false);
14311
+ });
14312
+ defineMacro("\\global", function (context) {
14313
+ var next = context.consumeArgs(1)[0];
14314
+
14315
+ if (next.length !== 1) {
14316
+ throw new src_ParseError("Invalid command after \\global");
14317
+ }
14318
+
14319
+ var command = next[0].text; // TODO: Should expand command
14320
+
14321
+ if (command === "\\def") {
14322
+ // \global\def is equivalent to \gdef
14323
+ return macros_def(context, true);
14324
+ } else {
14325
+ throw new src_ParseError("Invalid command '" + command + "' after \\global");
14326
+ }
14462
14327
  }); // \newcommand{\macro}[args]{definition}
14463
14328
  // \renewcommand{\macro}[args]{definition}
14464
14329
  // TODO: Optional arguments: \newcommand{\macro}[args][default]{definition}
@@ -14518,30 +14383,6 @@ defineMacro("\\renewcommand", function (context) {
14518
14383
  });
14519
14384
  defineMacro("\\providecommand", function (context) {
14520
14385
  return macros_newcommand(context, true, true);
14521
- }); // terminal (console) tools
14522
-
14523
- defineMacro("\\message", function (context) {
14524
- var arg = context.consumeArgs(1)[0]; // eslint-disable-next-line no-console
14525
-
14526
- console.log(arg.reverse().map(function (token) {
14527
- return token.text;
14528
- }).join(""));
14529
- return '';
14530
- });
14531
- defineMacro("\\errmessage", function (context) {
14532
- var arg = context.consumeArgs(1)[0]; // eslint-disable-next-line no-console
14533
-
14534
- console.error(arg.reverse().map(function (token) {
14535
- return token.text;
14536
- }).join(""));
14537
- return '';
14538
- });
14539
- defineMacro("\\show", function (context) {
14540
- var tok = context.popToken();
14541
- var name = tok.text; // eslint-disable-next-line no-console
14542
-
14543
- console.log(tok, context.macros.get(name), src_functions[name], src_symbols.math[name], src_symbols.text[name]);
14544
- return '';
14545
14386
  }); //////////////////////////////////////////////////////////////////////
14546
14387
  // Grouping
14547
14388
  // \let\bgroup={ \let\egroup=}
@@ -14624,13 +14465,7 @@ defineMacro("\u231E", "\\llcorner");
14624
14465
  defineMacro("\u231F", "\\lrcorner");
14625
14466
  defineMacro("\xA9", "\\copyright");
14626
14467
  defineMacro("\xAE", "\\textregistered");
14627
- defineMacro("\uFE0F", "\\textregistered"); // The KaTeX fonts have corners at codepoints that don't match Unicode.
14628
- // For MathML purposes, use the Unicode code point.
14629
-
14630
- defineMacro("\\ulcorner", "\\html@mathml{\\@ulcorner}{\\mathop{\\char\"231c}}");
14631
- defineMacro("\\urcorner", "\\html@mathml{\\@urcorner}{\\mathop{\\char\"231d}}");
14632
- defineMacro("\\llcorner", "\\html@mathml{\\@llcorner}{\\mathop{\\char\"231e}}");
14633
- defineMacro("\\lrcorner", "\\html@mathml{\\@lrcorner}{\\mathop{\\char\"231f}}"); //////////////////////////////////////////////////////////////////////
14468
+ defineMacro("\uFE0F", "\\textregistered"); //////////////////////////////////////////////////////////////////////
14634
14469
  // LaTeX_2ε
14635
14470
  // \vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
14636
14471
  // \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
@@ -14999,9 +14834,7 @@ defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
14999
14834
  defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
15000
14835
  defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
15001
14836
  defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
15002
- defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}");
15003
- defineMacro("\\imath", "\\html@mathml{\\@imath}{\u0131}");
15004
- defineMacro("\\jmath", "\\html@mathml{\\@jmath}{\u0237}"); //////////////////////////////////////////////////////////////////////
14837
+ defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); //////////////////////////////////////////////////////////////////////
15005
14838
  // stmaryrd and semantic
15006
14839
  // The stmaryrd and semantic packages render the next four items by calling a
15007
14840
  // glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
@@ -15019,11 +14852,7 @@ defineMacro("\u2983", "\\lBrace"); // blackboard bold {
15019
14852
  defineMacro("\u2984", "\\rBrace"); // blackboard bold }
15020
14853
  // TODO: Create variable sized versions of the last two items. I believe that
15021
14854
  // will require new font glyphs.
15022
- // The stmaryrd function `\minuso` provides a "Plimsoll" symbol that
15023
- // superimposes the characters \circ and \mathminus. Used in chemistry.
15024
-
15025
- defineMacro("\\minuso", "\\mathbin{\\html@mathml{" + "{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}" + "{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}" + "{\\char`⦵}}");
15026
- defineMacro("⦵", "\\minuso"); //////////////////////////////////////////////////////////////////////
14855
+ //////////////////////////////////////////////////////////////////////
15027
14856
  // texvc.sty
15028
14857
  // The texvc package contains macros available in mediawiki pages.
15029
14858
  // We omit the functions deprecated at
@@ -15099,15 +14928,7 @@ defineMacro("\\Zeta", "\\mathrm{Z}"); //////////////////////////////////////////
15099
14928
 
15100
14929
  defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}");
15101
14930
  defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}");
15102
- defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); //////////////////////////////////////////////////////////////////////
15103
- // braket.sty
15104
- // http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf
15105
-
15106
- defineMacro("\\bra", "\\mathinner{\\langle{#1}|}");
15107
- defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
15108
- defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
15109
- defineMacro("\\Bra", "\\left\\langle#1\\right|");
15110
- defineMacro("\\Ket", "\\left|#1\\right\\rangle"); // Custom Khan Academy colors, should be moved to an optional package
14931
+ defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package
15111
14932
 
15112
14933
  defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
15113
14934
  defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
@@ -15367,22 +15188,18 @@ function () {
15367
15188
  * At the moment, macro expansion doesn't handle delimited macros,
15368
15189
  * i.e. things like those defined by \def\foo#1\end{…}.
15369
15190
  * See the TeX book page 202ff. for details on how those should behave.
15370
- *
15371
- * If expandableOnly, only expandable tokens are expanded and
15372
- * an undefined control sequence results in an error.
15373
15191
  */
15374
15192
  ;
15375
15193
 
15376
- _proto.expandOnce = function expandOnce(expandableOnly) {
15194
+ _proto.expandOnce = function expandOnce() {
15377
15195
  var topToken = this.popToken();
15378
15196
  var name = topToken.text;
15379
- var expansion = !topToken.noexpand ? this._getExpansion(name) : null;
15380
15197
 
15381
- if (expansion == null || expandableOnly && expansion.unexpandable) {
15382
- if (expandableOnly && expansion == null && name[0] === "\\" && !this.isDefined(name)) {
15383
- throw new src_ParseError("Undefined control sequence: " + name);
15384
- }
15198
+ var expansion = this._getExpansion(name);
15385
15199
 
15200
+ if (expansion == null) {
15201
+ // mainly checking for undefined here
15202
+ // Fully expanded
15386
15203
  this.pushToken(topToken);
15387
15204
  return topToken;
15388
15205
  }
@@ -15453,9 +15270,7 @@ function () {
15453
15270
  if (expanded instanceof Token_Token) {
15454
15271
  // \relax stops the expansion, but shouldn't get returned (a
15455
15272
  // null return value couldn't get implemented as a function).
15456
- // the token after \noexpand is interpreted as if its meaning
15457
- // were ‘\relax’
15458
- if (expanded.text === "\\relax" || expanded.treatAsRelax) {
15273
+ if (expanded.text === "\\relax") {
15459
15274
  this.stack.pop();
15460
15275
  } else {
15461
15276
  return this.stack.pop(); // === expanded
@@ -15474,29 +15289,18 @@ function () {
15474
15289
  ;
15475
15290
 
15476
15291
  _proto.expandMacro = function expandMacro(name) {
15477
- return this.macros.has(name) ? this.expandTokens([new Token_Token(name)]) : undefined;
15478
- }
15479
- /**
15480
- * Fully expand the given token stream and return the resulting list of tokens
15481
- */
15482
- ;
15292
+ if (!this.macros.get(name)) {
15293
+ return undefined;
15294
+ }
15483
15295
 
15484
- _proto.expandTokens = function expandTokens(tokens) {
15485
15296
  var output = [];
15486
15297
  var oldStackLength = this.stack.length;
15487
- this.pushTokens(tokens);
15298
+ this.pushToken(new Token_Token(name));
15488
15299
 
15489
15300
  while (this.stack.length > oldStackLength) {
15490
- var expanded = this.expandOnce(true); // expand only expandable tokens
15491
- // expandOnce returns Token if and only if it's fully expanded.
15301
+ var expanded = this.expandOnce(); // expandOnce returns Token if and only if it's fully expanded.
15492
15302
 
15493
15303
  if (expanded instanceof Token_Token) {
15494
- if (expanded.treatAsRelax) {
15495
- // the expansion of \noexpand is the token itself
15496
- expanded.noexpand = false;
15497
- expanded.treatAsRelax = false;
15498
- }
15499
-
15500
15304
  output.push(this.stack.pop());
15501
15305
  }
15502
15306
  }
@@ -15577,24 +15381,700 @@ function () {
15577
15381
 
15578
15382
  _proto.isDefined = function isDefined(name) {
15579
15383
  return this.macros.has(name) || src_functions.hasOwnProperty(name) || src_symbols.math.hasOwnProperty(name) || src_symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);
15580
- }
15581
- /**
15582
- * Determine whether a command is expandable.
15583
- */
15584
- ;
15585
-
15586
- _proto.isExpandable = function isExpandable(name) {
15587
- var macro = this.macros.get(name);
15588
- return macro != null ? typeof macro === "string" || typeof macro === "function" || !macro.unexpandable // TODO(ylem): #2085
15589
- : src_functions.hasOwnProperty(name)
15590
- /* && !functions[name].primitive*/
15591
- ;
15592
15384
  };
15593
15385
 
15594
15386
  return MacroExpander;
15595
15387
  }();
15596
15388
 
15597
15389
 
15390
+ // CONCATENATED MODULE: ./src/unicodeAccents.js
15391
+ // Mapping of Unicode accent characters to their LaTeX equivalent in text and
15392
+ // math mode (when they exist).
15393
+ /* harmony default export */ var unicodeAccents = ({
15394
+ "\u0301": {
15395
+ text: "\\'",
15396
+ math: '\\acute'
15397
+ },
15398
+ "\u0300": {
15399
+ text: '\\`',
15400
+ math: '\\grave'
15401
+ },
15402
+ "\u0308": {
15403
+ text: '\\"',
15404
+ math: '\\ddot'
15405
+ },
15406
+ "\u0303": {
15407
+ text: '\\~',
15408
+ math: '\\tilde'
15409
+ },
15410
+ "\u0304": {
15411
+ text: '\\=',
15412
+ math: '\\bar'
15413
+ },
15414
+ "\u0306": {
15415
+ text: "\\u",
15416
+ math: '\\breve'
15417
+ },
15418
+ "\u030C": {
15419
+ text: '\\v',
15420
+ math: '\\check'
15421
+ },
15422
+ "\u0302": {
15423
+ text: '\\^',
15424
+ math: '\\hat'
15425
+ },
15426
+ "\u0307": {
15427
+ text: '\\.',
15428
+ math: '\\dot'
15429
+ },
15430
+ "\u030A": {
15431
+ text: '\\r',
15432
+ math: '\\mathring'
15433
+ },
15434
+ "\u030B": {
15435
+ text: '\\H'
15436
+ }
15437
+ });
15438
+ // CONCATENATED MODULE: ./src/unicodeSymbols.js
15439
+ // This file is GENERATED by unicodeMake.js. DO NOT MODIFY.
15440
+ /* harmony default export */ var unicodeSymbols = ({
15441
+ "\xE1": "a\u0301",
15442
+ // á = \'{a}
15443
+ "\xE0": "a\u0300",
15444
+ // à = \`{a}
15445
+ "\xE4": "a\u0308",
15446
+ // ä = \"{a}
15447
+ "\u01DF": "a\u0308\u0304",
15448
+ // ǟ = \"\={a}
15449
+ "\xE3": "a\u0303",
15450
+ // ã = \~{a}
15451
+ "\u0101": "a\u0304",
15452
+ // ā = \={a}
15453
+ "\u0103": "a\u0306",
15454
+ // ă = \u{a}
15455
+ "\u1EAF": "a\u0306\u0301",
15456
+ // ắ = \u\'{a}
15457
+ "\u1EB1": "a\u0306\u0300",
15458
+ // ằ = \u\`{a}
15459
+ "\u1EB5": "a\u0306\u0303",
15460
+ // ẵ = \u\~{a}
15461
+ "\u01CE": "a\u030C",
15462
+ // ǎ = \v{a}
15463
+ "\xE2": "a\u0302",
15464
+ // â = \^{a}
15465
+ "\u1EA5": "a\u0302\u0301",
15466
+ // ấ = \^\'{a}
15467
+ "\u1EA7": "a\u0302\u0300",
15468
+ // ầ = \^\`{a}
15469
+ "\u1EAB": "a\u0302\u0303",
15470
+ // ẫ = \^\~{a}
15471
+ "\u0227": "a\u0307",
15472
+ // ȧ = \.{a}
15473
+ "\u01E1": "a\u0307\u0304",
15474
+ // ǡ = \.\={a}
15475
+ "\xE5": "a\u030A",
15476
+ // å = \r{a}
15477
+ "\u01FB": "a\u030A\u0301",
15478
+ // ǻ = \r\'{a}
15479
+ "\u1E03": "b\u0307",
15480
+ // ḃ = \.{b}
15481
+ "\u0107": "c\u0301",
15482
+ // ć = \'{c}
15483
+ "\u010D": "c\u030C",
15484
+ // č = \v{c}
15485
+ "\u0109": "c\u0302",
15486
+ // ĉ = \^{c}
15487
+ "\u010B": "c\u0307",
15488
+ // ċ = \.{c}
15489
+ "\u010F": "d\u030C",
15490
+ // ď = \v{d}
15491
+ "\u1E0B": "d\u0307",
15492
+ // ḋ = \.{d}
15493
+ "\xE9": "e\u0301",
15494
+ // é = \'{e}
15495
+ "\xE8": "e\u0300",
15496
+ // è = \`{e}
15497
+ "\xEB": "e\u0308",
15498
+ // ë = \"{e}
15499
+ "\u1EBD": "e\u0303",
15500
+ // ẽ = \~{e}
15501
+ "\u0113": "e\u0304",
15502
+ // ē = \={e}
15503
+ "\u1E17": "e\u0304\u0301",
15504
+ // ḗ = \=\'{e}
15505
+ "\u1E15": "e\u0304\u0300",
15506
+ // ḕ = \=\`{e}
15507
+ "\u0115": "e\u0306",
15508
+ // ĕ = \u{e}
15509
+ "\u011B": "e\u030C",
15510
+ // ě = \v{e}
15511
+ "\xEA": "e\u0302",
15512
+ // ê = \^{e}
15513
+ "\u1EBF": "e\u0302\u0301",
15514
+ // ế = \^\'{e}
15515
+ "\u1EC1": "e\u0302\u0300",
15516
+ // ề = \^\`{e}
15517
+ "\u1EC5": "e\u0302\u0303",
15518
+ // ễ = \^\~{e}
15519
+ "\u0117": "e\u0307",
15520
+ // ė = \.{e}
15521
+ "\u1E1F": "f\u0307",
15522
+ // ḟ = \.{f}
15523
+ "\u01F5": "g\u0301",
15524
+ // ǵ = \'{g}
15525
+ "\u1E21": "g\u0304",
15526
+ // ḡ = \={g}
15527
+ "\u011F": "g\u0306",
15528
+ // ğ = \u{g}
15529
+ "\u01E7": "g\u030C",
15530
+ // ǧ = \v{g}
15531
+ "\u011D": "g\u0302",
15532
+ // ĝ = \^{g}
15533
+ "\u0121": "g\u0307",
15534
+ // ġ = \.{g}
15535
+ "\u1E27": "h\u0308",
15536
+ // ḧ = \"{h}
15537
+ "\u021F": "h\u030C",
15538
+ // ȟ = \v{h}
15539
+ "\u0125": "h\u0302",
15540
+ // ĥ = \^{h}
15541
+ "\u1E23": "h\u0307",
15542
+ // ḣ = \.{h}
15543
+ "\xED": "i\u0301",
15544
+ // í = \'{i}
15545
+ "\xEC": "i\u0300",
15546
+ // ì = \`{i}
15547
+ "\xEF": "i\u0308",
15548
+ // ï = \"{i}
15549
+ "\u1E2F": "i\u0308\u0301",
15550
+ // ḯ = \"\'{i}
15551
+ "\u0129": "i\u0303",
15552
+ // ĩ = \~{i}
15553
+ "\u012B": "i\u0304",
15554
+ // ī = \={i}
15555
+ "\u012D": "i\u0306",
15556
+ // ĭ = \u{i}
15557
+ "\u01D0": "i\u030C",
15558
+ // ǐ = \v{i}
15559
+ "\xEE": "i\u0302",
15560
+ // î = \^{i}
15561
+ "\u01F0": "j\u030C",
15562
+ // ǰ = \v{j}
15563
+ "\u0135": "j\u0302",
15564
+ // ĵ = \^{j}
15565
+ "\u1E31": "k\u0301",
15566
+ // ḱ = \'{k}
15567
+ "\u01E9": "k\u030C",
15568
+ // ǩ = \v{k}
15569
+ "\u013A": "l\u0301",
15570
+ // ĺ = \'{l}
15571
+ "\u013E": "l\u030C",
15572
+ // ľ = \v{l}
15573
+ "\u1E3F": "m\u0301",
15574
+ // ḿ = \'{m}
15575
+ "\u1E41": "m\u0307",
15576
+ // ṁ = \.{m}
15577
+ "\u0144": "n\u0301",
15578
+ // ń = \'{n}
15579
+ "\u01F9": "n\u0300",
15580
+ // ǹ = \`{n}
15581
+ "\xF1": "n\u0303",
15582
+ // ñ = \~{n}
15583
+ "\u0148": "n\u030C",
15584
+ // ň = \v{n}
15585
+ "\u1E45": "n\u0307",
15586
+ // ṅ = \.{n}
15587
+ "\xF3": "o\u0301",
15588
+ // ó = \'{o}
15589
+ "\xF2": "o\u0300",
15590
+ // ò = \`{o}
15591
+ "\xF6": "o\u0308",
15592
+ // ö = \"{o}
15593
+ "\u022B": "o\u0308\u0304",
15594
+ // ȫ = \"\={o}
15595
+ "\xF5": "o\u0303",
15596
+ // õ = \~{o}
15597
+ "\u1E4D": "o\u0303\u0301",
15598
+ // ṍ = \~\'{o}
15599
+ "\u1E4F": "o\u0303\u0308",
15600
+ // ṏ = \~\"{o}
15601
+ "\u022D": "o\u0303\u0304",
15602
+ // ȭ = \~\={o}
15603
+ "\u014D": "o\u0304",
15604
+ // ō = \={o}
15605
+ "\u1E53": "o\u0304\u0301",
15606
+ // ṓ = \=\'{o}
15607
+ "\u1E51": "o\u0304\u0300",
15608
+ // ṑ = \=\`{o}
15609
+ "\u014F": "o\u0306",
15610
+ // ŏ = \u{o}
15611
+ "\u01D2": "o\u030C",
15612
+ // ǒ = \v{o}
15613
+ "\xF4": "o\u0302",
15614
+ // ô = \^{o}
15615
+ "\u1ED1": "o\u0302\u0301",
15616
+ // ố = \^\'{o}
15617
+ "\u1ED3": "o\u0302\u0300",
15618
+ // ồ = \^\`{o}
15619
+ "\u1ED7": "o\u0302\u0303",
15620
+ // ỗ = \^\~{o}
15621
+ "\u022F": "o\u0307",
15622
+ // ȯ = \.{o}
15623
+ "\u0231": "o\u0307\u0304",
15624
+ // ȱ = \.\={o}
15625
+ "\u0151": "o\u030B",
15626
+ // ő = \H{o}
15627
+ "\u1E55": "p\u0301",
15628
+ // ṕ = \'{p}
15629
+ "\u1E57": "p\u0307",
15630
+ // ṗ = \.{p}
15631
+ "\u0155": "r\u0301",
15632
+ // ŕ = \'{r}
15633
+ "\u0159": "r\u030C",
15634
+ // ř = \v{r}
15635
+ "\u1E59": "r\u0307",
15636
+ // ṙ = \.{r}
15637
+ "\u015B": "s\u0301",
15638
+ // ś = \'{s}
15639
+ "\u1E65": "s\u0301\u0307",
15640
+ // ṥ = \'\.{s}
15641
+ "\u0161": "s\u030C",
15642
+ // š = \v{s}
15643
+ "\u1E67": "s\u030C\u0307",
15644
+ // ṧ = \v\.{s}
15645
+ "\u015D": "s\u0302",
15646
+ // ŝ = \^{s}
15647
+ "\u1E61": "s\u0307",
15648
+ // ṡ = \.{s}
15649
+ "\u1E97": "t\u0308",
15650
+ // ẗ = \"{t}
15651
+ "\u0165": "t\u030C",
15652
+ // ť = \v{t}
15653
+ "\u1E6B": "t\u0307",
15654
+ // ṫ = \.{t}
15655
+ "\xFA": "u\u0301",
15656
+ // ú = \'{u}
15657
+ "\xF9": "u\u0300",
15658
+ // ù = \`{u}
15659
+ "\xFC": "u\u0308",
15660
+ // ü = \"{u}
15661
+ "\u01D8": "u\u0308\u0301",
15662
+ // ǘ = \"\'{u}
15663
+ "\u01DC": "u\u0308\u0300",
15664
+ // ǜ = \"\`{u}
15665
+ "\u01D6": "u\u0308\u0304",
15666
+ // ǖ = \"\={u}
15667
+ "\u01DA": "u\u0308\u030C",
15668
+ // ǚ = \"\v{u}
15669
+ "\u0169": "u\u0303",
15670
+ // ũ = \~{u}
15671
+ "\u1E79": "u\u0303\u0301",
15672
+ // ṹ = \~\'{u}
15673
+ "\u016B": "u\u0304",
15674
+ // ū = \={u}
15675
+ "\u1E7B": "u\u0304\u0308",
15676
+ // ṻ = \=\"{u}
15677
+ "\u016D": "u\u0306",
15678
+ // ŭ = \u{u}
15679
+ "\u01D4": "u\u030C",
15680
+ // ǔ = \v{u}
15681
+ "\xFB": "u\u0302",
15682
+ // û = \^{u}
15683
+ "\u016F": "u\u030A",
15684
+ // ů = \r{u}
15685
+ "\u0171": "u\u030B",
15686
+ // ű = \H{u}
15687
+ "\u1E7D": "v\u0303",
15688
+ // ṽ = \~{v}
15689
+ "\u1E83": "w\u0301",
15690
+ // ẃ = \'{w}
15691
+ "\u1E81": "w\u0300",
15692
+ // ẁ = \`{w}
15693
+ "\u1E85": "w\u0308",
15694
+ // ẅ = \"{w}
15695
+ "\u0175": "w\u0302",
15696
+ // ŵ = \^{w}
15697
+ "\u1E87": "w\u0307",
15698
+ // ẇ = \.{w}
15699
+ "\u1E98": "w\u030A",
15700
+ // ẘ = \r{w}
15701
+ "\u1E8D": "x\u0308",
15702
+ // ẍ = \"{x}
15703
+ "\u1E8B": "x\u0307",
15704
+ // ẋ = \.{x}
15705
+ "\xFD": "y\u0301",
15706
+ // ý = \'{y}
15707
+ "\u1EF3": "y\u0300",
15708
+ // ỳ = \`{y}
15709
+ "\xFF": "y\u0308",
15710
+ // ÿ = \"{y}
15711
+ "\u1EF9": "y\u0303",
15712
+ // ỹ = \~{y}
15713
+ "\u0233": "y\u0304",
15714
+ // ȳ = \={y}
15715
+ "\u0177": "y\u0302",
15716
+ // ŷ = \^{y}
15717
+ "\u1E8F": "y\u0307",
15718
+ // ẏ = \.{y}
15719
+ "\u1E99": "y\u030A",
15720
+ // ẙ = \r{y}
15721
+ "\u017A": "z\u0301",
15722
+ // ź = \'{z}
15723
+ "\u017E": "z\u030C",
15724
+ // ž = \v{z}
15725
+ "\u1E91": "z\u0302",
15726
+ // ẑ = \^{z}
15727
+ "\u017C": "z\u0307",
15728
+ // ż = \.{z}
15729
+ "\xC1": "A\u0301",
15730
+ // Á = \'{A}
15731
+ "\xC0": "A\u0300",
15732
+ // À = \`{A}
15733
+ "\xC4": "A\u0308",
15734
+ // Ä = \"{A}
15735
+ "\u01DE": "A\u0308\u0304",
15736
+ // Ǟ = \"\={A}
15737
+ "\xC3": "A\u0303",
15738
+ // Ã = \~{A}
15739
+ "\u0100": "A\u0304",
15740
+ // Ā = \={A}
15741
+ "\u0102": "A\u0306",
15742
+ // Ă = \u{A}
15743
+ "\u1EAE": "A\u0306\u0301",
15744
+ // Ắ = \u\'{A}
15745
+ "\u1EB0": "A\u0306\u0300",
15746
+ // Ằ = \u\`{A}
15747
+ "\u1EB4": "A\u0306\u0303",
15748
+ // Ẵ = \u\~{A}
15749
+ "\u01CD": "A\u030C",
15750
+ // Ǎ = \v{A}
15751
+ "\xC2": "A\u0302",
15752
+ // Â = \^{A}
15753
+ "\u1EA4": "A\u0302\u0301",
15754
+ // Ấ = \^\'{A}
15755
+ "\u1EA6": "A\u0302\u0300",
15756
+ // Ầ = \^\`{A}
15757
+ "\u1EAA": "A\u0302\u0303",
15758
+ // Ẫ = \^\~{A}
15759
+ "\u0226": "A\u0307",
15760
+ // Ȧ = \.{A}
15761
+ "\u01E0": "A\u0307\u0304",
15762
+ // Ǡ = \.\={A}
15763
+ "\xC5": "A\u030A",
15764
+ // Å = \r{A}
15765
+ "\u01FA": "A\u030A\u0301",
15766
+ // Ǻ = \r\'{A}
15767
+ "\u1E02": "B\u0307",
15768
+ // Ḃ = \.{B}
15769
+ "\u0106": "C\u0301",
15770
+ // Ć = \'{C}
15771
+ "\u010C": "C\u030C",
15772
+ // Č = \v{C}
15773
+ "\u0108": "C\u0302",
15774
+ // Ĉ = \^{C}
15775
+ "\u010A": "C\u0307",
15776
+ // Ċ = \.{C}
15777
+ "\u010E": "D\u030C",
15778
+ // Ď = \v{D}
15779
+ "\u1E0A": "D\u0307",
15780
+ // Ḋ = \.{D}
15781
+ "\xC9": "E\u0301",
15782
+ // É = \'{E}
15783
+ "\xC8": "E\u0300",
15784
+ // È = \`{E}
15785
+ "\xCB": "E\u0308",
15786
+ // Ë = \"{E}
15787
+ "\u1EBC": "E\u0303",
15788
+ // Ẽ = \~{E}
15789
+ "\u0112": "E\u0304",
15790
+ // Ē = \={E}
15791
+ "\u1E16": "E\u0304\u0301",
15792
+ // Ḗ = \=\'{E}
15793
+ "\u1E14": "E\u0304\u0300",
15794
+ // Ḕ = \=\`{E}
15795
+ "\u0114": "E\u0306",
15796
+ // Ĕ = \u{E}
15797
+ "\u011A": "E\u030C",
15798
+ // Ě = \v{E}
15799
+ "\xCA": "E\u0302",
15800
+ // Ê = \^{E}
15801
+ "\u1EBE": "E\u0302\u0301",
15802
+ // Ế = \^\'{E}
15803
+ "\u1EC0": "E\u0302\u0300",
15804
+ // Ề = \^\`{E}
15805
+ "\u1EC4": "E\u0302\u0303",
15806
+ // Ễ = \^\~{E}
15807
+ "\u0116": "E\u0307",
15808
+ // Ė = \.{E}
15809
+ "\u1E1E": "F\u0307",
15810
+ // Ḟ = \.{F}
15811
+ "\u01F4": "G\u0301",
15812
+ // Ǵ = \'{G}
15813
+ "\u1E20": "G\u0304",
15814
+ // Ḡ = \={G}
15815
+ "\u011E": "G\u0306",
15816
+ // Ğ = \u{G}
15817
+ "\u01E6": "G\u030C",
15818
+ // Ǧ = \v{G}
15819
+ "\u011C": "G\u0302",
15820
+ // Ĝ = \^{G}
15821
+ "\u0120": "G\u0307",
15822
+ // Ġ = \.{G}
15823
+ "\u1E26": "H\u0308",
15824
+ // Ḧ = \"{H}
15825
+ "\u021E": "H\u030C",
15826
+ // Ȟ = \v{H}
15827
+ "\u0124": "H\u0302",
15828
+ // Ĥ = \^{H}
15829
+ "\u1E22": "H\u0307",
15830
+ // Ḣ = \.{H}
15831
+ "\xCD": "I\u0301",
15832
+ // Í = \'{I}
15833
+ "\xCC": "I\u0300",
15834
+ // Ì = \`{I}
15835
+ "\xCF": "I\u0308",
15836
+ // Ï = \"{I}
15837
+ "\u1E2E": "I\u0308\u0301",
15838
+ // Ḯ = \"\'{I}
15839
+ "\u0128": "I\u0303",
15840
+ // Ĩ = \~{I}
15841
+ "\u012A": "I\u0304",
15842
+ // Ī = \={I}
15843
+ "\u012C": "I\u0306",
15844
+ // Ĭ = \u{I}
15845
+ "\u01CF": "I\u030C",
15846
+ // Ǐ = \v{I}
15847
+ "\xCE": "I\u0302",
15848
+ // Î = \^{I}
15849
+ "\u0130": "I\u0307",
15850
+ // İ = \.{I}
15851
+ "\u0134": "J\u0302",
15852
+ // Ĵ = \^{J}
15853
+ "\u1E30": "K\u0301",
15854
+ // Ḱ = \'{K}
15855
+ "\u01E8": "K\u030C",
15856
+ // Ǩ = \v{K}
15857
+ "\u0139": "L\u0301",
15858
+ // Ĺ = \'{L}
15859
+ "\u013D": "L\u030C",
15860
+ // Ľ = \v{L}
15861
+ "\u1E3E": "M\u0301",
15862
+ // Ḿ = \'{M}
15863
+ "\u1E40": "M\u0307",
15864
+ // Ṁ = \.{M}
15865
+ "\u0143": "N\u0301",
15866
+ // Ń = \'{N}
15867
+ "\u01F8": "N\u0300",
15868
+ // Ǹ = \`{N}
15869
+ "\xD1": "N\u0303",
15870
+ // Ñ = \~{N}
15871
+ "\u0147": "N\u030C",
15872
+ // Ň = \v{N}
15873
+ "\u1E44": "N\u0307",
15874
+ // Ṅ = \.{N}
15875
+ "\xD3": "O\u0301",
15876
+ // Ó = \'{O}
15877
+ "\xD2": "O\u0300",
15878
+ // Ò = \`{O}
15879
+ "\xD6": "O\u0308",
15880
+ // Ö = \"{O}
15881
+ "\u022A": "O\u0308\u0304",
15882
+ // Ȫ = \"\={O}
15883
+ "\xD5": "O\u0303",
15884
+ // Õ = \~{O}
15885
+ "\u1E4C": "O\u0303\u0301",
15886
+ // Ṍ = \~\'{O}
15887
+ "\u1E4E": "O\u0303\u0308",
15888
+ // Ṏ = \~\"{O}
15889
+ "\u022C": "O\u0303\u0304",
15890
+ // Ȭ = \~\={O}
15891
+ "\u014C": "O\u0304",
15892
+ // Ō = \={O}
15893
+ "\u1E52": "O\u0304\u0301",
15894
+ // Ṓ = \=\'{O}
15895
+ "\u1E50": "O\u0304\u0300",
15896
+ // Ṑ = \=\`{O}
15897
+ "\u014E": "O\u0306",
15898
+ // Ŏ = \u{O}
15899
+ "\u01D1": "O\u030C",
15900
+ // Ǒ = \v{O}
15901
+ "\xD4": "O\u0302",
15902
+ // Ô = \^{O}
15903
+ "\u1ED0": "O\u0302\u0301",
15904
+ // Ố = \^\'{O}
15905
+ "\u1ED2": "O\u0302\u0300",
15906
+ // Ồ = \^\`{O}
15907
+ "\u1ED6": "O\u0302\u0303",
15908
+ // Ỗ = \^\~{O}
15909
+ "\u022E": "O\u0307",
15910
+ // Ȯ = \.{O}
15911
+ "\u0230": "O\u0307\u0304",
15912
+ // Ȱ = \.\={O}
15913
+ "\u0150": "O\u030B",
15914
+ // Ő = \H{O}
15915
+ "\u1E54": "P\u0301",
15916
+ // Ṕ = \'{P}
15917
+ "\u1E56": "P\u0307",
15918
+ // Ṗ = \.{P}
15919
+ "\u0154": "R\u0301",
15920
+ // Ŕ = \'{R}
15921
+ "\u0158": "R\u030C",
15922
+ // Ř = \v{R}
15923
+ "\u1E58": "R\u0307",
15924
+ // Ṙ = \.{R}
15925
+ "\u015A": "S\u0301",
15926
+ // Ś = \'{S}
15927
+ "\u1E64": "S\u0301\u0307",
15928
+ // Ṥ = \'\.{S}
15929
+ "\u0160": "S\u030C",
15930
+ // Š = \v{S}
15931
+ "\u1E66": "S\u030C\u0307",
15932
+ // Ṧ = \v\.{S}
15933
+ "\u015C": "S\u0302",
15934
+ // Ŝ = \^{S}
15935
+ "\u1E60": "S\u0307",
15936
+ // Ṡ = \.{S}
15937
+ "\u0164": "T\u030C",
15938
+ // Ť = \v{T}
15939
+ "\u1E6A": "T\u0307",
15940
+ // Ṫ = \.{T}
15941
+ "\xDA": "U\u0301",
15942
+ // Ú = \'{U}
15943
+ "\xD9": "U\u0300",
15944
+ // Ù = \`{U}
15945
+ "\xDC": "U\u0308",
15946
+ // Ü = \"{U}
15947
+ "\u01D7": "U\u0308\u0301",
15948
+ // Ǘ = \"\'{U}
15949
+ "\u01DB": "U\u0308\u0300",
15950
+ // Ǜ = \"\`{U}
15951
+ "\u01D5": "U\u0308\u0304",
15952
+ // Ǖ = \"\={U}
15953
+ "\u01D9": "U\u0308\u030C",
15954
+ // Ǚ = \"\v{U}
15955
+ "\u0168": "U\u0303",
15956
+ // Ũ = \~{U}
15957
+ "\u1E78": "U\u0303\u0301",
15958
+ // Ṹ = \~\'{U}
15959
+ "\u016A": "U\u0304",
15960
+ // Ū = \={U}
15961
+ "\u1E7A": "U\u0304\u0308",
15962
+ // Ṻ = \=\"{U}
15963
+ "\u016C": "U\u0306",
15964
+ // Ŭ = \u{U}
15965
+ "\u01D3": "U\u030C",
15966
+ // Ǔ = \v{U}
15967
+ "\xDB": "U\u0302",
15968
+ // Û = \^{U}
15969
+ "\u016E": "U\u030A",
15970
+ // Ů = \r{U}
15971
+ "\u0170": "U\u030B",
15972
+ // Ű = \H{U}
15973
+ "\u1E7C": "V\u0303",
15974
+ // Ṽ = \~{V}
15975
+ "\u1E82": "W\u0301",
15976
+ // Ẃ = \'{W}
15977
+ "\u1E80": "W\u0300",
15978
+ // Ẁ = \`{W}
15979
+ "\u1E84": "W\u0308",
15980
+ // Ẅ = \"{W}
15981
+ "\u0174": "W\u0302",
15982
+ // Ŵ = \^{W}
15983
+ "\u1E86": "W\u0307",
15984
+ // Ẇ = \.{W}
15985
+ "\u1E8C": "X\u0308",
15986
+ // Ẍ = \"{X}
15987
+ "\u1E8A": "X\u0307",
15988
+ // Ẋ = \.{X}
15989
+ "\xDD": "Y\u0301",
15990
+ // Ý = \'{Y}
15991
+ "\u1EF2": "Y\u0300",
15992
+ // Ỳ = \`{Y}
15993
+ "\u0178": "Y\u0308",
15994
+ // Ÿ = \"{Y}
15995
+ "\u1EF8": "Y\u0303",
15996
+ // Ỹ = \~{Y}
15997
+ "\u0232": "Y\u0304",
15998
+ // Ȳ = \={Y}
15999
+ "\u0176": "Y\u0302",
16000
+ // Ŷ = \^{Y}
16001
+ "\u1E8E": "Y\u0307",
16002
+ // Ẏ = \.{Y}
16003
+ "\u0179": "Z\u0301",
16004
+ // Ź = \'{Z}
16005
+ "\u017D": "Z\u030C",
16006
+ // Ž = \v{Z}
16007
+ "\u1E90": "Z\u0302",
16008
+ // Ẑ = \^{Z}
16009
+ "\u017B": "Z\u0307",
16010
+ // Ż = \.{Z}
16011
+ "\u03AC": "\u03B1\u0301",
16012
+ // ά = \'{α}
16013
+ "\u1F70": "\u03B1\u0300",
16014
+ // ὰ = \`{α}
16015
+ "\u1FB1": "\u03B1\u0304",
16016
+ // ᾱ = \={α}
16017
+ "\u1FB0": "\u03B1\u0306",
16018
+ // ᾰ = \u{α}
16019
+ "\u03AD": "\u03B5\u0301",
16020
+ // έ = \'{ε}
16021
+ "\u1F72": "\u03B5\u0300",
16022
+ // ὲ = \`{ε}
16023
+ "\u03AE": "\u03B7\u0301",
16024
+ // ή = \'{η}
16025
+ "\u1F74": "\u03B7\u0300",
16026
+ // ὴ = \`{η}
16027
+ "\u03AF": "\u03B9\u0301",
16028
+ // ί = \'{ι}
16029
+ "\u1F76": "\u03B9\u0300",
16030
+ // ὶ = \`{ι}
16031
+ "\u03CA": "\u03B9\u0308",
16032
+ // ϊ = \"{ι}
16033
+ "\u0390": "\u03B9\u0308\u0301",
16034
+ // ΐ = \"\'{ι}
16035
+ "\u1FD2": "\u03B9\u0308\u0300",
16036
+ // ῒ = \"\`{ι}
16037
+ "\u1FD1": "\u03B9\u0304",
16038
+ // ῑ = \={ι}
16039
+ "\u1FD0": "\u03B9\u0306",
16040
+ // ῐ = \u{ι}
16041
+ "\u03CC": "\u03BF\u0301",
16042
+ // ό = \'{ο}
16043
+ "\u1F78": "\u03BF\u0300",
16044
+ // ὸ = \`{ο}
16045
+ "\u03CD": "\u03C5\u0301",
16046
+ // ύ = \'{υ}
16047
+ "\u1F7A": "\u03C5\u0300",
16048
+ // ὺ = \`{υ}
16049
+ "\u03CB": "\u03C5\u0308",
16050
+ // ϋ = \"{υ}
16051
+ "\u03B0": "\u03C5\u0308\u0301",
16052
+ // ΰ = \"\'{υ}
16053
+ "\u1FE2": "\u03C5\u0308\u0300",
16054
+ // ῢ = \"\`{υ}
16055
+ "\u1FE1": "\u03C5\u0304",
16056
+ // ῡ = \={υ}
16057
+ "\u1FE0": "\u03C5\u0306",
16058
+ // ῠ = \u{υ}
16059
+ "\u03CE": "\u03C9\u0301",
16060
+ // ώ = \'{ω}
16061
+ "\u1F7C": "\u03C9\u0300",
16062
+ // ὼ = \`{ω}
16063
+ "\u038E": "\u03A5\u0301",
16064
+ // Ύ = \'{Υ}
16065
+ "\u1FEA": "\u03A5\u0300",
16066
+ // Ὺ = \`{Υ}
16067
+ "\u03AB": "\u03A5\u0308",
16068
+ // Ϋ = \"{Υ}
16069
+ "\u1FE9": "\u03A5\u0304",
16070
+ // Ῡ = \={Υ}
16071
+ "\u1FE8": "\u03A5\u0306",
16072
+ // Ῠ = \u{Υ}
16073
+ "\u038F": "\u03A9\u0301",
16074
+ // Ώ = \'{Ω}
16075
+ "\u1FFA": "\u03A9\u0300" // Ὼ = \`{Ω}
16076
+
16077
+ });
15598
16078
  // CONCATENATED MODULE: ./src/Parser.js
15599
16079
  /* eslint no-constant-condition:0 */
15600
16080
 
@@ -15606,373 +16086,10 @@ function () {
15606
16086
 
15607
16087
 
15608
16088
 
15609
- // Pre-evaluate both modules as unicodeSymbols require String.normalize()
15610
16089
 
15611
- var unicodeAccents = {
15612
- "́": {
15613
- "text": "\\'",
15614
- "math": "\\acute"
15615
- },
15616
- "̀": {
15617
- "text": "\\`",
15618
- "math": "\\grave"
15619
- },
15620
- "̈": {
15621
- "text": "\\\"",
15622
- "math": "\\ddot"
15623
- },
15624
- "̃": {
15625
- "text": "\\~",
15626
- "math": "\\tilde"
15627
- },
15628
- "̄": {
15629
- "text": "\\=",
15630
- "math": "\\bar"
15631
- },
15632
- "̆": {
15633
- "text": "\\u",
15634
- "math": "\\breve"
15635
- },
15636
- "̌": {
15637
- "text": "\\v",
15638
- "math": "\\check"
15639
- },
15640
- "̂": {
15641
- "text": "\\^",
15642
- "math": "\\hat"
15643
- },
15644
- "̇": {
15645
- "text": "\\.",
15646
- "math": "\\dot"
15647
- },
15648
- "̊": {
15649
- "text": "\\r",
15650
- "math": "\\mathring"
15651
- },
15652
- "̋": {
15653
- "text": "\\H"
15654
- }
15655
- };
15656
- var unicodeSymbols = {
15657
- "á": "á",
15658
- "à": "à",
15659
- "ä": "ä",
15660
- "ǟ": "ǟ",
15661
- "ã": "ã",
15662
- "ā": "ā",
15663
- "ă": "ă",
15664
- "ắ": "ắ",
15665
- "ằ": "ằ",
15666
- "ẵ": "ẵ",
15667
- "ǎ": "ǎ",
15668
- "â": "â",
15669
- "ấ": "ấ",
15670
- "ầ": "ầ",
15671
- "ẫ": "ẫ",
15672
- "ȧ": "ȧ",
15673
- "ǡ": "ǡ",
15674
- "å": "å",
15675
- "ǻ": "ǻ",
15676
- "ḃ": "ḃ",
15677
- "ć": "ć",
15678
- "č": "č",
15679
- "ĉ": "ĉ",
15680
- "ċ": "ċ",
15681
- "ď": "ď",
15682
- "ḋ": "ḋ",
15683
- "é": "é",
15684
- "è": "è",
15685
- "ë": "ë",
15686
- "ẽ": "ẽ",
15687
- "ē": "ē",
15688
- "ḗ": "ḗ",
15689
- "ḕ": "ḕ",
15690
- "ĕ": "ĕ",
15691
- "ě": "ě",
15692
- "ê": "ê",
15693
- "ế": "ế",
15694
- "ề": "ề",
15695
- "ễ": "ễ",
15696
- "ė": "ė",
15697
- "ḟ": "ḟ",
15698
- "ǵ": "ǵ",
15699
- "ḡ": "ḡ",
15700
- "ğ": "ğ",
15701
- "ǧ": "ǧ",
15702
- "ĝ": "ĝ",
15703
- "ġ": "ġ",
15704
- "ḧ": "ḧ",
15705
- "ȟ": "ȟ",
15706
- "ĥ": "ĥ",
15707
- "ḣ": "ḣ",
15708
- "í": "í",
15709
- "ì": "ì",
15710
- "ï": "ï",
15711
- "ḯ": "ḯ",
15712
- "ĩ": "ĩ",
15713
- "ī": "ī",
15714
- "ĭ": "ĭ",
15715
- "ǐ": "ǐ",
15716
- "î": "î",
15717
- "ǰ": "ǰ",
15718
- "ĵ": "ĵ",
15719
- "ḱ": "ḱ",
15720
- "ǩ": "ǩ",
15721
- "ĺ": "ĺ",
15722
- "ľ": "ľ",
15723
- "ḿ": "ḿ",
15724
- "ṁ": "ṁ",
15725
- "ń": "ń",
15726
- "ǹ": "ǹ",
15727
- "ñ": "ñ",
15728
- "ň": "ň",
15729
- "ṅ": "ṅ",
15730
- "ó": "ó",
15731
- "ò": "ò",
15732
- "ö": "ö",
15733
- "ȫ": "ȫ",
15734
- "õ": "õ",
15735
- "ṍ": "ṍ",
15736
- "ṏ": "ṏ",
15737
- "ȭ": "ȭ",
15738
- "ō": "ō",
15739
- "ṓ": "ṓ",
15740
- "ṑ": "ṑ",
15741
- "ŏ": "ŏ",
15742
- "ǒ": "ǒ",
15743
- "ô": "ô",
15744
- "ố": "ố",
15745
- "ồ": "ồ",
15746
- "ỗ": "ỗ",
15747
- "ȯ": "ȯ",
15748
- "ȱ": "ȱ",
15749
- "ő": "ő",
15750
- "ṕ": "ṕ",
15751
- "ṗ": "ṗ",
15752
- "ŕ": "ŕ",
15753
- "ř": "ř",
15754
- "ṙ": "ṙ",
15755
- "ś": "ś",
15756
- "ṥ": "ṥ",
15757
- "š": "š",
15758
- "ṧ": "ṧ",
15759
- "ŝ": "ŝ",
15760
- "ṡ": "ṡ",
15761
- "ẗ": "ẗ",
15762
- "ť": "ť",
15763
- "ṫ": "ṫ",
15764
- "ú": "ú",
15765
- "ù": "ù",
15766
- "ü": "ü",
15767
- "ǘ": "ǘ",
15768
- "ǜ": "ǜ",
15769
- "ǖ": "ǖ",
15770
- "ǚ": "ǚ",
15771
- "ũ": "ũ",
15772
- "ṹ": "ṹ",
15773
- "ū": "ū",
15774
- "ṻ": "ṻ",
15775
- "ŭ": "ŭ",
15776
- "ǔ": "ǔ",
15777
- "û": "û",
15778
- "ů": "ů",
15779
- "ű": "ű",
15780
- "ṽ": "ṽ",
15781
- "ẃ": "ẃ",
15782
- "ẁ": "ẁ",
15783
- "ẅ": "ẅ",
15784
- "ŵ": "ŵ",
15785
- "ẇ": "ẇ",
15786
- "ẘ": "ẘ",
15787
- "ẍ": "ẍ",
15788
- "ẋ": "ẋ",
15789
- "ý": "ý",
15790
- "ỳ": "ỳ",
15791
- "ÿ": "ÿ",
15792
- "ỹ": "ỹ",
15793
- "ȳ": "ȳ",
15794
- "ŷ": "ŷ",
15795
- "ẏ": "ẏ",
15796
- "ẙ": "ẙ",
15797
- "ź": "ź",
15798
- "ž": "ž",
15799
- "ẑ": "ẑ",
15800
- "ż": "ż",
15801
- "Á": "Á",
15802
- "À": "À",
15803
- "Ä": "Ä",
15804
- "Ǟ": "Ǟ",
15805
- "Ã": "Ã",
15806
- "Ā": "Ā",
15807
- "Ă": "Ă",
15808
- "Ắ": "Ắ",
15809
- "Ằ": "Ằ",
15810
- "Ẵ": "Ẵ",
15811
- "Ǎ": "Ǎ",
15812
- "Â": "Â",
15813
- "Ấ": "Ấ",
15814
- "Ầ": "Ầ",
15815
- "Ẫ": "Ẫ",
15816
- "Ȧ": "Ȧ",
15817
- "Ǡ": "Ǡ",
15818
- "Å": "Å",
15819
- "Ǻ": "Ǻ",
15820
- "Ḃ": "Ḃ",
15821
- "Ć": "Ć",
15822
- "Č": "Č",
15823
- "Ĉ": "Ĉ",
15824
- "Ċ": "Ċ",
15825
- "Ď": "Ď",
15826
- "Ḋ": "Ḋ",
15827
- "É": "É",
15828
- "È": "È",
15829
- "Ë": "Ë",
15830
- "Ẽ": "Ẽ",
15831
- "Ē": "Ē",
15832
- "Ḗ": "Ḗ",
15833
- "Ḕ": "Ḕ",
15834
- "Ĕ": "Ĕ",
15835
- "Ě": "Ě",
15836
- "Ê": "Ê",
15837
- "Ế": "Ế",
15838
- "Ề": "Ề",
15839
- "Ễ": "Ễ",
15840
- "Ė": "Ė",
15841
- "Ḟ": "Ḟ",
15842
- "Ǵ": "Ǵ",
15843
- "Ḡ": "Ḡ",
15844
- "Ğ": "Ğ",
15845
- "Ǧ": "Ǧ",
15846
- "Ĝ": "Ĝ",
15847
- "Ġ": "Ġ",
15848
- "Ḧ": "Ḧ",
15849
- "Ȟ": "Ȟ",
15850
- "Ĥ": "Ĥ",
15851
- "Ḣ": "Ḣ",
15852
- "Í": "Í",
15853
- "Ì": "Ì",
15854
- "Ï": "Ï",
15855
- "Ḯ": "Ḯ",
15856
- "Ĩ": "Ĩ",
15857
- "Ī": "Ī",
15858
- "Ĭ": "Ĭ",
15859
- "Ǐ": "Ǐ",
15860
- "Î": "Î",
15861
- "İ": "İ",
15862
- "Ĵ": "Ĵ",
15863
- "Ḱ": "Ḱ",
15864
- "Ǩ": "Ǩ",
15865
- "Ĺ": "Ĺ",
15866
- "Ľ": "Ľ",
15867
- "Ḿ": "Ḿ",
15868
- "Ṁ": "Ṁ",
15869
- "Ń": "Ń",
15870
- "Ǹ": "Ǹ",
15871
- "Ñ": "Ñ",
15872
- "Ň": "Ň",
15873
- "Ṅ": "Ṅ",
15874
- "Ó": "Ó",
15875
- "Ò": "Ò",
15876
- "Ö": "Ö",
15877
- "Ȫ": "Ȫ",
15878
- "Õ": "Õ",
15879
- "Ṍ": "Ṍ",
15880
- "Ṏ": "Ṏ",
15881
- "Ȭ": "Ȭ",
15882
- "Ō": "Ō",
15883
- "Ṓ": "Ṓ",
15884
- "Ṑ": "Ṑ",
15885
- "Ŏ": "Ŏ",
15886
- "Ǒ": "Ǒ",
15887
- "Ô": "Ô",
15888
- "Ố": "Ố",
15889
- "Ồ": "Ồ",
15890
- "Ỗ": "Ỗ",
15891
- "Ȯ": "Ȯ",
15892
- "Ȱ": "Ȱ",
15893
- "Ő": "Ő",
15894
- "Ṕ": "Ṕ",
15895
- "Ṗ": "Ṗ",
15896
- "Ŕ": "Ŕ",
15897
- "Ř": "Ř",
15898
- "Ṙ": "Ṙ",
15899
- "Ś": "Ś",
15900
- "Ṥ": "Ṥ",
15901
- "Š": "Š",
15902
- "Ṧ": "Ṧ",
15903
- "Ŝ": "Ŝ",
15904
- "Ṡ": "Ṡ",
15905
- "Ť": "Ť",
15906
- "Ṫ": "Ṫ",
15907
- "Ú": "Ú",
15908
- "Ù": "Ù",
15909
- "Ü": "Ü",
15910
- "Ǘ": "Ǘ",
15911
- "Ǜ": "Ǜ",
15912
- "Ǖ": "Ǖ",
15913
- "Ǚ": "Ǚ",
15914
- "Ũ": "Ũ",
15915
- "Ṹ": "Ṹ",
15916
- "Ū": "Ū",
15917
- "Ṻ": "Ṻ",
15918
- "Ŭ": "Ŭ",
15919
- "Ǔ": "Ǔ",
15920
- "Û": "Û",
15921
- "Ů": "Ů",
15922
- "Ű": "Ű",
15923
- "Ṽ": "Ṽ",
15924
- "Ẃ": "Ẃ",
15925
- "Ẁ": "Ẁ",
15926
- "Ẅ": "Ẅ",
15927
- "Ŵ": "Ŵ",
15928
- "Ẇ": "Ẇ",
15929
- "Ẍ": "Ẍ",
15930
- "Ẋ": "Ẋ",
15931
- "Ý": "Ý",
15932
- "Ỳ": "Ỳ",
15933
- "Ÿ": "Ÿ",
15934
- "Ỹ": "Ỹ",
15935
- "Ȳ": "Ȳ",
15936
- "Ŷ": "Ŷ",
15937
- "Ẏ": "Ẏ",
15938
- "Ź": "Ź",
15939
- "Ž": "Ž",
15940
- "Ẑ": "Ẑ",
15941
- "Ż": "Ż",
15942
- "ά": "ά",
15943
- "ὰ": "ὰ",
15944
- "ᾱ": "ᾱ",
15945
- "ᾰ": "ᾰ",
15946
- "έ": "έ",
15947
- "ὲ": "ὲ",
15948
- "ή": "ή",
15949
- "ὴ": "ὴ",
15950
- "ί": "ί",
15951
- "ὶ": "ὶ",
15952
- "ϊ": "ϊ",
15953
- "ΐ": "ΐ",
15954
- "ῒ": "ῒ",
15955
- "ῑ": "ῑ",
15956
- "ῐ": "ῐ",
15957
- "ό": "ό",
15958
- "ὸ": "ὸ",
15959
- "ύ": "ύ",
15960
- "ὺ": "ὺ",
15961
- "ϋ": "ϋ",
15962
- "ΰ": "ΰ",
15963
- "ῢ": "ῢ",
15964
- "ῡ": "ῡ",
15965
- "ῠ": "ῠ",
15966
- "ώ": "ώ",
15967
- "ὼ": "ὼ",
15968
- "Ύ": "Ύ",
15969
- "Ὺ": "Ὺ",
15970
- "Ϋ": "Ϋ",
15971
- "Ῡ": "Ῡ",
15972
- "Ῠ": "Ῠ",
15973
- "Ώ": "Ώ",
15974
- "Ὼ": "Ὼ"
15975
- };
16090
+
16091
+
16092
+
15976
16093
 
15977
16094
  /**
15978
16095
  * This file contains the parser used to parse out a TeX expression from the
@@ -16080,15 +16197,12 @@ function () {
16080
16197
  ;
16081
16198
 
16082
16199
  _proto.parse = function parse() {
16083
- if (!this.settings.globalGroup) {
16084
- // Create a group namespace for the math expression.
16085
- // (LaTeX creates a new group for every $...$, $$...$$, \[...\].)
16086
- this.gullet.beginGroup();
16087
- } // Use old \color behavior (same as LaTeX's \textcolor) if requested.
16200
+ // Create a group namespace for the math expression.
16201
+ // (LaTeX creates a new group for every $...$, $$...$$, \[...\].)
16202
+ this.gullet.beginGroup(); // Use old \color behavior (same as LaTeX's \textcolor) if requested.
16088
16203
  // We do this within the group for the math expression, so it doesn't
16089
16204
  // pollute settings.macros.
16090
16205
 
16091
-
16092
16206
  if (this.settings.colorIsTextColor) {
16093
16207
  this.gullet.macros.set("\\color", "\\textcolor");
16094
16208
  } // Try to parse the input
@@ -16098,10 +16212,7 @@ function () {
16098
16212
 
16099
16213
  this.expect("EOF"); // End the group namespace for the expression
16100
16214
 
16101
- if (!this.settings.globalGroup) {
16102
- this.gullet.endGroup();
16103
- }
16104
-
16215
+ this.gullet.endGroup();
16105
16216
  return parse;
16106
16217
  };
16107
16218
 
@@ -16133,8 +16244,6 @@ function () {
16133
16244
 
16134
16245
  if (!atom) {
16135
16246
  break;
16136
- } else if (atom.type === "internal") {
16137
- continue;
16138
16247
  }
16139
16248
 
16140
16249
  body.push(atom);
@@ -16160,13 +16269,15 @@ function () {
16160
16269
  var funcName;
16161
16270
 
16162
16271
  for (var i = 0; i < body.length; i++) {
16163
- if (body[i].type === "infix") {
16272
+ var node = checkNodeType(body[i], "infix");
16273
+
16274
+ if (node) {
16164
16275
  if (overIndex !== -1) {
16165
- throw new src_ParseError("only one infix operator per group", body[i].token);
16276
+ throw new src_ParseError("only one infix operator per group", node.token);
16166
16277
  }
16167
16278
 
16168
16279
  overIndex = i;
16169
- funcName = body[i].replaceWith;
16280
+ funcName = node.replaceWith;
16170
16281
  }
16171
16282
  }
16172
16283
 
@@ -16196,15 +16307,15 @@ function () {
16196
16307
  };
16197
16308
  }
16198
16309
 
16199
- var node;
16310
+ var _node;
16200
16311
 
16201
16312
  if (funcName === "\\\\abovefrac") {
16202
- node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);
16313
+ _node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);
16203
16314
  } else {
16204
- node = this.callFunction(funcName, [numerNode, denomNode], []);
16315
+ _node = this.callFunction(funcName, [numerNode, denomNode], []);
16205
16316
  }
16206
16317
 
16207
- return [node];
16318
+ return [_node];
16208
16319
  } else {
16209
16320
  return body;
16210
16321
  }
@@ -16282,16 +16393,22 @@ function () {
16282
16393
 
16283
16394
  if (lex.text === "\\limits" || lex.text === "\\nolimits") {
16284
16395
  // We got a limit control
16285
- if (base && base.type === "op") {
16286
- var limits = lex.text === "\\limits";
16287
- base.limits = limits;
16288
- base.alwaysHandleSupSub = true;
16289
- } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub) {
16290
- var _limits = lex.text === "\\limits";
16396
+ var opNode = checkNodeType(base, "op");
16291
16397
 
16292
- base.limits = _limits;
16398
+ if (opNode) {
16399
+ var limits = lex.text === "\\limits";
16400
+ opNode.limits = limits;
16401
+ opNode.alwaysHandleSupSub = true;
16293
16402
  } else {
16294
- throw new src_ParseError("Limit controls must follow a math operator", lex);
16403
+ opNode = checkNodeType(base, "operatorname");
16404
+
16405
+ if (opNode && opNode.alwaysHandleSupSub) {
16406
+ var _limits = lex.text === "\\limits";
16407
+
16408
+ opNode.limits = _limits;
16409
+ } else {
16410
+ throw new src_ParseError("Limit controls must follow a math operator", lex);
16411
+ }
16295
16412
  }
16296
16413
 
16297
16414
  this.consume();
@@ -17209,7 +17326,7 @@ var katex_renderToHTMLTree = function renderToHTMLTree(expression, options) {
17209
17326
  /**
17210
17327
  * Current KaTeX version
17211
17328
  */
17212
- version: "0.12.0",
17329
+ version: "0.11.1",
17213
17330
 
17214
17331
  /**
17215
17332
  * Renders the given LaTeX into an HTML+MathML combination, and adds