katex 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/LICENSE +1 -1
  3. package/README.md +6 -6
  4. package/cli.js +0 -0
  5. package/contrib/auto-render/auto-render.js +12 -3
  6. package/contrib/copy-tex/README.md +3 -5
  7. package/contrib/mathtex-script-type/README.md +12 -14
  8. package/contrib/mhchem/README.md +3 -1
  9. package/contrib/render-a11y-string/render-a11y-string.js +712 -0
  10. package/contrib/render-a11y-string/test/render-a11y-string-spec.js +526 -0
  11. package/dist/README.md +6 -6
  12. package/dist/contrib/auto-render.js +14 -3
  13. package/dist/contrib/auto-render.min.js +1 -1
  14. package/dist/contrib/auto-render.mjs +14 -3
  15. package/dist/contrib/mhchem.min.js +1 -1
  16. package/dist/contrib/render-a11y-string.js +870 -0
  17. package/dist/contrib/render-a11y-string.min.js +1 -0
  18. package/dist/contrib/render-a11y-string.mjs +753 -0
  19. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  20. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  21. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  22. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  23. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  24. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  25. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  26. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  27. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  28. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  29. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  30. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  31. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  32. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  33. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  34. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  35. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  36. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  37. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  38. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  39. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  40. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  41. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  42. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  43. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  44. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  45. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  46. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  47. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  48. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  49. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  50. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  51. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  52. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  53. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  54. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  55. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  56. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  57. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  58. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  59. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  60. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  61. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  62. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  63. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  64. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  65. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  66. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  67. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  68. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  69. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  70. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  71. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  72. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  73. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  74. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  75. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  76. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  77. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  78. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  79. package/dist/katex.css +34 -10
  80. package/dist/katex.js +2906 -2115
  81. package/dist/katex.min.css +1 -1
  82. package/dist/katex.min.js +1 -1
  83. package/dist/katex.mjs +2809 -2020
  84. package/package.json +12 -11
  85. package/src/Lexer.js +1 -0
  86. package/src/MacroExpander.js +39 -10
  87. package/src/Options.js +15 -75
  88. package/src/Parser.js +152 -115
  89. package/src/Settings.js +70 -7
  90. package/src/Token.js +2 -0
  91. package/src/buildCommon.js +24 -90
  92. package/src/buildHTML.js +31 -31
  93. package/src/buildMathML.js +52 -9
  94. package/src/buildTree.js +13 -6
  95. package/src/defineFunction.js +7 -22
  96. package/src/delimiter.js +66 -27
  97. package/src/domTree.js +71 -4
  98. package/src/environments/array.js +235 -25
  99. package/src/fontMetrics.js +11 -2
  100. package/src/functions/accent.js +9 -9
  101. package/src/functions/accentunder.js +2 -2
  102. package/src/functions/arrow.js +15 -5
  103. package/src/functions/color.js +9 -38
  104. package/src/functions/def.js +184 -0
  105. package/src/functions/delimsizing.js +32 -8
  106. package/src/functions/enclose.js +33 -6
  107. package/src/functions/font.js +4 -1
  108. package/src/functions/genfrac.js +39 -27
  109. package/src/functions/horizBrace.js +6 -7
  110. package/src/functions/href.js +16 -0
  111. package/src/functions/html.js +102 -0
  112. package/src/functions/includegraphics.js +153 -0
  113. package/src/functions/lap.js +4 -7
  114. package/src/functions/math.js +1 -5
  115. package/src/functions/mclass.js +41 -2
  116. package/src/functions/op.js +27 -111
  117. package/src/functions/operatorname.js +136 -92
  118. package/src/functions/ordgroup.js +1 -1
  119. package/src/functions/overline.js +3 -2
  120. package/src/functions/phantom.js +5 -2
  121. package/src/functions/raisebox.js +4 -16
  122. package/src/functions/rule.js +20 -9
  123. package/src/functions/styling.js +0 -9
  124. package/src/functions/supsub.js +27 -7
  125. package/src/functions/symbolsOp.js +4 -0
  126. package/src/functions/tag.js +20 -4
  127. package/src/functions/text.js +4 -3
  128. package/src/functions/underline.js +3 -2
  129. package/src/functions/utils/assembleSupSub.js +110 -0
  130. package/src/functions.js +3 -0
  131. package/src/katex.less +45 -9
  132. package/src/macros.js +259 -98
  133. package/src/mathMLTree.js +6 -4
  134. package/src/parseNode.js +37 -57
  135. package/src/stretchy.js +3 -1
  136. package/src/svgGeometry.js +136 -44
  137. package/src/symbols.js +52 -69
  138. package/src/tree.js +2 -2
  139. package/src/types.js +2 -1
  140. package/src/unicodeAccents.js +3 -1
  141. package/src/unicodeSymbols.js +30 -321
  142. package/src/utils.js +10 -0
  143. package/src/wide-character.js +2 -2
  144. package/src/unicodeMake.js +0 -70
package/src/symbols.js CHANGED
@@ -202,11 +202,12 @@ defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons", true);
202
202
 
203
203
  // AMS Negated Binary Relations
204
204
  defineSymbol(math, ams, rel, "\u226e", "\\nless", true);
205
- defineSymbol(math, ams, rel, "\ue010", "\\nleqslant");
206
- defineSymbol(math, ams, rel, "\ue011", "\\nleqq");
205
+ // Symbol names preceeded by "@" each have a corresponding macro.
206
+ defineSymbol(math, ams, rel, "\ue010", "\\@nleqslant");
207
+ defineSymbol(math, ams, rel, "\ue011", "\\@nleqq");
207
208
  defineSymbol(math, ams, rel, "\u2a87", "\\lneq", true);
208
209
  defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true);
209
- defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq");
210
+ defineSymbol(math, ams, rel, "\ue00c", "\\@lvertneqq");
210
211
  defineSymbol(math, ams, rel, "\u22e6", "\\lnsim", true);
211
212
  defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox", true);
212
213
  defineSymbol(math, ams, rel, "\u2280", "\\nprec", true);
@@ -215,22 +216,22 @@ defineSymbol(math, ams, rel, "\u22e0", "\\npreceq", true);
215
216
  defineSymbol(math, ams, rel, "\u22e8", "\\precnsim", true);
216
217
  defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox", true);
217
218
  defineSymbol(math, ams, rel, "\u2241", "\\nsim", true);
218
- defineSymbol(math, ams, rel, "\ue006", "\\nshortmid");
219
+ defineSymbol(math, ams, rel, "\ue006", "\\@nshortmid");
219
220
  defineSymbol(math, ams, rel, "\u2224", "\\nmid", true);
220
221
  defineSymbol(math, ams, rel, "\u22ac", "\\nvdash", true);
221
222
  defineSymbol(math, ams, rel, "\u22ad", "\\nvDash", true);
222
223
  defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
223
224
  defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq", true);
224
225
  defineSymbol(math, ams, rel, "\u228a", "\\subsetneq", true);
225
- defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq");
226
+ defineSymbol(math, ams, rel, "\ue01a", "\\@varsubsetneq");
226
227
  defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq", true);
227
- defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq");
228
+ defineSymbol(math, ams, rel, "\ue017", "\\@varsubsetneqq");
228
229
  defineSymbol(math, ams, rel, "\u226f", "\\ngtr", true);
229
- defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant");
230
- defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq");
230
+ defineSymbol(math, ams, rel, "\ue00f", "\\@ngeqslant");
231
+ defineSymbol(math, ams, rel, "\ue00e", "\\@ngeqq");
231
232
  defineSymbol(math, ams, rel, "\u2a88", "\\gneq", true);
232
233
  defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true);
233
- defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq");
234
+ defineSymbol(math, ams, rel, "\ue00d", "\\@gvertneqq");
234
235
  defineSymbol(math, ams, rel, "\u22e7", "\\gnsim", true);
235
236
  defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox", true);
236
237
  defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true);
@@ -240,20 +241,20 @@ defineSymbol(math, ams, rel, "\u22e9", "\\succnsim", true);
240
241
  defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox", true);
241
242
  // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym.
242
243
  defineSymbol(math, ams, rel, "\u2246", "\\ncong", true);
243
- defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel");
244
+ defineSymbol(math, ams, rel, "\ue007", "\\@nshortparallel");
244
245
  defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true);
245
246
  defineSymbol(math, ams, rel, "\u22af", "\\nVDash", true);
246
247
  defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
247
248
  defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq", true);
248
- defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq");
249
+ defineSymbol(math, ams, rel, "\ue018", "\\@nsupseteqq");
249
250
  defineSymbol(math, ams, rel, "\u228b", "\\supsetneq", true);
250
- defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq");
251
+ defineSymbol(math, ams, rel, "\ue01b", "\\@varsupsetneq");
251
252
  defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq", true);
252
- defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq");
253
+ defineSymbol(math, ams, rel, "\ue019", "\\@varsupsetneqq");
253
254
  defineSymbol(math, ams, rel, "\u22ae", "\\nVdash", true);
254
255
  defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq", true);
255
256
  defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq", true);
256
- defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq");
257
+ defineSymbol(math, ams, rel, "\ue016", "\\@nsubseteqq");
257
258
  defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
258
259
  defineSymbol(math, ams, bin, "\u22b5", "\\unrhd");
259
260
 
@@ -278,7 +279,6 @@ defineSymbol(math, ams, textord, "\u2204", "\\nexists");
278
279
  defineSymbol(math, ams, textord, "\u2127", "\\mho");
279
280
  defineSymbol(math, ams, textord, "\u2132", "\\Finv", true);
280
281
  defineSymbol(math, ams, textord, "\u2141", "\\Game", true);
281
- defineSymbol(math, ams, textord, "\u006b", "\\Bbbk");
282
282
  defineSymbol(math, ams, textord, "\u2035", "\\backprime");
283
283
  defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
284
284
  defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
@@ -287,8 +287,9 @@ defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge");
287
287
  defineSymbol(math, ams, textord, "\u2605", "\\bigstar");
288
288
  defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true);
289
289
  defineSymbol(math, ams, textord, "\u2201", "\\complement", true);
290
- // unicode-math maps U+F0 (ð) to \matheth. We map to AMS function \eth
290
+ // unicode-math maps U+F0 to \matheth. We map to AMS function \eth
291
291
  defineSymbol(math, ams, textord, "\u00f0", "\\eth", true);
292
+ defineSymbol(text, main, textord, "\u00f0", "\u00f0");
292
293
  defineSymbol(math, ams, textord, "\u2571", "\\diagup");
293
294
  defineSymbol(math, ams, textord, "\u2572", "\\diagdown");
294
295
  defineSymbol(math, ams, textord, "\u25a1", "\\square");
@@ -306,14 +307,14 @@ defineSymbol(math, ams, textord, "\u2138", "\\daleth", true);
306
307
  defineSymbol(math, ams, textord, "\u2137", "\\gimel", true);
307
308
 
308
309
  // AMS Greek
309
- defineSymbol(math, ams, textord, "\u03dd", "\\digamma");
310
+ defineSymbol(math, ams, textord, "\u03dd", "\\digamma", true);
310
311
  defineSymbol(math, ams, textord, "\u03f0", "\\varkappa");
311
312
 
312
313
  // AMS Delimiters
313
- defineSymbol(math, ams, open, "\u250c", "\\ulcorner", true);
314
- defineSymbol(math, ams, close, "\u2510", "\\urcorner", true);
315
- defineSymbol(math, ams, open, "\u2514", "\\llcorner", true);
316
- defineSymbol(math, ams, close, "\u2518", "\\lrcorner", true);
314
+ defineSymbol(math, ams, open, "\u250c", "\\@ulcorner", true);
315
+ defineSymbol(math, ams, close, "\u2510", "\\@urcorner", true);
316
+ defineSymbol(math, ams, open, "\u2514", "\\@llcorner", true);
317
+ defineSymbol(math, ams, close, "\u2518", "\\@lrcorner", true);
317
318
 
318
319
  // AMS Binary Relations
319
320
  defineSymbol(math, ams, rel, "\u2266", "\\leqq", true);
@@ -545,28 +546,22 @@ defineSymbol(math, main, bin, "\u2228", "\\lor");
545
546
  defineSymbol(math, main, bin, "\u2227", "\\wedge", true);
546
547
  defineSymbol(math, main, bin, "\u2228", "\\vee", true);
547
548
  defineSymbol(math, main, textord, "\u221a", "\\surd");
548
- defineSymbol(math, main, open, "(", "(");
549
- defineSymbol(math, main, open, "[", "[");
550
549
  defineSymbol(math, main, open, "\u27e8", "\\langle", true);
551
550
  defineSymbol(math, main, open, "\u2223", "\\lvert");
552
551
  defineSymbol(math, main, open, "\u2225", "\\lVert");
553
- defineSymbol(math, main, close, ")", ")");
554
- defineSymbol(math, main, close, "]", "]");
555
552
  defineSymbol(math, main, close, "?", "?");
556
553
  defineSymbol(math, main, close, "!", "!");
557
554
  defineSymbol(math, main, close, "\u27e9", "\\rangle", true);
558
555
  defineSymbol(math, main, close, "\u2223", "\\rvert");
559
556
  defineSymbol(math, main, close, "\u2225", "\\rVert");
560
557
  defineSymbol(math, main, rel, "=", "=");
561
- defineSymbol(math, main, rel, "<", "<");
562
- defineSymbol(math, main, rel, ">", ">");
563
558
  defineSymbol(math, main, rel, ":", ":");
564
559
  defineSymbol(math, main, rel, "\u2248", "\\approx", true);
565
560
  defineSymbol(math, main, rel, "\u2245", "\\cong", true);
566
561
  defineSymbol(math, main, rel, "\u2265", "\\ge");
567
562
  defineSymbol(math, main, rel, "\u2265", "\\geq", true);
568
563
  defineSymbol(math, main, rel, "\u2190", "\\gets");
569
- defineSymbol(math, main, rel, ">", "\\gt");
564
+ defineSymbol(math, main, rel, ">", "\\gt", true);
570
565
  defineSymbol(math, main, rel, "\u2208", "\\in", true);
571
566
  defineSymbol(math, main, rel, "\ue020", "\\@not");
572
567
  defineSymbol(math, main, rel, "\u2282", "\\subset", true);
@@ -579,7 +574,7 @@ defineSymbol(math, main, rel, "\u22a8", "\\models");
579
574
  defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true);
580
575
  defineSymbol(math, main, rel, "\u2264", "\\le");
581
576
  defineSymbol(math, main, rel, "\u2264", "\\leq", true);
582
- defineSymbol(math, main, rel, "<", "\\lt");
577
+ defineSymbol(math, main, rel, "<", "\\lt", true);
583
578
  defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true);
584
579
  defineSymbol(math, main, rel, "\u2192", "\\to");
585
580
  defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true);
@@ -590,6 +585,7 @@ defineSymbol(math, main, spacing, "\u00a0", "\\space");
590
585
  // Ref: LaTeX Source 2e: \DeclareRobustCommand{\nobreakspace}{%
591
586
  defineSymbol(math, main, spacing, "\u00a0", "\\nobreakspace");
592
587
  defineSymbol(text, main, spacing, "\u00a0", "\\ ");
588
+ defineSymbol(text, main, spacing, "\u00a0", " ");
593
589
  defineSymbol(text, main, spacing, "\u00a0", "~");
594
590
  defineSymbol(text, main, spacing, "\u00a0", "\\space");
595
591
  defineSymbol(text, main, spacing, "\u00a0", "\\nobreakspace");
@@ -621,14 +617,14 @@ defineSymbol(text, main, textord, "}", "\\}");
621
617
  defineSymbol(text, main, textord, "}", "\\textbraceright");
622
618
  defineSymbol(math, main, open, "{", "\\lbrace");
623
619
  defineSymbol(math, main, close, "}", "\\rbrace");
624
- defineSymbol(math, main, open, "[", "\\lbrack");
625
- defineSymbol(text, main, textord, "[", "\\lbrack");
626
- defineSymbol(math, main, close, "]", "\\rbrack");
627
- defineSymbol(text, main, textord, "]", "\\rbrack");
628
- defineSymbol(math, main, open, "(", "\\lparen");
629
- defineSymbol(math, main, close, ")", "\\rparen");
630
- defineSymbol(text, main, textord, "<", "\\textless"); // in T1 fontenc
631
- defineSymbol(text, main, textord, ">", "\\textgreater"); // in T1 fontenc
620
+ defineSymbol(math, main, open, "[", "\\lbrack", true);
621
+ defineSymbol(text, main, textord, "[", "\\lbrack", true);
622
+ defineSymbol(math, main, close, "]", "\\rbrack", true);
623
+ defineSymbol(text, main, textord, "]", "\\rbrack", true);
624
+ defineSymbol(math, main, open, "(", "\\lparen", true);
625
+ defineSymbol(math, main, close, ")", "\\rparen", true);
626
+ defineSymbol(text, main, textord, "<", "\\textless", true); // in T1 fontenc
627
+ defineSymbol(text, main, textord, ">", "\\textgreater", true); // in T1 fontenc
632
628
  defineSymbol(math, main, open, "\u230a", "\\lfloor", true);
633
629
  defineSymbol(math, main, close, "\u230b", "\\rfloor", true);
634
630
  defineSymbol(math, main, open, "\u2308", "\\lceil", true);
@@ -636,7 +632,7 @@ defineSymbol(math, main, close, "\u2309", "\\rceil", true);
636
632
  defineSymbol(math, main, textord, "\\", "\\backslash");
637
633
  defineSymbol(math, main, textord, "\u2223", "|");
638
634
  defineSymbol(math, main, textord, "\u2223", "\\vert");
639
- defineSymbol(text, main, textord, "|", "\\textbar"); // in T1 fontenc
635
+ defineSymbol(text, main, textord, "|", "\\textbar", true); // in T1 fontenc
640
636
  defineSymbol(math, main, textord, "\u2225", "\\|");
641
637
  defineSymbol(math, main, textord, "\u2225", "\\Vert");
642
638
  defineSymbol(text, main, textord, "\u2225", "\\textbardbl");
@@ -665,8 +661,6 @@ defineSymbol(math, main, op, "\u2a02", "\\bigotimes");
665
661
  defineSymbol(math, main, op, "\u2a01", "\\bigoplus");
666
662
  defineSymbol(math, main, op, "\u2a00", "\\bigodot");
667
663
  defineSymbol(math, main, op, "\u222e", "\\oint");
668
- defineSymbol(math, main, op, "\u222f", "\\oiint");
669
- defineSymbol(math, main, op, "\u2230", "\\oiiint");
670
664
  defineSymbol(math, main, op, "\u2a06", "\\bigsqcup");
671
665
  defineSymbol(math, main, op, "\u222b", "\\smallint");
672
666
  defineSymbol(text, main, inner, "\u2026", "\\textellipsis");
@@ -687,13 +681,15 @@ defineSymbol(math, main, accent, "\u005e", "\\hat");
687
681
  defineSymbol(math, main, accent, "\u20d7", "\\vec");
688
682
  defineSymbol(math, main, accent, "\u02d9", "\\dot");
689
683
  defineSymbol(math, main, accent, "\u02da", "\\mathring");
690
- defineSymbol(math, main, mathord, "\u0131", "\\imath", true);
691
- defineSymbol(math, main, mathord, "\u0237", "\\jmath", true);
684
+ // \imath and \jmath should be invariant to \mathrm, \mathbf, etc., so use PUA
685
+ defineSymbol(math, main, mathord, "\ue131", "\\@imath");
686
+ defineSymbol(math, main, mathord, "\ue237", "\\@jmath");
687
+ defineSymbol(math, main, textord, "\u0131", "\u0131");
688
+ defineSymbol(math, main, textord, "\u0237", "\u0237");
692
689
  defineSymbol(text, main, textord, "\u0131", "\\i", true);
693
690
  defineSymbol(text, main, textord, "\u0237", "\\j", true);
694
691
  defineSymbol(text, main, textord, "\u00df", "\\ss", true);
695
692
  defineSymbol(text, main, textord, "\u00e6", "\\ae", true);
696
- defineSymbol(text, main, textord, "\u00e6", "\\ae", true);
697
693
  defineSymbol(text, main, textord, "\u0153", "\\oe", true);
698
694
  defineSymbol(text, main, textord, "\u00f8", "\\o", true);
699
695
  defineSymbol(text, main, textord, "\u00c6", "\\AE", true);
@@ -720,17 +716,17 @@ export const ligatures = {
720
716
  "''": true,
721
717
  };
722
718
 
723
- defineSymbol(text, main, textord, "\u2013", "--");
719
+ defineSymbol(text, main, textord, "\u2013", "--", true);
724
720
  defineSymbol(text, main, textord, "\u2013", "\\textendash");
725
- defineSymbol(text, main, textord, "\u2014", "---");
721
+ defineSymbol(text, main, textord, "\u2014", "---", true);
726
722
  defineSymbol(text, main, textord, "\u2014", "\\textemdash");
727
- defineSymbol(text, main, textord, "\u2018", "`");
723
+ defineSymbol(text, main, textord, "\u2018", "`", true);
728
724
  defineSymbol(text, main, textord, "\u2018", "\\textquoteleft");
729
- defineSymbol(text, main, textord, "\u2019", "'");
725
+ defineSymbol(text, main, textord, "\u2019", "'", true);
730
726
  defineSymbol(text, main, textord, "\u2019", "\\textquoteright");
731
- defineSymbol(text, main, textord, "\u201c", "``");
727
+ defineSymbol(text, main, textord, "\u201c", "``", true);
732
728
  defineSymbol(text, main, textord, "\u201c", "\\textquotedblleft");
733
- defineSymbol(text, main, textord, "\u201d", "''");
729
+ defineSymbol(text, main, textord, "\u201d", "''", true);
734
730
  defineSymbol(text, main, textord, "\u201d", "\\textquotedblright");
735
731
  // \degree from gensymb package
736
732
  defineSymbol(math, main, textord, "\u00b0", "\\degree", true);
@@ -738,18 +734,14 @@ defineSymbol(text, main, textord, "\u00b0", "\\degree");
738
734
  // \textdegree from inputenc package
739
735
  defineSymbol(text, main, textord, "\u00b0", "\\textdegree", true);
740
736
  // TODO: In LaTeX, \pounds can generate a different character in text and math
741
- // mode, but among our fonts, only Main-Italic defines this character "163".
742
- defineSymbol(math, main, mathord, "\u00a3", "\\pounds");
743
- defineSymbol(math, main, mathord, "\u00a3", "\\mathsterling", true);
744
- defineSymbol(text, main, mathord, "\u00a3", "\\pounds");
745
- defineSymbol(text, main, mathord, "\u00a3", "\\textsterling", true);
737
+ // mode, but among our fonts, only Main-Regular defines this character "163".
738
+ defineSymbol(math, main, textord, "\u00a3", "\\pounds");
739
+ defineSymbol(math, main, textord, "\u00a3", "\\mathsterling", true);
740
+ defineSymbol(text, main, textord, "\u00a3", "\\pounds");
741
+ defineSymbol(text, main, textord, "\u00a3", "\\textsterling", true);
746
742
  defineSymbol(math, ams, textord, "\u2720", "\\maltese");
747
743
  defineSymbol(text, ams, textord, "\u2720", "\\maltese");
748
744
 
749
- defineSymbol(text, main, spacing, "\u00a0", "\\ ");
750
- defineSymbol(text, main, spacing, "\u00a0", " ");
751
- defineSymbol(text, main, spacing, "\u00a0", "~");
752
-
753
745
  // There are lots of symbols which are the same, so we add them in afterwards.
754
746
  // All of these are textords in math mode
755
747
  const mathTextSymbols = "0123456789/@.\"";
@@ -759,7 +751,7 @@ for (let i = 0; i < mathTextSymbols.length; i++) {
759
751
  }
760
752
 
761
753
  // All of these are textords in text mode
762
- const textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,";
754
+ const textSymbols = "0123456789!@*()-=+\";:?/.,";
763
755
  for (let i = 0; i < textSymbols.length; i++) {
764
756
  const ch = textSymbols.charAt(i);
765
757
  defineSymbol(text, main, textord, ch, ch);
@@ -879,18 +871,9 @@ for (let i = 0; i < 10; i++) {
879
871
  // but they are not actually in the font, nor are they supported by the
880
872
  // Unicode accent mechanism, so they fall back to Times font and look ugly.
881
873
  // TODO(edemaine): Fix this.
882
- export const extraLatin = "ÇÐÞçþ";
874
+ export const extraLatin = "\u00c7\u00d0\u00de\u00e7\u00fe";
883
875
  for (let i = 0; i < extraLatin.length; i++) {
884
876
  const ch = extraLatin.charAt(i);
885
877
  defineSymbol(math, main, mathord, ch, ch);
886
878
  defineSymbol(text, main, textord, ch, ch);
887
879
  }
888
- defineSymbol(text, main, textord, "ð", "ð");
889
-
890
- // Unicode versions of existing characters
891
- defineSymbol(text, main, textord, "\u2013", "–");
892
- defineSymbol(text, main, textord, "\u2014", "—");
893
- defineSymbol(text, main, textord, "\u2018", "‘");
894
- defineSymbol(text, main, textord, "\u2019", "’");
895
- defineSymbol(text, main, textord, "\u201c", "“");
896
- defineSymbol(text, main, textord, "\u201d", "”");
package/src/tree.js CHANGED
@@ -20,7 +20,7 @@ export interface VirtualNode {
20
20
  */
21
21
  export class DocumentFragment<ChildType: VirtualNode>
22
22
  implements HtmlDomNode, MathDomNode {
23
- children: ChildType[];
23
+ children: $ReadOnlyArray<ChildType>;
24
24
  // HtmlDomNode
25
25
  classes: string[];
26
26
  height: number;
@@ -28,7 +28,7 @@ export class DocumentFragment<ChildType: VirtualNode>
28
28
  maxFontSize: number;
29
29
  style: CssStyle; // Never used; needed for satisfying interface.
30
30
 
31
- constructor(children: ChildType[]) {
31
+ constructor(children: $ReadOnlyArray<ChildType>) {
32
32
  this.children = children;
33
33
  this.classes = [];
34
34
  this.height = 0;
package/src/types.js CHANGED
@@ -20,7 +20,8 @@ export type Mode = "math" | "text";
20
20
  // first argument is special and the second
21
21
  // argument is parsed normally)
22
22
  // - Mode: Node group parsed in given mode.
23
- export type ArgType = "color" | "size" | "url" | "raw" | "original" | Mode;
23
+ export type ArgType = "color" | "size" | "url" | "raw" | "original" | "hbox" |
24
+ Mode;
24
25
 
25
26
  // LaTeX display style.
26
27
  export type StyleStr = "text" | "display" | "script" | "scriptscript";
@@ -1,6 +1,8 @@
1
1
  // Mapping of Unicode accent characters to their LaTeX equivalent in text and
2
2
  // math mode (when they exist).
3
- export default {
3
+ // This exports a CommonJS module, allowing to be required in unicodeSymbols
4
+ // without transpiling.
5
+ module.exports = {
4
6
  '\u0301': {text: "\\'", math: '\\acute'},
5
7
  '\u0300': {text: '\\`', math: '\\grave'},
6
8
  '\u0308': {text: '\\"', math: '\\ddot'},