katex 0.15.5 → 0.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/katex.mjs CHANGED
@@ -15789,7 +15789,67 @@ defineMacro("\\bra", "\\mathinner{\\langle{#1}|}");
15789
15789
  defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
15790
15790
  defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
15791
15791
  defineMacro("\\Bra", "\\left\\langle#1\\right|");
15792
- defineMacro("\\Ket", "\\left|#1\\right\\rangle"); //////////////////////////////////////////////////////////////////////
15792
+ defineMacro("\\Ket", "\\left|#1\\right\\rangle");
15793
+
15794
+ var braketHelper = one => context => {
15795
+ var left = context.consumeArg().tokens;
15796
+ var middle = context.consumeArg().tokens;
15797
+ var middleDouble = context.consumeArg().tokens;
15798
+ var right = context.consumeArg().tokens;
15799
+ var oldMiddle = context.macros.get("|");
15800
+ var oldMiddleDouble = context.macros.get("\\|");
15801
+ context.macros.beginGroup();
15802
+
15803
+ var midMacro = double => context => {
15804
+ if (one) {
15805
+ // Only modify the first instance of | or \|
15806
+ context.macros.set("|", oldMiddle);
15807
+
15808
+ if (middleDouble.length) {
15809
+ context.macros.set("\\|", oldMiddleDouble);
15810
+ }
15811
+ }
15812
+
15813
+ var doubled = double;
15814
+
15815
+ if (!double && middleDouble.length) {
15816
+ // Mimic \@ifnextchar
15817
+ var nextToken = context.future();
15818
+
15819
+ if (nextToken.text === "|") {
15820
+ context.popToken();
15821
+ doubled = true;
15822
+ }
15823
+ }
15824
+
15825
+ return {
15826
+ tokens: doubled ? middleDouble : middle,
15827
+ numArgs: 0
15828
+ };
15829
+ };
15830
+
15831
+ context.macros.set("|", midMacro(false));
15832
+
15833
+ if (middleDouble.length) {
15834
+ context.macros.set("\\|", midMacro(true));
15835
+ }
15836
+
15837
+ var arg = context.consumeArg().tokens;
15838
+ var expanded = context.expandTokens([...right, ...arg, ...left // reversed
15839
+ ]);
15840
+ context.macros.endGroup();
15841
+ return {
15842
+ tokens: expanded.reverse(),
15843
+ numArgs: 0
15844
+ };
15845
+ };
15846
+
15847
+ defineMacro("\\bra@ket", braketHelper(false));
15848
+ defineMacro("\\bra@set", braketHelper(true));
15849
+ defineMacro("\\Braket", "\\bra@ket{\\left\\langle}" + "{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
15850
+ defineMacro("\\Set", "\\bra@set{\\left\\{\\:}" + "{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
15851
+ defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"); // has no support for special || or \|
15852
+ //////////////////////////////////////////////////////////////////////
15793
15853
  // actuarialangle.dtx
15794
15854
 
15795
15855
  defineMacro("\\angln", "{\\angl n}"); // Custom Khan Academy colors, should be moved to an optional package
@@ -16245,7 +16305,9 @@ class MacroExpander {
16245
16305
  return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;
16246
16306
  }
16247
16307
  /**
16248
- * Fully expand the given token stream and return the resulting list of tokens
16308
+ * Fully expand the given token stream and return the resulting list of
16309
+ * tokens. Note that the input tokens are in reverse order, but the
16310
+ * output tokens are in forward order.
16249
16311
  */
16250
16312
 
16251
16313
 
@@ -18106,7 +18168,7 @@ var katex = {
18106
18168
  /**
18107
18169
  * Current KaTeX version
18108
18170
  */
18109
- version: "0.15.5",
18171
+ version: "0.15.6",
18110
18172
 
18111
18173
  /**
18112
18174
  * Renders the given LaTeX into an HTML+MathML combination, and adds
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "katex",
3
- "version": "0.15.5",
3
+ "version": "0.15.6",
4
4
  "description": "Fast math typesetting for the web.",
5
5
  "main": "dist/katex.js",
6
6
  "exports": {
@@ -356,7 +356,9 @@ export default class MacroExpander implements MacroContextInterface {
356
356
  }
357
357
 
358
358
  /**
359
- * Fully expand the given token stream and return the resulting list of tokens
359
+ * Fully expand the given token stream and return the resulting list of
360
+ * tokens. Note that the input tokens are in reverse order, but the
361
+ * output tokens are in forward order.
360
362
  */
361
363
  expandTokens(tokens: Token[]): Token[] {
362
364
  const output = [];
@@ -61,6 +61,13 @@ export interface MacroContextInterface {
61
61
  */
62
62
  expandMacroAsText(name: string): string | void;
63
63
 
64
+ /**
65
+ * Fully expand the given token stream and return the resulting list of
66
+ * tokens. Note that the input tokens are in reverse order, but the
67
+ * output tokens are in forward order.
68
+ */
69
+ expandTokens(tokens: Token[]): Token[];
70
+
64
71
  /**
65
72
  * Consume an argument from the token stream, and return the resulting array
66
73
  * of tokens and start/end token.
package/src/macros.js CHANGED
@@ -912,6 +912,58 @@ defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
912
912
  defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
913
913
  defineMacro("\\Bra", "\\left\\langle#1\\right|");
914
914
  defineMacro("\\Ket", "\\left|#1\\right\\rangle");
915
+ const braketHelper = (one) => (context) => {
916
+ const left = context.consumeArg().tokens;
917
+ const middle = context.consumeArg().tokens;
918
+ const middleDouble = context.consumeArg().tokens;
919
+ const right = context.consumeArg().tokens;
920
+ const oldMiddle = context.macros.get("|");
921
+ const oldMiddleDouble = context.macros.get("\\|");
922
+ context.macros.beginGroup();
923
+ const midMacro = (double) => (context) => {
924
+ if (one) {
925
+ // Only modify the first instance of | or \|
926
+ context.macros.set("|", oldMiddle);
927
+ if (middleDouble.length) {
928
+ context.macros.set("\\|", oldMiddleDouble);
929
+ }
930
+ }
931
+ let doubled = double;
932
+ if (!double && middleDouble.length) {
933
+ // Mimic \@ifnextchar
934
+ const nextToken = context.future();
935
+ if (nextToken.text === "|") {
936
+ context.popToken();
937
+ doubled = true;
938
+ }
939
+ }
940
+ return {
941
+ tokens: doubled ? middleDouble : middle,
942
+ numArgs: 0,
943
+ };
944
+ };
945
+ context.macros.set("|", midMacro(false));
946
+ if (middleDouble.length) {
947
+ context.macros.set("\\|", midMacro(true));
948
+ }
949
+ const arg = context.consumeArg().tokens;
950
+ const expanded = context.expandTokens([
951
+ ...right, ...arg, ...left, // reversed
952
+ ]);
953
+ context.macros.endGroup();
954
+ return {
955
+ tokens: expanded.reverse(),
956
+ numArgs: 0,
957
+ };
958
+ };
959
+ defineMacro("\\bra@ket", braketHelper(false));
960
+ defineMacro("\\bra@set", braketHelper(true));
961
+ defineMacro("\\Braket", "\\bra@ket{\\left\\langle}" +
962
+ "{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
963
+ defineMacro("\\Set", "\\bra@set{\\left\\{\\:}" +
964
+ "{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
965
+ defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");
966
+ // has no support for special || or \|
915
967
 
916
968
  //////////////////////////////////////////////////////////////////////
917
969
  // actuarialangle.dtx