katex 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +4 -4
  3. package/cli.js +0 -0
  4. package/contrib/copy-tex/README.md +3 -3
  5. package/contrib/mathtex-script-type/README.md +5 -5
  6. package/contrib/mhchem/README.md +1 -1
  7. package/dist/README.md +4 -4
  8. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  9. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  10. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  11. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  12. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  13. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  14. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  15. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  16. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  17. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  18. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  19. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  20. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  21. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  22. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  23. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  24. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  25. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  26. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  27. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  28. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  29. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  30. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  31. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  32. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  33. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  34. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  35. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  36. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  37. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  38. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  39. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  40. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  41. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  42. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  43. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  44. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  45. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  46. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  47. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  48. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  49. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  50. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  51. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  52. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  53. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  54. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  55. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  56. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  57. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  58. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  59. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  60. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  61. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  62. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  63. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  64. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  65. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  66. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  67. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  68. package/dist/katex.css +10 -0
  69. package/dist/katex.js +541 -249
  70. package/dist/katex.min.css +1 -1
  71. package/dist/katex.min.js +1 -1
  72. package/dist/katex.mjs +418 -198
  73. package/package.json +1 -1
  74. package/src/Options.js +11 -75
  75. package/src/buildMathML.js +13 -3
  76. package/src/domTree.js +63 -0
  77. package/src/environments/array.js +118 -2
  78. package/src/fontMetrics.js +3 -2
  79. package/src/functions/arrow.js +15 -5
  80. package/src/functions/color.js +2 -37
  81. package/src/functions/delimsizing.js +12 -2
  82. package/src/functions/enclose.js +15 -3
  83. package/src/functions/genfrac.js +31 -12
  84. package/src/functions/includegraphics.js +146 -0
  85. package/src/functions/mclass.js +1 -0
  86. package/src/functions/op.js +18 -10
  87. package/src/functions/phantom.js +5 -2
  88. package/src/functions/rule.js +20 -9
  89. package/src/functions/supsub.js +6 -2
  90. package/src/functions/symbolsOp.js +4 -0
  91. package/src/functions/tag.js +20 -4
  92. package/src/functions/text.js +4 -2
  93. package/src/functions.js +2 -0
  94. package/src/katex.less +15 -0
  95. package/src/macros.js +144 -27
  96. package/src/mathMLTree.js +1 -1
  97. package/src/parseNode.js +20 -1
  98. package/src/stretchy.js +3 -1
  99. package/src/symbols.js +15 -15
package/src/macros.js CHANGED
@@ -334,6 +334,9 @@ defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur
334
334
  defineMacro("\u210C", "\\mathfrak{H}");
335
335
  defineMacro("\u2128", "\\mathfrak{Z}");
336
336
 
337
+ // Define \Bbbk with a macro that works in both HTML and MathML.
338
+ defineMacro("\\Bbbk", "\\Bbb{k}");
339
+
337
340
  // Unicode middle dot
338
341
  // The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays
339
342
  // the dot at U+22C5 and gives it punct spacing.
@@ -348,7 +351,8 @@ defineMacro("\\clap", "\\mathclap{\\textrm{#1}}");
348
351
  // \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
349
352
  // It's thus treated like a \mathrel, but defined by a symbol that has zero
350
353
  // width but extends to the right. We use \rlap to get that spacing.
351
- defineMacro("\\not", '\\mathrel{\\mathrlap\\@not}');
354
+ // For MathML we write U+0338 here. buildMathML.js will then do the overlay.
355
+ defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');
352
356
 
353
357
  // Negated symbols from base/fontmath.ltx:
354
358
  // \def\neq{\not=} \let\ne=\neq
@@ -719,40 +723,61 @@ defineMacro("\\ordinarycolon", ":");
719
723
  //TODO(edemaine): Not yet centered. Fix via \raisebox or #726
720
724
  defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}");
721
725
  // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}
722
- defineMacro("\\dblcolon",
723
- "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}");
726
+ defineMacro("\\dblcolon", "\\html@mathml{" +
727
+ "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" +
728
+ "{\\mathop{\\char\"2237}}");
724
729
  // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
725
- defineMacro("\\coloneqq", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}");
730
+ defineMacro("\\coloneqq", "\\html@mathml{" +
731
+ "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" +
732
+ "{\\mathop{\\char\"2254}}"); // ≔
726
733
  // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
727
- defineMacro("\\Coloneqq", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}");
734
+ defineMacro("\\Coloneqq", "\\html@mathml{" +
735
+ "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" +
736
+ "{\\mathop{\\char\"2237\\char\"3d}}");
728
737
  // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
729
- defineMacro("\\coloneq",
730
- "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}");
738
+ defineMacro("\\coloneq", "\\html@mathml{" +
739
+ "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" +
740
+ "{\\mathop{\\char\"3a\\char\"2212}}");
731
741
  // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
732
- defineMacro("\\Coloneq",
733
- "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}");
742
+ defineMacro("\\Coloneq", "\\html@mathml{" +
743
+ "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" +
744
+ "{\\mathop{\\char\"2237\\char\"2212}}");
734
745
  // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
735
- defineMacro("\\eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
746
+ defineMacro("\\eqqcolon", "\\html@mathml{" +
747
+ "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" +
748
+ "{\\mathop{\\char\"2255}}"); // ≕
736
749
  // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
737
- defineMacro("\\Eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}");
750
+ defineMacro("\\Eqqcolon", "\\html@mathml{" +
751
+ "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" +
752
+ "{\\mathop{\\char\"3d\\char\"2237}}");
738
753
  // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
739
- defineMacro("\\eqcolon",
740
- "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
754
+ defineMacro("\\eqcolon", "\\html@mathml{" +
755
+ "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" +
756
+ "{\\mathop{\\char\"2239}}");
741
757
  // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
742
- defineMacro("\\Eqcolon",
743
- "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}");
758
+ defineMacro("\\Eqcolon", "\\html@mathml{" +
759
+ "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" +
760
+ "{\\mathop{\\char\"2212\\char\"2237}}");
744
761
  // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
745
- defineMacro("\\colonapprox",
746
- "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}");
762
+ defineMacro("\\colonapprox", "\\html@mathml{" +
763
+ "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" +
764
+ "{\\mathop{\\char\"3a\\char\"2248}}");
747
765
  // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
748
- defineMacro("\\Colonapprox",
749
- "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}");
766
+ defineMacro("\\Colonapprox", "\\html@mathml{" +
767
+ "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" +
768
+ "{\\mathop{\\char\"2237\\char\"2248}}");
750
769
  // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
751
- defineMacro("\\colonsim", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}");
770
+ defineMacro("\\colonsim", "\\html@mathml{" +
771
+ "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" +
772
+ "{\\mathop{\\char\"3a\\char\"223c}}");
752
773
  // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
753
- defineMacro("\\Colonsim", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}");
774
+ defineMacro("\\Colonsim", "\\html@mathml{" +
775
+ "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" +
776
+ "{\\mathop{\\char\"2237\\char\"223c}}");
754
777
 
755
778
  // Some Unicode characters are implemented with macros to mathtools functions.
779
+ defineMacro("\u2237", "\\dblcolon"); // ::
780
+ defineMacro("\u2239", "\\eqcolon"); // -:
756
781
  defineMacro("\u2254", "\\coloneqq"); // :=
757
782
  defineMacro("\u2255", "\\eqqcolon"); // =:
758
783
  defineMacro("\u2A74", "\\Coloneqq"); // ::=
@@ -792,13 +817,47 @@ defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");
792
817
  defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits");
793
818
 
794
819
  //////////////////////////////////////////////////////////////////////
795
- // semantic
820
+ // MathML alternates for KaTeX glyphs in the Unicode private area
821
+ defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
822
+ defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
823
+ defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
824
+ defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
825
+ defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
826
+ defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
827
+ defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
828
+ defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
829
+ defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
830
+ defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
831
+ defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
832
+ defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
833
+ defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
834
+ defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}");
835
+
836
+ //////////////////////////////////////////////////////////////////////
837
+ // stmaryrd and semantic
838
+
839
+ // The stmaryrd and semantic packages render the next four items by calling a
840
+ // glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
796
841
 
797
- // The semantic package renders the next two items by calling a glyph from the
798
- // bbold package. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
842
+ defineMacro("\\llbracket", "\\html@mathml{" +
843
+ "\\mathopen{[\\mkern-3.2mu[}}" +
844
+ "{\\mathopen{\\char`\u27e6}}");
845
+ defineMacro("\\rrbracket", "\\html@mathml{" +
846
+ "\\mathclose{]\\mkern-3.2mu]}}" +
847
+ "{\\mathclose{\\char`\u27e7}}");
799
848
 
800
- defineMacro("\u27e6", "\\mathopen{[\\mkern-3.2mu[}"); // blackboard bold [
801
- defineMacro("\u27e7", "\\mathclose{]\\mkern-3.2mu]}"); // blackboard bold ]
849
+ defineMacro("\u27e6", "\\llbracket"); // blackboard bold [
850
+ defineMacro("\u27e7", "\\rrbracket"); // blackboard bold ]
851
+
852
+ defineMacro("\\lBrace", "\\html@mathml{" +
853
+ "\\mathopen{\\{\\mkern-3.2mu[}}" +
854
+ "{\\mathopen{\\char`\u2983}}");
855
+ defineMacro("\\rBrace", "\\html@mathml{" +
856
+ "\\mathclose{]\\mkern-3.2mu\\}}}" +
857
+ "{\\mathclose{\\char`\u2984}}");
858
+
859
+ defineMacro("\u2983", "\\lBrace"); // blackboard bold {
860
+ defineMacro("\u2984", "\\rBrace"); // blackboard bold }
802
861
 
803
862
  // TODO: Create variable sized versions of the last two items. I believe that
804
863
  // will require new font glyphs.
@@ -864,7 +923,7 @@ defineMacro("\\Rarr", "\\Rightarrow");
864
923
  defineMacro("\\real", "\\Re");
865
924
  defineMacro("\\reals", "\\mathbb{R}");
866
925
  defineMacro("\\Reals", "\\mathbb{R}");
867
- defineMacro("\\Rho", "\\mathrm{R}");
926
+ defineMacro("\\Rho", "\\mathrm{P}");
868
927
  defineMacro("\\sdot", "\\cdot");
869
928
  defineMacro("\\sect", "\\S");
870
929
  defineMacro("\\spades", "\\spadesuit");
@@ -883,3 +942,61 @@ defineMacro("\\Zeta", "\\mathrm{Z}");
883
942
 
884
943
  defineMacro("\\argmin", "\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits");
885
944
  defineMacro("\\argmax", "\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits");
945
+
946
+ // Custom Khan Academy colors, should be moved to an optional package
947
+ defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
948
+ defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
949
+ defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
950
+ defineMacro("\\red", "\\textcolor{##df0030}{#1}");
951
+ defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
952
+ defineMacro("\\gray", "\\textcolor{gray}{##1}");
953
+ defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
954
+ defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
955
+ defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
956
+ defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
957
+ defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
958
+ defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
959
+ defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
960
+ defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
961
+ defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
962
+ defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
963
+ defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
964
+ defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
965
+ defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
966
+ defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
967
+ defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
968
+ defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
969
+ defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
970
+ defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
971
+ defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
972
+ defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
973
+ defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
974
+ defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
975
+ defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
976
+ defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
977
+ defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
978
+ defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
979
+ defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
980
+ defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
981
+ defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
982
+ defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
983
+ defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
984
+ defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
985
+ defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
986
+ defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
987
+ defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
988
+ defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
989
+ defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
990
+ defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
991
+ defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
992
+ defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
993
+ defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
994
+ defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
995
+ defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
996
+ defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
997
+ defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
998
+ defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
999
+ defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
1000
+ defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
1001
+ defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
1002
+ defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
package/src/mathMLTree.js CHANGED
@@ -25,7 +25,7 @@ export type MathNodeType =
25
25
  "mfrac" | "mroot" | "msqrt" |
26
26
  "mtable" | "mtr" | "mtd" | "mlabeledtr" |
27
27
  "mrow" | "menclose" |
28
- "mstyle" | "mpadded" | "mphantom";
28
+ "mstyle" | "mpadded" | "mphantom" | "mglyph";
29
29
 
30
30
  export interface MathDomNode extends VirtualNode {
31
31
  toText(): string;
package/src/parseNode.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // @flow
2
2
  import {NON_ATOMS} from "./symbols";
3
3
  import type SourceLocation from "./SourceLocation";
4
- import type {AlignSpec} from "./environments/array";
4
+ import type {AlignSpec, ColSeparationType} from "./environments/array";
5
5
  import type {Atom} from "./symbols";
6
6
  import type {Mode, StyleStr} from "./types";
7
7
  import type {Token} from "./Token";
@@ -28,6 +28,7 @@ type ParseNodeTypes = {
28
28
  type: "array",
29
29
  mode: Mode,
30
30
  loc?: ?SourceLocation,
31
+ colSeparationType?: ColSeparationType,
31
32
  hskipBeforeAndAfter?: boolean,
32
33
  addJot?: boolean,
33
34
  cols?: AlignSpec[],
@@ -49,6 +50,12 @@ type ParseNodeTypes = {
49
50
  loc?: ?SourceLocation,
50
51
  color: string,
51
52
  |},
53
+ "keyVals": {|
54
+ type: "keyVals",
55
+ mode: Mode,
56
+ loc?: ?SourceLocation,
57
+ keyVals: string,
58
+ |},
52
59
  // To avoid requiring run-time type assertions, this more carefully captures
53
60
  // the requirements on the fields per the op.js htmlBuilder logic:
54
61
  // - `body` and `value` are NEVER set simultanouesly.
@@ -60,6 +67,7 @@ type ParseNodeTypes = {
60
67
  limits: boolean,
61
68
  alwaysHandleSupSub?: boolean,
62
69
  suppressBaseShift?: boolean,
70
+ parentIsSupSub: boolean,
63
71
  symbol: boolean,
64
72
  name: string,
65
73
  body?: void,
@@ -70,6 +78,7 @@ type ParseNodeTypes = {
70
78
  limits: boolean,
71
79
  alwaysHandleSupSub?: boolean,
72
80
  suppressBaseShift?: boolean,
81
+ parentIsSupSub: boolean,
73
82
  symbol: false, // If 'symbol' is true, `body` *must* be set.
74
83
  name?: void,
75
84
  body: AnyParseNode[],
@@ -271,6 +280,16 @@ type ParseNodeTypes = {
271
280
  html: AnyParseNode[],
272
281
  mathml: AnyParseNode[],
273
282
  |},
283
+ "includegraphics": {|
284
+ type: "includegraphics",
285
+ mode: Mode,
286
+ loc?: ?SourceLocation,
287
+ alt: string,
288
+ width: Measurement,
289
+ height: Measurement,
290
+ totalheight: Measurement,
291
+ src: string,
292
+ |},
274
293
  "infix": {|
275
294
  type: "infix",
276
295
  mode: Mode,
package/src/stretchy.js CHANGED
@@ -25,8 +25,10 @@ const stretchyCodePoint: {[string]: string} = {
25
25
  overrightarrow: "\u2192",
26
26
  underrightarrow: "\u2192",
27
27
  xrightarrow: "\u2192",
28
- underbrace: "\u23b5",
28
+ underbrace: "\u23df",
29
29
  overbrace: "\u23de",
30
+ overgroup: "\u23e0",
31
+ undergroup: "\u23e1",
30
32
  overleftrightarrow: "\u2194",
31
33
  underleftrightarrow: "\u2194",
32
34
  xleftrightarrow: "\u2194",
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");