katex 0.16.32 → 0.16.34

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 (126) hide show
  1. package/README.md +3 -3
  2. package/contrib/auto-render/{auto-render.js → auto-render.ts} +41 -19
  3. package/contrib/auto-render/{splitAtDelimiters.js → splitAtDelimiters.ts} +18 -4
  4. package/contrib/auto-render/test/{auto-render-spec.js → auto-render-spec.ts} +10 -2
  5. package/contrib/copy-tex/README.md +2 -2
  6. package/contrib/copy-tex/{copy-tex.js → copy-tex.ts} +4 -6
  7. package/contrib/copy-tex/{katex2tex.js → katex2tex.ts} +2 -3
  8. package/contrib/mathtex-script-type/README.md +5 -5
  9. package/contrib/mhchem/README.md +1 -1
  10. package/contrib/render-a11y-string/{render-a11y-string.js → render-a11y-string.ts} +18 -33
  11. package/contrib/render-a11y-string/test/{render-a11y-string-spec.js → render-a11y-string-spec.ts} +0 -1
  12. package/dist/README.md +3 -3
  13. package/dist/contrib/auto-render.js +24 -57
  14. package/dist/contrib/auto-render.min.js +1 -1
  15. package/dist/contrib/auto-render.mjs +16586 -210
  16. package/dist/contrib/copy-tex.js +23 -37
  17. package/dist/contrib/copy-tex.min.js +1 -1
  18. package/dist/contrib/copy-tex.mjs +77 -95
  19. package/dist/contrib/mathtex-script-type.js +0 -3
  20. package/dist/contrib/mathtex-script-type.mjs +16427 -4
  21. package/dist/contrib/mhchem.js +55 -303
  22. package/dist/contrib/mhchem.mjs +12884 -723
  23. package/dist/contrib/render-a11y-string.js +13 -108
  24. package/dist/contrib/render-a11y-string.min.js +1 -1
  25. package/dist/contrib/render-a11y-string.mjs +17020 -760
  26. package/dist/katex-swap.css +2 -1
  27. package/dist/katex-swap.min.css +1 -1
  28. package/dist/katex.css +2 -1
  29. package/dist/katex.js +4547 -5680
  30. package/dist/katex.min.css +1 -1
  31. package/dist/katex.min.js +1 -1
  32. package/dist/katex.mjs +11854 -13828
  33. package/{katex.js → katex.ts} +8 -5
  34. package/package.json +34 -31
  35. package/src/{Lexer.js → Lexer.ts} +1 -2
  36. package/src/{MacroExpander.js → MacroExpander.ts} +11 -15
  37. package/src/{Namespace.js → Namespace.ts} +4 -6
  38. package/src/{Options.js → Options.ts} +7 -12
  39. package/src/{ParseError.js → ParseError.ts} +16 -26
  40. package/src/{Parser.js → Parser.ts} +68 -56
  41. package/src/{Settings.js → Settings.ts} +70 -70
  42. package/src/{SourceLocation.js → SourceLocation.ts} +6 -7
  43. package/src/{Style.js → Style.ts} +4 -5
  44. package/src/{Token.js → Token.ts} +8 -6
  45. package/src/{buildCommon.js → buildCommon.ts} +62 -55
  46. package/src/{buildHTML.js → buildHTML.ts} +29 -25
  47. package/src/{buildMathML.js → buildMathML.ts} +15 -13
  48. package/src/{buildTree.js → buildTree.ts} +1 -2
  49. package/src/{defineEnvironment.js → defineEnvironment.ts} +26 -27
  50. package/src/{defineFunction.js → defineFunction.ts} +54 -56
  51. package/src/{defineMacro.js → defineMacro.ts} +12 -13
  52. package/src/{delimiter.js → delimiter.ts} +19 -17
  53. package/src/{domTree.js → domTree.ts} +94 -103
  54. package/src/environments/{array.js → array.ts} +109 -99
  55. package/src/environments/{cd.js → cd.ts} +9 -11
  56. package/src/{environments.js → environments.ts} +0 -1
  57. package/src/{fontMetrics.js → fontMetrics.ts} +10 -12
  58. package/src/fontMetricsData.d.ts +3 -0
  59. package/src/functions/{accent.js → accent.ts} +1 -2
  60. package/src/functions/{accentunder.js → accentunder.ts} +0 -1
  61. package/src/functions/{arrow.js → arrow.ts} +4 -6
  62. package/src/functions/{char.js → char.ts} +0 -1
  63. package/src/functions/{color.js → color.ts} +5 -6
  64. package/src/functions/{cr.js → cr.ts} +0 -1
  65. package/src/functions/{def.js → def.ts} +9 -7
  66. package/src/functions/{delimsizing.js → delimsizing.ts} +11 -9
  67. package/src/functions/{enclose.js → enclose.ts} +3 -4
  68. package/src/functions/{environment.js → environment.ts} +2 -3
  69. package/src/functions/{font.js → font.ts} +4 -4
  70. package/src/functions/{genfrac.js → genfrac.ts} +14 -15
  71. package/src/functions/{hbox.js → hbox.ts} +0 -1
  72. package/src/functions/{horizBrace.js → horizBrace.ts} +4 -5
  73. package/src/functions/{href.js → href.ts} +4 -4
  74. package/src/functions/{html.js → html.ts} +3 -3
  75. package/src/functions/{htmlmathml.js → htmlmathml.ts} +0 -1
  76. package/src/functions/{includegraphics.js → includegraphics.ts} +0 -1
  77. package/src/functions/{kern.js → kern.ts} +0 -1
  78. package/src/functions/{lap.js → lap.ts} +0 -1
  79. package/src/functions/{math.js → math.ts} +0 -1
  80. package/src/functions/{mathchoice.js → mathchoice.ts} +2 -2
  81. package/src/functions/{mclass.js → mclass.ts} +5 -6
  82. package/src/functions/{op.js → op.ts} +9 -11
  83. package/src/functions/{operatorname.js → operatorname.ts} +4 -7
  84. package/src/functions/{ordgroup.js → ordgroup.ts} +0 -2
  85. package/src/functions/{overline.js → overline.ts} +0 -1
  86. package/src/functions/{phantom.js → phantom.ts} +0 -1
  87. package/src/functions/{pmb.js → pmb.ts} +0 -1
  88. package/src/functions/{raisebox.js → raisebox.ts} +0 -1
  89. package/src/functions/{relax.js → relax.ts} +0 -1
  90. package/src/functions/{rule.js → rule.ts} +0 -1
  91. package/src/functions/{sizing.js → sizing.ts} +0 -1
  92. package/src/functions/{smash.js → smash.ts} +2 -4
  93. package/src/functions/{sqrt.js → sqrt.ts} +0 -1
  94. package/src/functions/{styling.js → styling.ts} +3 -3
  95. package/src/functions/{supsub.js → supsub.ts} +6 -8
  96. package/src/functions/{symbolsOp.js → symbolsOp.ts} +0 -2
  97. package/src/functions/{symbolsOrd.js → symbolsOrd.ts} +1 -2
  98. package/src/functions/{symbolsSpacing.js → symbolsSpacing.ts} +2 -3
  99. package/src/functions/{tag.js → tag.ts} +0 -2
  100. package/src/functions/{text.js → text.ts} +7 -6
  101. package/src/functions/{underline.js → underline.ts} +0 -1
  102. package/src/functions/utils/{assembleSupSub.js → assembleSupSub.ts} +2 -3
  103. package/src/functions/{vcenter.js → vcenter.ts} +0 -2
  104. package/src/functions/{verb.js → verb.ts} +0 -1
  105. package/src/{functions.js → functions.ts} +0 -1
  106. package/src/{macros.js → macros.ts} +10 -8
  107. package/src/{mathMLTree.js → mathMLTree.ts} +5 -6
  108. package/src/parseNode.ts +522 -0
  109. package/src/{parseTree.js → parseTree.ts} +5 -3
  110. package/src/{spacingData.js → spacingData.ts} +11 -12
  111. package/src/{stretchy.js → stretchy.ts} +7 -7
  112. package/src/styles/katex-swap.scss +1 -4
  113. package/src/styles/katex.scss +9 -0
  114. package/src/{svgGeometry.js → svgGeometry.ts} +1 -2
  115. package/src/{symbols.js → symbols.ts} +6 -6
  116. package/src/{tree.js → tree.ts} +5 -7
  117. package/src/{types.js → types.ts} +1 -2
  118. package/src/unicodeAccents.js +4 -1
  119. package/src/{unicodeScripts.js → unicodeScripts.ts} +1 -3
  120. package/src/{unicodeSupOrSub.js → unicodeSupOrSub.ts} +1 -1
  121. package/src/unicodeSymbols.js +4 -3
  122. package/src/{units.js → units.ts} +2 -4
  123. package/src/{utils.js → utils.ts} +2 -3
  124. package/src/{wide-character.js → wide-character.ts} +8 -10
  125. package/types/katex.d.ts +13 -12
  126. package/src/parseNode.js +0 -523
@@ -80,9 +80,7 @@ var __webpack_exports__ = {};
80
80
  /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(757);
81
81
  /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(katex__WEBPACK_IMPORTED_MODULE_0__);
82
82
  /* eslint-disable */
83
-
84
83
  /* -*- Mode: JavaScript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
85
-
86
84
  /* vim: set ts=2 et sw=2 tw=80: */
87
85
 
88
86
  /*************************************************************
@@ -125,26 +123,30 @@ var __webpack_exports__ = {};
125
123
  * See the License for the specific language governing permissions and
126
124
  * limitations under the License.
127
125
  */
126
+
128
127
  //
129
128
  // Coding Style
130
129
  // - use '' for identifiers that can by minified/uglified
131
130
  // - use "" for strings that need to stay untouched
131
+
132
132
  // version: "3.3.0" for MathJax and KaTeX
133
+
133
134
  // Add \ce, \pu, and \tripledash to the KaTeX macros.
135
+
134
136
  katex__WEBPACK_IMPORTED_MODULE_0___default().__defineMacro("\\ce", function (context) {
135
137
  return chemParse(context.consumeArgs(1)[0], "ce");
136
138
  });
137
-
138
139
  katex__WEBPACK_IMPORTED_MODULE_0___default().__defineMacro("\\pu", function (context) {
139
140
  return chemParse(context.consumeArgs(1)[0], "pu");
140
- }); // Needed for \bond for the ~ forms
141
+ });
142
+
143
+ // Needed for \bond for the ~ forms
141
144
  // Raise by 2.56mu, not 2mu. We're raising a hyphen-minus, U+002D, not
142
145
  // a mathematical minus, U+2212. So we need that extra 0.56.
143
-
144
-
145
146
  katex__WEBPACK_IMPORTED_MODULE_0___default().__defineMacro("\\tripledash", "{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu" + "\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");
146
147
 
147
- //
148
+
149
+ //
148
150
  // This is the main function for handing the \ce and \pu commands.
149
151
  // It takes the argument to \ce or \pu and returns the corresponding TeX string.
150
152
  //
@@ -153,27 +155,23 @@ var chemParse = function (tokens, stateMachine) {
153
155
  // Recreate the argument string from KaTeX's array of tokens.
154
156
  var str = "";
155
157
  var expectedLoc = tokens.length && tokens[tokens.length - 1].loc.start;
156
-
157
158
  for (var i = tokens.length - 1; i >= 0; i--) {
158
159
  if (tokens[i].loc.start > expectedLoc) {
159
160
  // context.consumeArgs has eaten a space.
160
161
  str += " ";
161
162
  expectedLoc = tokens[i].loc.start;
162
163
  }
163
-
164
164
  str += tokens[i].text;
165
165
  expectedLoc += tokens[i].text.length;
166
166
  }
167
-
168
167
  var tex = texify.go(mhchemParser.go(str, stateMachine));
169
168
  return tex;
170
- }; //
169
+ };
170
+
171
+ //
171
172
  // Core parser for mhchem syntax (recursive)
172
173
  //
173
-
174
174
  /** @type {MhchemParser} */
175
-
176
-
177
175
  var mhchemParser = {
178
176
  //
179
177
  // Parses mchem \ce syntax
@@ -185,12 +183,12 @@ var mhchemParser = {
185
183
  if (!input) {
186
184
  return [];
187
185
  }
188
-
189
186
  if (stateMachine === undefined) {
190
187
  stateMachine = 'ce';
191
188
  }
189
+ var state = '0';
192
190
 
193
- var state = '0'; //
191
+ //
194
192
  // String buffers for parsing:
195
193
  //
196
194
  // buffer.a == amount
@@ -223,79 +221,68 @@ var mhchemParser = {
223
221
  // 3 == next atom
224
222
  // c == macro
225
223
  //
226
-
227
224
  /** @type {Buffer} */
228
-
229
225
  var buffer = {};
230
226
  buffer['parenthesisLevel'] = 0;
231
227
  input = input.replace(/\n/g, " ");
232
228
  input = input.replace(/[\u2212\u2013\u2014\u2010]/g, "-");
233
- input = input.replace(/[\u2026]/g, "..."); //
229
+ input = input.replace(/[\u2026]/g, "...");
230
+
231
+ //
234
232
  // Looks through mhchemParser.transitions, to execute a matching action
235
233
  // (recursive)
236
234
  //
237
-
238
235
  var lastInput;
239
236
  var watchdog = 10;
240
237
  /** @type {ParserOutput[]} */
241
-
242
238
  var output = [];
243
-
244
239
  while (true) {
245
240
  if (lastInput !== input) {
246
241
  watchdog = 10;
247
242
  lastInput = input;
248
243
  } else {
249
244
  watchdog--;
250
- } //
245
+ }
246
+ //
251
247
  // Find actions in transition table
252
248
  //
253
-
254
-
255
249
  var machine = mhchemParser.stateMachines[stateMachine];
256
250
  var t = machine.transitions[state] || machine.transitions['*'];
257
-
258
251
  iterateTransitions: for (var i = 0; i < t.length; i++) {
259
252
  var matches = mhchemParser.patterns.match_(t[i].pattern, input);
260
-
261
253
  if (matches) {
262
254
  //
263
255
  // Execute actions
264
256
  //
265
257
  var task = t[i].task;
266
-
267
258
  for (var iA = 0; iA < task.action_.length; iA++) {
268
- var o; //
259
+ var o;
260
+ //
269
261
  // Find and execute action
270
262
  //
271
-
272
263
  if (machine.actions[task.action_[iA].type_]) {
273
264
  o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);
274
265
  } else if (mhchemParser.actions[task.action_[iA].type_]) {
275
266
  o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);
276
267
  } else {
277
268
  throw ["MhchemBugA", "mhchem bug A. Please report. (" + task.action_[iA].type_ + ")"]; // Trying to use non-existing action
278
- } //
269
+ }
270
+ //
279
271
  // Add output
280
272
  //
281
-
282
-
283
273
  mhchemParser.concatArray(output, o);
284
- } //
274
+ }
275
+ //
285
276
  // Set next state,
286
277
  // Shorten input,
287
278
  // Continue with next character
288
279
  // (= apply only one transition per position)
289
280
  //
290
-
291
-
292
281
  state = task.nextState || state;
293
-
294
282
  if (input.length > 0) {
295
283
  if (!task.revisit) {
296
284
  input = matches.remainder;
297
285
  }
298
-
299
286
  if (!task.toContinue) {
300
287
  break iterateTransitions;
301
288
  }
@@ -303,11 +290,10 @@ var mhchemParser = {
303
290
  return output;
304
291
  }
305
292
  }
306
- } //
293
+ }
294
+ //
307
295
  // Prevent infinite loop
308
296
  //
309
-
310
-
311
297
  if (watchdog <= 0) {
312
298
  throw ["MhchemBugU", "mhchem bug U. Please report."]; // Unexpected character
313
299
  }
@@ -351,46 +337,37 @@ var mhchemParser = {
351
337
  '-9.,9 no missing 0': /^[+\-]?[0-9]+(?:[.,][0-9]+)?/,
352
338
  '(-)(9.,9)(e)(99)': function (input) {
353
339
  var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);
354
-
355
340
  if (m && m[0]) {
356
341
  return {
357
342
  match_: m.splice(1),
358
343
  remainder: input.substr(m[0].length)
359
344
  };
360
345
  }
361
-
362
346
  return null;
363
347
  },
364
348
  '(-)(9)^(-9)': function (input) {
365
349
  var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);
366
-
367
350
  if (m && m[0]) {
368
351
  return {
369
352
  match_: m.splice(1),
370
353
  remainder: input.substr(m[0].length)
371
354
  };
372
355
  }
373
-
374
356
  return null;
375
357
  },
376
358
  'state of aggregation $': function (input) {
377
359
  // ... or crystal system
378
360
  var a = mhchemParser.patterns.findObserveGroups(input, "", /^\([a-z]{1,3}(?=[\),])/, ")", ""); // (aq), (aq,$\infty$), (aq, sat)
379
-
380
361
  if (a && a.remainder.match(/^($|[\s,;\)\]\}])/)) {
381
362
  return a;
382
363
  } // AND end of 'phrase'
383
-
384
-
385
364
  var m = input.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/); // OR crystal system ($o$) (\ca$c$)
386
-
387
365
  if (m) {
388
366
  return {
389
367
  match_: m[0],
390
368
  remainder: input.substr(m[0].length)
391
369
  };
392
370
  }
393
-
394
371
  return null;
395
372
  },
396
373
  '_{(state of aggregation)}$': /^_\{(\([a-z]{1,3}\))\}/,
@@ -512,23 +489,19 @@ var mhchemParser = {
512
489
  'roman numeral': /^[IVX]+/,
513
490
  '1/2$': /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,
514
491
  'amount': function (input) {
515
- var match; // e.g. 2, 0.5, 1/2, -2, n/2, +; $a$ could be added later in parsing
516
-
492
+ var match;
493
+ // e.g. 2, 0.5, 1/2, -2, n/2, +; $a$ could be added later in parsing
517
494
  match = input.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/);
518
-
519
495
  if (match) {
520
496
  return {
521
497
  match_: match[0],
522
498
  remainder: input.substr(match[0].length)
523
499
  };
524
500
  }
525
-
526
501
  var a = mhchemParser.patterns.findObserveGroups(input, "", "$", "$", "");
527
-
528
502
  if (a) {
529
503
  // e.g. $2n-1$, $-$
530
504
  match = a.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/);
531
-
532
505
  if (match) {
533
506
  return {
534
507
  match_: match[0],
@@ -536,7 +509,6 @@ var mhchemParser = {
536
509
  };
537
510
  }
538
511
  }
539
-
540
512
  return null;
541
513
  },
542
514
  'amount2': function (input) {
@@ -547,17 +519,13 @@ var mhchemParser = {
547
519
  if (input.match(/^\([a-z]+\)$/)) {
548
520
  return null;
549
521
  } // state of aggregation = no formula
550
-
551
-
552
522
  var match = input.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);
553
-
554
523
  if (match) {
555
524
  return {
556
525
  match_: match[0],
557
526
  remainder: input.substr(match[0].length)
558
527
  };
559
528
  }
560
-
561
529
  return null;
562
530
  },
563
531
  'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,
@@ -572,29 +540,21 @@ var mhchemParser = {
572
540
  if (input.indexOf(pattern) !== 0) {
573
541
  return null;
574
542
  }
575
-
576
543
  return pattern;
577
544
  } else {
578
545
  var match = input.match(pattern);
579
-
580
546
  if (!match) {
581
547
  return null;
582
548
  }
583
-
584
549
  return match[0];
585
550
  }
586
551
  };
587
552
  /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */
588
-
589
-
590
553
  var _findObserveGroups = function (input, i, endChars) {
591
554
  var braces = 0;
592
-
593
555
  while (i < input.length) {
594
556
  var a = input.charAt(i);
595
-
596
557
  var match = _match(input.substr(i), endChars);
597
-
598
558
  if (match !== null && braces === 0) {
599
559
  return {
600
560
  endMatchBegin: i,
@@ -609,38 +569,27 @@ var mhchemParser = {
609
569
  braces--;
610
570
  }
611
571
  }
612
-
613
572
  i++;
614
573
  }
615
-
616
574
  if (braces > 0) {
617
575
  return null;
618
576
  }
619
-
620
577
  return null;
621
578
  };
622
-
623
579
  var match = _match(input, begExcl);
624
-
625
580
  if (match === null) {
626
581
  return null;
627
582
  }
628
-
629
583
  input = input.substr(match.length);
630
584
  match = _match(input, begIncl);
631
-
632
585
  if (match === null) {
633
586
  return null;
634
587
  }
635
-
636
588
  var e = _findObserveGroups(input, match.length, endIncl || endExcl);
637
-
638
589
  if (e === null) {
639
590
  return null;
640
591
  }
641
-
642
592
  var match1 = input.substring(0, endIncl ? e.endMatchEnd : e.endMatchBegin);
643
-
644
593
  if (!(beg2Excl || beg2Incl)) {
645
594
  return {
646
595
  match_: match1,
@@ -648,13 +597,10 @@ var mhchemParser = {
648
597
  };
649
598
  } else {
650
599
  var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);
651
-
652
600
  if (group2 === null) {
653
601
  return null;
654
602
  }
655
603
  /** @type {string[]} */
656
-
657
-
658
604
  var matchRet = [match1, group2.match_];
659
605
  return {
660
606
  match_: combine ? matchRet.join("") : matchRet,
@@ -669,7 +615,6 @@ var mhchemParser = {
669
615
  //
670
616
  match_: function (m, input) {
671
617
  var pattern = mhchemParser.patterns.patterns[m];
672
-
673
618
  if (pattern === undefined) {
674
619
  throw ["MhchemBugP", "mhchem bug P. Please report. (" + m + ")"]; // Trying to use non-existing pattern
675
620
  } else if (typeof pattern === "function") {
@@ -677,10 +622,8 @@ var mhchemParser = {
677
622
  } else {
678
623
  // RegExp
679
624
  var match = input.match(pattern);
680
-
681
625
  if (match) {
682
626
  var mm;
683
-
684
627
  if (match[2]) {
685
628
  mm = [match[1], match[2]];
686
629
  } else if (match[1]) {
@@ -688,13 +631,11 @@ var mhchemParser = {
688
631
  } else {
689
632
  mm = match[0];
690
633
  }
691
-
692
634
  return {
693
635
  match_: mm,
694
636
  remainder: input.substr(match[0].length)
695
637
  };
696
638
  }
697
-
698
639
  return null;
699
640
  }
700
641
  }
@@ -787,12 +728,10 @@ var mhchemParser = {
787
728
  '1/2': function (buffer, m) {
788
729
  /** @type {ParserOutput[]} */
789
730
  var ret = [];
790
-
791
731
  if (m.match(/^[+\-]/)) {
792
732
  ret.push(m.substr(0, 1));
793
733
  m = m.substr(1);
794
734
  }
795
-
796
735
  var n = m.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);
797
736
  n[1] = n[1].replace(/\$/g, "");
798
737
  ret.push({
@@ -800,7 +739,6 @@ var mhchemParser = {
800
739
  p1: n[1],
801
740
  p2: n[2]
802
741
  });
803
-
804
742
  if (n[3]) {
805
743
  n[3] = n[3].replace(/\$/g, "");
806
744
  ret.push({
@@ -808,7 +746,6 @@ var mhchemParser = {
808
746
  p1: n[3]
809
747
  });
810
748
  }
811
-
812
749
  return ret;
813
750
  },
814
751
  '9,9': function (buffer, m) {
@@ -823,46 +760,37 @@ var mhchemParser = {
823
760
  createTransitions: function (o) {
824
761
  var pattern, state;
825
762
  /** @type {string[]} */
826
-
827
763
  var stateArray;
828
- var i; //
764
+ var i;
765
+ //
829
766
  // 1. Collect all states
830
767
  //
831
-
832
768
  /** @type {Transitions} */
833
-
834
769
  var transitions = {};
835
-
836
770
  for (pattern in o) {
837
771
  for (state in o[pattern]) {
838
772
  stateArray = state.split("|");
839
773
  o[pattern][state].stateArray = stateArray;
840
-
841
774
  for (i = 0; i < stateArray.length; i++) {
842
775
  transitions[stateArray[i]] = [];
843
776
  }
844
777
  }
845
- } //
778
+ }
779
+ //
846
780
  // 2. Fill states
847
781
  //
848
-
849
-
850
782
  for (pattern in o) {
851
783
  for (state in o[pattern]) {
852
784
  stateArray = o[pattern][state].stateArray || [];
853
-
854
785
  for (i = 0; i < stateArray.length; i++) {
855
786
  //
856
787
  // 2a. Normalize actions into array: 'text=' ==> [{type_:'text='}]
857
788
  // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).)
858
789
  //
859
-
860
790
  /** @type {any} */
861
791
  var p = o[pattern][state];
862
-
863
792
  if (p.action_) {
864
793
  p.action_ = [].concat(p.action_);
865
-
866
794
  for (var k = 0; k < p.action_.length; k++) {
867
795
  if (typeof p.action_[k] === "string") {
868
796
  p.action_[k] = {
@@ -872,13 +800,11 @@ var mhchemParser = {
872
800
  }
873
801
  } else {
874
802
  p.action_ = [];
875
- } //
803
+ }
804
+ //
876
805
  // 2.b Multi-insert
877
806
  //
878
-
879
-
880
807
  var patternArray = pattern.split("|");
881
-
882
808
  for (var j = 0; j < patternArray.length; j++) {
883
809
  if (stateArray[i] === '*') {
884
810
  // insert into all
@@ -898,14 +824,14 @@ var mhchemParser = {
898
824
  }
899
825
  }
900
826
  }
901
-
902
827
  return transitions;
903
828
  },
904
829
  stateMachines: {}
905
- }; //
830
+ };
831
+
832
+ //
906
833
  // Definition of state machines
907
834
  //
908
-
909
835
  mhchemParser.stateMachines = {
910
836
  //
911
837
  // \ce state machines
@@ -1553,7 +1479,6 @@ mhchemParser.stateMachines = {
1553
1479
  actions: {
1554
1480
  'o after d': function (buffer, m) {
1555
1481
  var ret;
1556
-
1557
1482
  if ((buffer.d || "").match(/^[0-9]+$/)) {
1558
1483
  var tmp = buffer.d;
1559
1484
  buffer.d = undefined;
@@ -1562,7 +1487,6 @@ mhchemParser.stateMachines = {
1562
1487
  } else {
1563
1488
  ret = this['output'](buffer);
1564
1489
  }
1565
-
1566
1490
  mhchemParser.actions['o='](buffer, m);
1567
1491
  return ret;
1568
1492
  },
@@ -1587,15 +1511,11 @@ mhchemParser.stateMachines = {
1587
1511
  var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || "");
1588
1512
  var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || "");
1589
1513
  var hyphenFollows = m === "-" && (c1 && c1.remainder === "" || c2 || c3 || c4);
1590
-
1591
1514
  if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) {
1592
1515
  buffer.o = '$' + buffer.o + '$';
1593
1516
  }
1594
1517
  /** @type {ParserOutput[]} */
1595
-
1596
-
1597
1518
  var ret = [];
1598
-
1599
1519
  if (hyphenFollows) {
1600
1520
  mhchemParser.concatArray(ret, this['output'](buffer));
1601
1521
  ret.push({
@@ -1603,7 +1523,6 @@ mhchemParser.stateMachines = {
1603
1523
  });
1604
1524
  } else {
1605
1525
  c1 = mhchemParser.patterns.match_('digits', buffer.d || "");
1606
-
1607
1526
  if (isAfterD && c1 && c1.remainder === '') {
1608
1527
  mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m));
1609
1528
  mhchemParser.concatArray(ret, this['output'](buffer));
@@ -1612,7 +1531,6 @@ mhchemParser.stateMachines = {
1612
1531
  mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, "-"));
1613
1532
  }
1614
1533
  }
1615
-
1616
1534
  return ret;
1617
1535
  },
1618
1536
  'a to o': function (buffer) {
@@ -1646,7 +1564,6 @@ mhchemParser.stateMachines = {
1646
1564
  'comma': function (buffer, m) {
1647
1565
  var a = m.replace(/\s*$/, '');
1648
1566
  var withSpace = a !== m;
1649
-
1650
1567
  if (withSpace && buffer['parenthesisLevel'] === 0) {
1651
1568
  return {
1652
1569
  type_: 'comma enumeration L',
@@ -1664,21 +1581,18 @@ mhchemParser.stateMachines = {
1664
1581
  // undefined = if we have nothing else to output, also ignore the just read space (buffer.sb)
1665
1582
  // 1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1)
1666
1583
  // 2 = 1 + the entity can have an amount, so output a\, instead of converting it to o (can only apply to states a|as)
1667
-
1668
1584
  /** @type {ParserOutput | ParserOutput[]} */
1669
1585
  var ret;
1670
-
1671
1586
  if (!buffer.r) {
1672
1587
  ret = [];
1673
-
1674
- if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) {//ret = [];
1588
+ if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) {
1589
+ //ret = [];
1675
1590
  } else {
1676
1591
  if (buffer.sb) {
1677
1592
  ret.push({
1678
1593
  type_: 'entitySkip'
1679
1594
  });
1680
1595
  }
1681
-
1682
1596
  if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows !== 2) {
1683
1597
  buffer.o = buffer.a;
1684
1598
  buffer.a = undefined;
@@ -1694,7 +1608,6 @@ mhchemParser.stateMachines = {
1694
1608
  buffer.dType = undefined;
1695
1609
  }
1696
1610
  }
1697
-
1698
1611
  ret.push({
1699
1612
  type_: 'chemfive',
1700
1613
  a: mhchemParser.go(buffer.a, 'a'),
@@ -1708,10 +1621,8 @@ mhchemParser.stateMachines = {
1708
1621
  }
1709
1622
  } else {
1710
1623
  // r
1711
-
1712
1624
  /** @type {ParserOutput[]} */
1713
1625
  var rd;
1714
-
1715
1626
  if (buffer.rdt === 'M') {
1716
1627
  rd = mhchemParser.go(buffer.rd, 'tex-math');
1717
1628
  } else if (buffer.rdt === 'T') {
@@ -1723,10 +1634,7 @@ mhchemParser.stateMachines = {
1723
1634
  rd = mhchemParser.go(buffer.rd);
1724
1635
  }
1725
1636
  /** @type {ParserOutput[]} */
1726
-
1727
-
1728
1637
  var rq;
1729
-
1730
1638
  if (buffer.rqt === 'M') {
1731
1639
  rq = mhchemParser.go(buffer.rq, 'tex-math');
1732
1640
  } else if (buffer.rqt === 'T') {
@@ -1737,7 +1645,6 @@ mhchemParser.stateMachines = {
1737
1645
  } else {
1738
1646
  rq = mhchemParser.go(buffer.rq);
1739
1647
  }
1740
-
1741
1648
  ret = {
1742
1649
  type_: 'arrow',
1743
1650
  r: buffer.r,
@@ -1745,13 +1652,11 @@ mhchemParser.stateMachines = {
1745
1652
  rq: rq
1746
1653
  };
1747
1654
  }
1748
-
1749
1655
  for (var p in buffer) {
1750
1656
  if (p !== 'parenthesisLevel' && p !== 'beginsWithBond') {
1751
1657
  delete buffer[p];
1752
1658
  }
1753
1659
  }
1754
-
1755
1660
  return ret;
1756
1661
  },
1757
1662
  'oxidation-output': function (buffer, m) {
@@ -1949,11 +1854,9 @@ mhchemParser.stateMachines = {
1949
1854
  type_: 'text',
1950
1855
  p1: buffer.text_
1951
1856
  };
1952
-
1953
1857
  for (var p in buffer) {
1954
1858
  delete buffer[p];
1955
1859
  }
1956
-
1957
1860
  return ret;
1958
1861
  }
1959
1862
  }
@@ -2242,11 +2145,9 @@ mhchemParser.stateMachines = {
2242
2145
  type_: 'tex-math',
2243
2146
  p1: buffer.o
2244
2147
  };
2245
-
2246
2148
  for (var p in buffer) {
2247
2149
  delete buffer[p];
2248
2150
  }
2249
-
2250
2151
  return ret;
2251
2152
  }
2252
2153
  }
@@ -2291,11 +2192,9 @@ mhchemParser.stateMachines = {
2291
2192
  type_: 'tex-math',
2292
2193
  p1: buffer.o
2293
2194
  };
2294
-
2295
2195
  for (var p in buffer) {
2296
2196
  delete buffer[p];
2297
2197
  }
2298
-
2299
2198
  return ret;
2300
2199
  }
2301
2200
  }
@@ -2408,16 +2307,13 @@ mhchemParser.stateMachines = {
2408
2307
  'enumber': function (buffer, m) {
2409
2308
  /** @type {ParserOutput[]} */
2410
2309
  var ret = [];
2411
-
2412
2310
  if (m[0] === "+-" || m[0] === "+/-") {
2413
2311
  ret.push("\\pm ");
2414
2312
  } else if (m[0]) {
2415
2313
  ret.push(m[0]);
2416
2314
  }
2417
-
2418
2315
  if (m[1]) {
2419
2316
  mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));
2420
-
2421
2317
  if (m[2]) {
2422
2318
  if (m[2].match(/[,.]/)) {
2423
2319
  mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9'));
@@ -2425,12 +2321,9 @@ mhchemParser.stateMachines = {
2425
2321
  ret.push(m[2]);
2426
2322
  }
2427
2323
  }
2428
-
2429
2324
  m[3] = m[4] || m[3];
2430
-
2431
2325
  if (m[3]) {
2432
2326
  m[3] = m[3].trim();
2433
-
2434
2327
  if (m[3] === "e" || m[3].substr(0, 1) === "*") {
2435
2328
  ret.push({
2436
2329
  type_: 'cdot'
@@ -2442,23 +2335,19 @@ mhchemParser.stateMachines = {
2442
2335
  }
2443
2336
  }
2444
2337
  }
2445
-
2446
2338
  if (m[3]) {
2447
2339
  ret.push("10^{" + m[5] + "}");
2448
2340
  }
2449
-
2450
2341
  return ret;
2451
2342
  },
2452
2343
  'number^': function (buffer, m) {
2453
2344
  /** @type {ParserOutput[]} */
2454
2345
  var ret = [];
2455
-
2456
2346
  if (m[0] === "+-" || m[0] === "+/-") {
2457
2347
  ret.push("\\pm ");
2458
2348
  } else if (m[0]) {
2459
2349
  ret.push(m[0]);
2460
2350
  }
2461
-
2462
2351
  mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));
2463
2352
  ret.push("^{" + m[2] + "}");
2464
2353
  return ret;
@@ -2478,22 +2367,17 @@ mhchemParser.stateMachines = {
2478
2367
  /** @type {ParserOutput | ParserOutput[]} */
2479
2368
  var ret;
2480
2369
  var md = mhchemParser.patterns.match_('{(...)}', buffer.d || "");
2481
-
2482
2370
  if (md && md.remainder === '') {
2483
2371
  buffer.d = md.match_;
2484
2372
  }
2485
-
2486
2373
  var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || "");
2487
-
2488
2374
  if (mq && mq.remainder === '') {
2489
2375
  buffer.q = mq.match_;
2490
2376
  }
2491
-
2492
2377
  if (buffer.d) {
2493
2378
  buffer.d = buffer.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
2494
2379
  buffer.d = buffer.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F");
2495
2380
  }
2496
-
2497
2381
  if (buffer.q) {
2498
2382
  // fraction
2499
2383
  buffer.q = buffer.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
@@ -2502,7 +2386,6 @@ mhchemParser.stateMachines = {
2502
2386
  d: mhchemParser.go(buffer.d, 'pu'),
2503
2387
  q: mhchemParser.go(buffer.q, 'pu')
2504
2388
  };
2505
-
2506
2389
  if (buffer.o === '//') {
2507
2390
  ret = {
2508
2391
  type_: 'pu-frac',
@@ -2511,7 +2394,6 @@ mhchemParser.stateMachines = {
2511
2394
  };
2512
2395
  } else {
2513
2396
  ret = b5.d;
2514
-
2515
2397
  if (b5.d.length > 1 || b5.q.length > 1) {
2516
2398
  ret.push({
2517
2399
  type_: ' / '
@@ -2521,18 +2403,15 @@ mhchemParser.stateMachines = {
2521
2403
  type_: '/'
2522
2404
  });
2523
2405
  }
2524
-
2525
2406
  mhchemParser.concatArray(ret, b5.q);
2526
2407
  }
2527
2408
  } else {
2528
2409
  // no fraction
2529
2410
  ret = mhchemParser.go(buffer.d, 'pu-2');
2530
2411
  }
2531
-
2532
2412
  for (var p in buffer) {
2533
2413
  delete buffer[p];
2534
2414
  }
2535
-
2536
2415
  return ret;
2537
2416
  }
2538
2417
  }
@@ -2600,10 +2479,8 @@ mhchemParser.stateMachines = {
2600
2479
  'output': function (buffer) {
2601
2480
  /** @type {ParserOutput | ParserOutput[]} */
2602
2481
  var ret = [];
2603
-
2604
2482
  if (buffer.rm) {
2605
2483
  var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || "");
2606
-
2607
2484
  if (mrm && mrm.remainder === '') {
2608
2485
  ret = mhchemParser.go(mrm.match_, 'pu');
2609
2486
  } else {
@@ -2613,11 +2490,9 @@ mhchemParser.stateMachines = {
2613
2490
  };
2614
2491
  }
2615
2492
  }
2616
-
2617
2493
  for (var p in buffer) {
2618
2494
  delete buffer[p];
2619
2495
  }
2620
-
2621
2496
  return ret;
2622
2497
  }
2623
2498
  }
@@ -2660,109 +2535,90 @@ mhchemParser.stateMachines = {
2660
2535
  /** @type {ParserOutput[]} */
2661
2536
  var ret = [];
2662
2537
  buffer.text_ = buffer.text_ || "";
2663
-
2664
2538
  if (buffer.text_.length > 4) {
2665
2539
  var a = buffer.text_.length % 3;
2666
-
2667
2540
  if (a === 0) {
2668
2541
  a = 3;
2669
2542
  }
2670
-
2671
2543
  for (var i = buffer.text_.length - 3; i > 0; i -= 3) {
2672
2544
  ret.push(buffer.text_.substr(i, 3));
2673
2545
  ret.push({
2674
2546
  type_: '1000 separator'
2675
2547
  });
2676
2548
  }
2677
-
2678
2549
  ret.push(buffer.text_.substr(0, a));
2679
2550
  ret.reverse();
2680
2551
  } else {
2681
2552
  ret.push(buffer.text_);
2682
2553
  }
2683
-
2684
2554
  for (var p in buffer) {
2685
2555
  delete buffer[p];
2686
2556
  }
2687
-
2688
2557
  return ret;
2689
2558
  },
2690
2559
  'output-o': function (buffer) {
2691
2560
  /** @type {ParserOutput[]} */
2692
2561
  var ret = [];
2693
2562
  buffer.text_ = buffer.text_ || "";
2694
-
2695
2563
  if (buffer.text_.length > 4) {
2696
2564
  var a = buffer.text_.length - 3;
2697
-
2698
2565
  for (var i = 0; i < a; i += 3) {
2699
2566
  ret.push(buffer.text_.substr(i, 3));
2700
2567
  ret.push({
2701
2568
  type_: '1000 separator'
2702
2569
  });
2703
2570
  }
2704
-
2705
2571
  ret.push(buffer.text_.substr(i));
2706
2572
  } else {
2707
2573
  ret.push(buffer.text_);
2708
2574
  }
2709
-
2710
2575
  for (var p in buffer) {
2711
2576
  delete buffer[p];
2712
2577
  }
2713
-
2714
2578
  return ret;
2715
2579
  }
2716
2580
  }
2717
- } //#endregion
2581
+ }
2582
+ //#endregion
2583
+ };
2718
2584
 
2719
- }; //
2585
+ //
2720
2586
  // texify: Take MhchemParser output and convert it to TeX
2721
2587
  //
2722
-
2723
2588
  /** @type {Texify} */
2724
-
2725
2589
  var texify = {
2726
2590
  go: function (input, isInner) {
2727
2591
  // (recursive, max 4 levels)
2728
2592
  if (!input) {
2729
2593
  return "";
2730
2594
  }
2731
-
2732
2595
  var res = "";
2733
2596
  var cee = false;
2734
-
2735
2597
  for (var i = 0; i < input.length; i++) {
2736
2598
  var inputi = input[i];
2737
-
2738
2599
  if (typeof inputi === "string") {
2739
2600
  res += inputi;
2740
2601
  } else {
2741
2602
  res += texify._go2(inputi);
2742
-
2743
2603
  if (inputi.type_ === '1st-level escape') {
2744
2604
  cee = true;
2745
2605
  }
2746
2606
  }
2747
2607
  }
2748
-
2749
2608
  if (!isInner && !cee && res) {
2750
2609
  res = "{" + res + "}";
2751
2610
  }
2752
-
2753
2611
  return res;
2754
2612
  },
2755
2613
  _goInner: function (input) {
2756
2614
  if (!input) {
2757
2615
  return input;
2758
2616
  }
2759
-
2760
2617
  return texify.go(input, true);
2761
2618
  },
2762
2619
  _go2: function (buf) {
2763
2620
  /** @type {undefined | string} */
2764
2621
  var res;
2765
-
2766
2622
  switch (buf.type_) {
2767
2623
  case 'chemfive':
2768
2624
  res = "";
@@ -2773,52 +2629,45 @@ var texify = {
2773
2629
  o: texify._goInner(buf.o),
2774
2630
  q: texify._goInner(buf.q),
2775
2631
  d: texify._goInner(buf.d)
2776
- }; //
2632
+ };
2633
+ //
2777
2634
  // a
2778
2635
  //
2779
-
2780
2636
  if (b5.a) {
2781
2637
  if (b5.a.match(/^[+\-]/)) {
2782
2638
  b5.a = "{" + b5.a + "}";
2783
2639
  }
2784
-
2785
2640
  res += b5.a + "\\,";
2786
- } //
2641
+ }
2642
+ //
2787
2643
  // b and p
2788
2644
  //
2789
-
2790
-
2791
2645
  if (b5.b || b5.p) {
2792
2646
  res += "{\\vphantom{X}}";
2793
2647
  res += "^{\\hphantom{" + (b5.b || "") + "}}_{\\hphantom{" + (b5.p || "") + "}}";
2794
2648
  res += "{\\vphantom{X}}";
2795
2649
  res += "^{\\smash[t]{\\vphantom{2}}\\mathllap{" + (b5.b || "") + "}}";
2796
2650
  res += "_{\\vphantom{2}\\mathllap{\\smash[t]{" + (b5.p || "") + "}}}";
2797
- } //
2651
+ }
2652
+ //
2798
2653
  // o
2799
2654
  //
2800
-
2801
-
2802
2655
  if (b5.o) {
2803
2656
  if (b5.o.match(/^[+\-]/)) {
2804
2657
  b5.o = "{" + b5.o + "}";
2805
2658
  }
2806
-
2807
2659
  res += b5.o;
2808
- } //
2660
+ }
2661
+ //
2809
2662
  // q and d
2810
2663
  //
2811
-
2812
-
2813
2664
  if (buf.dType === 'kv') {
2814
2665
  if (b5.d || b5.q) {
2815
2666
  res += "{\\vphantom{X}}";
2816
2667
  }
2817
-
2818
2668
  if (b5.d) {
2819
2669
  res += "^{" + b5.d + "}";
2820
2670
  }
2821
-
2822
2671
  if (b5.q) {
2823
2672
  res += "_{\\smash[t]{" + b5.q + "}}";
2824
2673
  }
@@ -2827,7 +2676,6 @@ var texify = {
2827
2676
  res += "{\\vphantom{X}}";
2828
2677
  res += "^{" + b5.d + "}";
2829
2678
  }
2830
-
2831
2679
  if (b5.q) {
2832
2680
  res += "{\\vphantom{X}}";
2833
2681
  res += "_{\\smash[t]{" + b5.q + "}}";
@@ -2837,19 +2685,15 @@ var texify = {
2837
2685
  res += "{\\vphantom{X}}";
2838
2686
  res += "_{\\smash[t]{" + b5.q + "}}";
2839
2687
  }
2840
-
2841
2688
  if (b5.d) {
2842
2689
  res += "{\\vphantom{X}}";
2843
2690
  res += "^{" + b5.d + "}";
2844
2691
  }
2845
2692
  }
2846
-
2847
2693
  break;
2848
-
2849
2694
  case 'rm':
2850
2695
  res = "\\mathrm{" + buf.p1 + "}";
2851
2696
  break;
2852
-
2853
2697
  case 'text':
2854
2698
  if (buf.p1.match(/[\^_]/)) {
2855
2699
  buf.p1 = buf.p1.replace(" ", "~").replace("-", "\\text{-}");
@@ -2857,196 +2701,147 @@ var texify = {
2857
2701
  } else {
2858
2702
  res = "\\text{" + buf.p1 + "}";
2859
2703
  }
2860
-
2861
2704
  break;
2862
-
2863
2705
  case 'roman numeral':
2864
2706
  res = "\\mathrm{" + buf.p1 + "}";
2865
2707
  break;
2866
-
2867
2708
  case 'state of aggregation':
2868
2709
  res = "\\mskip2mu " + texify._goInner(buf.p1);
2869
2710
  break;
2870
-
2871
2711
  case 'state of aggregation subscript':
2872
2712
  res = "\\mskip1mu " + texify._goInner(buf.p1);
2873
2713
  break;
2874
-
2875
2714
  case 'bond':
2876
2715
  res = texify._getBond(buf.kind_);
2877
-
2878
2716
  if (!res) {
2879
2717
  throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + buf.kind_ + ")"];
2880
2718
  }
2881
-
2882
2719
  break;
2883
-
2884
2720
  case 'frac':
2885
2721
  var c = "\\frac{" + buf.p1 + "}{" + buf.p2 + "}";
2886
2722
  res = "\\mathchoice{\\textstyle" + c + "}{" + c + "}{" + c + "}{" + c + "}";
2887
2723
  break;
2888
-
2889
2724
  case 'pu-frac':
2890
2725
  var d = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
2891
2726
  res = "\\mathchoice{\\textstyle" + d + "}{" + d + "}{" + d + "}{" + d + "}";
2892
2727
  break;
2893
-
2894
2728
  case 'tex-math':
2895
2729
  res = buf.p1 + " ";
2896
2730
  break;
2897
-
2898
2731
  case 'frac-ce':
2899
2732
  res = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
2900
2733
  break;
2901
-
2902
2734
  case 'overset':
2903
2735
  res = "\\overset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
2904
2736
  break;
2905
-
2906
2737
  case 'underset':
2907
2738
  res = "\\underset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
2908
2739
  break;
2909
-
2910
2740
  case 'underbrace':
2911
2741
  res = "\\underbrace{" + texify._goInner(buf.p1) + "}_{" + texify._goInner(buf.p2) + "}";
2912
2742
  break;
2913
-
2914
2743
  case 'color':
2915
2744
  res = "{\\color{" + buf.color1 + "}{" + texify._goInner(buf.color2) + "}}";
2916
2745
  break;
2917
-
2918
2746
  case 'color0':
2919
2747
  res = "\\color{" + buf.color + "}";
2920
2748
  break;
2921
-
2922
2749
  case 'arrow':
2923
2750
  var b6 = {
2924
2751
  rd: texify._goInner(buf.rd),
2925
2752
  rq: texify._goInner(buf.rq)
2926
2753
  };
2927
-
2928
2754
  var arrow = "\\x" + texify._getArrow(buf.r);
2929
-
2930
2755
  if (b6.rq) {
2931
2756
  arrow += "[{" + b6.rq + "}]";
2932
2757
  }
2933
-
2934
2758
  if (b6.rd) {
2935
2759
  arrow += "{" + b6.rd + "}";
2936
2760
  } else {
2937
2761
  arrow += "{}";
2938
2762
  }
2939
-
2940
2763
  res = arrow;
2941
2764
  break;
2942
-
2943
2765
  case 'operator':
2944
2766
  res = texify._getOperator(buf.kind_);
2945
2767
  break;
2946
-
2947
2768
  case '1st-level escape':
2948
2769
  res = buf.p1 + " "; // &, \\\\, \\hlin
2949
-
2950
2770
  break;
2951
-
2952
2771
  case 'space':
2953
2772
  res = " ";
2954
2773
  break;
2955
-
2956
2774
  case 'entitySkip':
2957
2775
  res = "~";
2958
2776
  break;
2959
-
2960
2777
  case 'pu-space-1':
2961
2778
  res = "~";
2962
2779
  break;
2963
-
2964
2780
  case 'pu-space-2':
2965
2781
  res = "\\mkern3mu ";
2966
2782
  break;
2967
-
2968
2783
  case '1000 separator':
2969
2784
  res = "\\mkern2mu ";
2970
2785
  break;
2971
-
2972
2786
  case 'commaDecimal':
2973
2787
  res = "{,}";
2974
2788
  break;
2975
-
2976
2789
  case 'comma enumeration L':
2977
2790
  res = "{" + buf.p1 + "}\\mkern6mu ";
2978
2791
  break;
2979
-
2980
2792
  case 'comma enumeration M':
2981
2793
  res = "{" + buf.p1 + "}\\mkern3mu ";
2982
2794
  break;
2983
-
2984
2795
  case 'comma enumeration S':
2985
2796
  res = "{" + buf.p1 + "}\\mkern1mu ";
2986
2797
  break;
2987
-
2988
2798
  case 'hyphen':
2989
2799
  res = "\\text{-}";
2990
2800
  break;
2991
-
2992
2801
  case 'addition compound':
2993
2802
  res = "\\,{\\cdot}\\,";
2994
2803
  break;
2995
-
2996
2804
  case 'electron dot':
2997
2805
  res = "\\mkern1mu \\bullet\\mkern1mu ";
2998
2806
  break;
2999
-
3000
2807
  case 'KV x':
3001
2808
  res = "{\\times}";
3002
2809
  break;
3003
-
3004
2810
  case 'prime':
3005
2811
  res = "\\prime ";
3006
2812
  break;
3007
-
3008
2813
  case 'cdot':
3009
2814
  res = "\\cdot ";
3010
2815
  break;
3011
-
3012
2816
  case 'tight cdot':
3013
2817
  res = "\\mkern1mu{\\cdot}\\mkern1mu ";
3014
2818
  break;
3015
-
3016
2819
  case 'times':
3017
2820
  res = "\\times ";
3018
2821
  break;
3019
-
3020
2822
  case 'circa':
3021
2823
  res = "{\\sim}";
3022
2824
  break;
3023
-
3024
2825
  case '^':
3025
2826
  res = "uparrow";
3026
2827
  break;
3027
-
3028
2828
  case 'v':
3029
2829
  res = "downarrow";
3030
2830
  break;
3031
-
3032
2831
  case 'ellipsis':
3033
2832
  res = "\\ldots ";
3034
2833
  break;
3035
-
3036
2834
  case '/':
3037
2835
  res = "/";
3038
2836
  break;
3039
-
3040
2837
  case ' / ':
3041
2838
  res = "\\,/\\,";
3042
2839
  break;
3043
-
3044
2840
  default:
3045
2841
  assertNever(buf);
3046
2842
  throw ["MhchemBugT", "mhchem bug T. Please report."];
3047
2843
  // Missing texify rule or unknown MhchemParser output
3048
2844
  }
3049
-
3050
2845
  assertString(res);
3051
2846
  return res;
3052
2847
  },
@@ -3054,34 +2849,24 @@ var texify = {
3054
2849
  switch (a) {
3055
2850
  case "->":
3056
2851
  return "rightarrow";
3057
-
3058
2852
  case "\u2192":
3059
2853
  return "rightarrow";
3060
-
3061
2854
  case "\u27F6":
3062
2855
  return "rightarrow";
3063
-
3064
2856
  case "<-":
3065
2857
  return "leftarrow";
3066
-
3067
2858
  case "<->":
3068
2859
  return "leftrightarrow";
3069
-
3070
2860
  case "<-->":
3071
2861
  return "rightleftarrows";
3072
-
3073
2862
  case "<=>":
3074
2863
  return "rightleftharpoons";
3075
-
3076
2864
  case "\u21CC":
3077
2865
  return "rightleftharpoons";
3078
-
3079
2866
  case "<=>>":
3080
2867
  return "rightequilibrium";
3081
-
3082
2868
  case "<<=>":
3083
2869
  return "leftequilibrium";
3084
-
3085
2870
  default:
3086
2871
  assertNever(a);
3087
2872
  throw ["MhchemBugT", "mhchem bug T. Please report."];
@@ -3091,55 +2876,38 @@ var texify = {
3091
2876
  switch (a) {
3092
2877
  case "-":
3093
2878
  return "{-}";
3094
-
3095
2879
  case "1":
3096
2880
  return "{-}";
3097
-
3098
2881
  case "=":
3099
2882
  return "{=}";
3100
-
3101
2883
  case "2":
3102
2884
  return "{=}";
3103
-
3104
2885
  case "#":
3105
2886
  return "{\\equiv}";
3106
-
3107
2887
  case "3":
3108
2888
  return "{\\equiv}";
3109
-
3110
2889
  case "~":
3111
2890
  return "{\\tripledash}";
3112
-
3113
2891
  case "~-":
3114
2892
  return "{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";
3115
-
3116
2893
  case "~=":
3117
2894
  return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
3118
-
3119
2895
  case "~--":
3120
2896
  return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
3121
-
3122
2897
  case "-~-":
3123
2898
  return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";
3124
-
3125
2899
  case "...":
3126
2900
  return "{{\\cdot}{\\cdot}{\\cdot}}";
3127
-
3128
2901
  case "....":
3129
2902
  return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";
3130
-
3131
2903
  case "->":
3132
2904
  return "{\\rightarrow}";
3133
-
3134
2905
  case "<-":
3135
2906
  return "{\\leftarrow}";
3136
-
3137
2907
  case "<":
3138
2908
  return "{<}";
3139
-
3140
2909
  case ">":
3141
2910
  return "{>}";
3142
-
3143
2911
  default:
3144
2912
  assertNever(a);
3145
2913
  throw ["MhchemBugT", "mhchem bug T. Please report."];
@@ -3149,62 +2917,46 @@ var texify = {
3149
2917
  switch (a) {
3150
2918
  case "+":
3151
2919
  return " {}+{} ";
3152
-
3153
2920
  case "-":
3154
2921
  return " {}-{} ";
3155
-
3156
2922
  case "=":
3157
2923
  return " {}={} ";
3158
-
3159
2924
  case "<":
3160
2925
  return " {}<{} ";
3161
-
3162
2926
  case ">":
3163
2927
  return " {}>{} ";
3164
-
3165
2928
  case "<<":
3166
2929
  return " {}\\ll{} ";
3167
-
3168
2930
  case ">>":
3169
2931
  return " {}\\gg{} ";
3170
-
3171
2932
  case "\\pm":
3172
2933
  return " {}\\pm{} ";
3173
-
3174
2934
  case "\\approx":
3175
2935
  return " {}\\approx{} ";
3176
-
3177
2936
  case "$\\approx$":
3178
2937
  return " {}\\approx{} ";
3179
-
3180
2938
  case "v":
3181
2939
  return " \\downarrow{} ";
3182
-
3183
2940
  case "(v)":
3184
2941
  return " \\downarrow{} ";
3185
-
3186
2942
  case "^":
3187
2943
  return " \\uparrow{} ";
3188
-
3189
2944
  case "(^)":
3190
2945
  return " \\uparrow{} ";
3191
-
3192
2946
  default:
3193
2947
  assertNever(a);
3194
2948
  throw ["MhchemBugT", "mhchem bug T. Please report."];
3195
2949
  }
3196
2950
  }
3197
- }; //
2951
+ };
2952
+
2953
+ //
3198
2954
  // Helpers for code analysis
3199
2955
  // Will show type error at calling position
3200
2956
  //
3201
-
3202
2957
  /** @param {number} a */
3203
-
3204
2958
  function assertNever(a) {}
3205
2959
  /** @param {string} a */
3206
-
3207
-
3208
2960
  function assertString(a) {}
3209
2961
  __webpack_exports__ = __webpack_exports__["default"];
3210
2962
  /******/ return __webpack_exports__;