MathtoolsUtil.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. "use strict";
  2. var __read = (this && this.__read) || function (o, n) {
  3. var m = typeof Symbol === "function" && o[Symbol.iterator];
  4. if (!m) return o;
  5. var i = m.call(o), r, ar = [], e;
  6. try {
  7. while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
  8. }
  9. catch (error) { e = { error: error }; }
  10. finally {
  11. try {
  12. if (r && !r.done && (m = i["return"])) m.call(i);
  13. }
  14. finally { if (e) throw e.error; }
  15. }
  16. return ar;
  17. };
  18. var __importDefault = (this && this.__importDefault) || function (mod) {
  19. return (mod && mod.__esModule) ? mod : { "default": mod };
  20. };
  21. Object.defineProperty(exports, "__esModule", { value: true });
  22. exports.MathtoolsUtil = void 0;
  23. var BaseItems_js_1 = require("../base/BaseItems.js");
  24. var ParseUtil_js_1 = __importDefault(require("../ParseUtil.js"));
  25. var TexParser_js_1 = __importDefault(require("../TexParser.js"));
  26. var TexError_js_1 = __importDefault(require("../TexError.js"));
  27. var Symbol_js_1 = require("../Symbol.js");
  28. var Options_js_1 = require("../../../util/Options.js");
  29. var MathtoolsMethods_js_1 = require("./MathtoolsMethods.js");
  30. var MathtoolsConfiguration_js_1 = require("./MathtoolsConfiguration.js");
  31. exports.MathtoolsUtil = {
  32. setDisplayLevel: function (mml, style) {
  33. if (!style)
  34. return;
  35. var _a = __read((0, Options_js_1.lookup)(style, {
  36. '\\displaystyle': [true, 0],
  37. '\\textstyle': [false, 0],
  38. '\\scriptstyle': [false, 1],
  39. '\\scriptscriptstyle': [false, 2]
  40. }, [null, null]), 2), display = _a[0], script = _a[1];
  41. if (display !== null) {
  42. mml.attributes.set('displaystyle', display);
  43. mml.attributes.set('scriptlevel', script);
  44. }
  45. },
  46. checkAlignment: function (parser, name) {
  47. var top = parser.stack.Top();
  48. if (top.kind !== BaseItems_js_1.EqnArrayItem.prototype.kind) {
  49. throw new TexError_js_1.default('NotInAlignment', '%1 can only be used in aligment environments', name);
  50. }
  51. return top;
  52. },
  53. addPairedDelims: function (config, cs, args) {
  54. var delims = config.handlers.retrieve(MathtoolsConfiguration_js_1.PAIREDDELIMS);
  55. delims.add(cs, new Symbol_js_1.Macro(cs, MathtoolsMethods_js_1.MathtoolsMethods.PairedDelimiters, args));
  56. },
  57. spreadLines: function (mtable, spread) {
  58. if (!mtable.isKind('mtable'))
  59. return;
  60. var rowspacing = mtable.attributes.get('rowspacing');
  61. if (rowspacing) {
  62. var add_1 = ParseUtil_js_1.default.dimen2em(spread);
  63. rowspacing = rowspacing
  64. .split(/ /)
  65. .map(function (s) { return ParseUtil_js_1.default.Em(Math.max(0, ParseUtil_js_1.default.dimen2em(s) + add_1)); })
  66. .join(' ');
  67. }
  68. else {
  69. rowspacing = spread;
  70. }
  71. mtable.attributes.set('rowspacing', rowspacing);
  72. },
  73. plusOrMinus: function (name, n) {
  74. n = n.trim();
  75. if (!n.match(/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)$/)) {
  76. throw new TexError_js_1.default('NotANumber', 'Argument to %1 is not a number', name);
  77. }
  78. return (n.match(/^[-+]/) ? n : '+' + n);
  79. },
  80. getScript: function (parser, name, pos) {
  81. var arg = ParseUtil_js_1.default.trimSpaces(parser.GetArgument(name));
  82. if (arg === '') {
  83. return parser.create('node', 'none');
  84. }
  85. var format = parser.options.mathtools["prescript-".concat(pos, "-format")];
  86. format && (arg = "".concat(format, "{").concat(arg, "}"));
  87. return new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
  88. }
  89. };
  90. //# sourceMappingURL=MathtoolsUtil.js.map