MathtoolsMethods.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. "use strict";
  2. var __assign = (this && this.__assign) || function () {
  3. __assign = Object.assign || function(t) {
  4. for (var s, i = 1, n = arguments.length; i < n; i++) {
  5. s = arguments[i];
  6. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  7. t[p] = s[p];
  8. }
  9. return t;
  10. };
  11. return __assign.apply(this, arguments);
  12. };
  13. var __read = (this && this.__read) || function (o, n) {
  14. var m = typeof Symbol === "function" && o[Symbol.iterator];
  15. if (!m) return o;
  16. var i = m.call(o), r, ar = [], e;
  17. try {
  18. while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
  19. }
  20. catch (error) { e = { error: error }; }
  21. finally {
  22. try {
  23. if (r && !r.done && (m = i["return"])) m.call(i);
  24. }
  25. finally { if (e) throw e.error; }
  26. }
  27. return ar;
  28. };
  29. var __values = (this && this.__values) || function(o) {
  30. var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
  31. if (m) return m.call(o);
  32. if (o && typeof o.length === "number") return {
  33. next: function () {
  34. if (o && i >= o.length) o = void 0;
  35. return { value: o && o[i++], done: !o };
  36. }
  37. };
  38. throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
  39. };
  40. var __importDefault = (this && this.__importDefault) || function (mod) {
  41. return (mod && mod.__esModule) ? mod : { "default": mod };
  42. };
  43. Object.defineProperty(exports, "__esModule", { value: true });
  44. exports.MathtoolsMethods = void 0;
  45. var ParseUtil_js_1 = __importDefault(require("../ParseUtil.js"));
  46. var AmsMethods_js_1 = require("../ams/AmsMethods.js");
  47. var BaseMethods_js_1 = __importDefault(require("../base/BaseMethods.js"));
  48. var TexParser_js_1 = __importDefault(require("../TexParser.js"));
  49. var TexError_js_1 = __importDefault(require("../TexError.js"));
  50. var NodeUtil_js_1 = __importDefault(require("../NodeUtil.js"));
  51. var MmlNode_js_1 = require("../../../core/MmlTree/MmlNode.js");
  52. var lengths_js_1 = require("../../../util/lengths.js");
  53. var Options_js_1 = require("../../../util/Options.js");
  54. var NewcommandUtil_js_1 = __importDefault(require("../newcommand/NewcommandUtil.js"));
  55. var NewcommandMethods_js_1 = __importDefault(require("../newcommand/NewcommandMethods.js"));
  56. var MathtoolsUtil_js_1 = require("./MathtoolsUtil.js");
  57. exports.MathtoolsMethods = {
  58. MtMatrix: function (parser, begin, open, close) {
  59. var align = parser.GetBrackets("\\begin{".concat(begin.getName(), "}"), 'c');
  60. return exports.MathtoolsMethods.Array(parser, begin, open, close, align);
  61. },
  62. MtSmallMatrix: function (parser, begin, open, close, align) {
  63. if (!align) {
  64. align = parser.GetBrackets("\\begin{".concat(begin.getName(), "}"), parser.options.mathtools['smallmatrix-align']);
  65. }
  66. return exports.MathtoolsMethods.Array(parser, begin, open, close, align, ParseUtil_js_1.default.Em(1 / 3), '.2em', 'S', 1);
  67. },
  68. MtMultlined: function (parser, begin) {
  69. var _a;
  70. var name = "\\begin{".concat(begin.getName(), "}");
  71. var pos = parser.GetBrackets(name, parser.options.mathtools['multlined-pos'] || 'c');
  72. var width = pos ? parser.GetBrackets(name, '') : '';
  73. if (pos && !pos.match(/^[cbt]$/)) {
  74. _a = __read([pos, width], 2), width = _a[0], pos = _a[1];
  75. }
  76. parser.Push(begin);
  77. var item = parser.itemFactory.create('multlined', parser, begin);
  78. item.arraydef = {
  79. displaystyle: true,
  80. rowspacing: '.5em',
  81. width: width || 'auto',
  82. columnwidth: '100%',
  83. };
  84. return ParseUtil_js_1.default.setArrayAlign(item, pos || 'c');
  85. },
  86. HandleShove: function (parser, name, shove) {
  87. var top = parser.stack.Top();
  88. if (top.kind !== 'multline' && top.kind !== 'multlined') {
  89. throw new TexError_js_1.default('CommandInMultlined', '%1 can only appear within the multline or multlined environments', name);
  90. }
  91. if (top.Size()) {
  92. throw new TexError_js_1.default('CommandAtTheBeginingOfLine', '%1 must come at the beginning of the line', name);
  93. }
  94. top.setProperty('shove', shove);
  95. var shift = parser.GetBrackets(name);
  96. var mml = parser.ParseArg(name);
  97. if (shift) {
  98. var mrow = parser.create('node', 'mrow', []);
  99. var mspace = parser.create('node', 'mspace', [], { width: shift });
  100. if (shove === 'left') {
  101. mrow.appendChild(mspace);
  102. mrow.appendChild(mml);
  103. }
  104. else {
  105. mrow.appendChild(mml);
  106. mrow.appendChild(mspace);
  107. }
  108. mml = mrow;
  109. }
  110. parser.Push(mml);
  111. },
  112. SpreadLines: function (parser, begin) {
  113. var e_1, _a;
  114. if (parser.stack.env.closing === begin.getName()) {
  115. delete parser.stack.env.closing;
  116. var top_1 = parser.stack.Pop();
  117. var mml = top_1.toMml();
  118. var spread = top_1.getProperty('spread');
  119. if (mml.isInferred) {
  120. try {
  121. for (var _b = __values(NodeUtil_js_1.default.getChildren(mml)), _c = _b.next(); !_c.done; _c = _b.next()) {
  122. var child = _c.value;
  123. MathtoolsUtil_js_1.MathtoolsUtil.spreadLines(child, spread);
  124. }
  125. }
  126. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  127. finally {
  128. try {
  129. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  130. }
  131. finally { if (e_1) throw e_1.error; }
  132. }
  133. }
  134. else {
  135. MathtoolsUtil_js_1.MathtoolsUtil.spreadLines(mml, spread);
  136. }
  137. parser.Push(mml);
  138. }
  139. else {
  140. var spread = parser.GetDimen("\\begin{".concat(begin.getName(), "}"));
  141. begin.setProperty('spread', spread);
  142. parser.Push(begin);
  143. }
  144. },
  145. Cases: function (parser, begin, open, close, style) {
  146. var array = parser.itemFactory.create('array').setProperty('casesEnv', begin.getName());
  147. array.arraydef = {
  148. rowspacing: '.2em',
  149. columnspacing: '1em',
  150. columnalign: 'left'
  151. };
  152. if (style === 'D') {
  153. array.arraydef.displaystyle = true;
  154. }
  155. array.setProperties({ open: open, close: close });
  156. parser.Push(begin);
  157. return array;
  158. },
  159. MathLap: function (parser, name, pos, cramped) {
  160. var style = parser.GetBrackets(name, '').trim();
  161. var mml = parser.create('node', 'mstyle', [
  162. parser.create('node', 'mpadded', [parser.ParseArg(name)], __assign({ width: 0 }, (pos === 'r' ? {} : { lspace: (pos === 'l' ? '-1width' : '-.5width') })))
  163. ], { 'data-cramped': cramped });
  164. MathtoolsUtil_js_1.MathtoolsUtil.setDisplayLevel(mml, style);
  165. parser.Push(parser.create('node', 'TeXAtom', [mml]));
  166. },
  167. Cramped: function (parser, name) {
  168. var style = parser.GetBrackets(name, '').trim();
  169. var arg = parser.ParseArg(name);
  170. var mml = parser.create('node', 'mstyle', [arg], { 'data-cramped': true });
  171. MathtoolsUtil_js_1.MathtoolsUtil.setDisplayLevel(mml, style);
  172. parser.Push(mml);
  173. },
  174. MtLap: function (parser, name, pos) {
  175. var content = ParseUtil_js_1.default.internalMath(parser, parser.GetArgument(name), 0);
  176. var mml = parser.create('node', 'mpadded', content, { width: 0 });
  177. if (pos !== 'r') {
  178. NodeUtil_js_1.default.setAttribute(mml, 'lspace', pos === 'l' ? '-1width' : '-.5width');
  179. }
  180. parser.Push(mml);
  181. },
  182. MathMakeBox: function (parser, name) {
  183. var width = parser.GetBrackets(name);
  184. var pos = parser.GetBrackets(name, 'c');
  185. var mml = parser.create('node', 'mpadded', [parser.ParseArg(name)]);
  186. if (width) {
  187. NodeUtil_js_1.default.setAttribute(mml, 'width', width);
  188. }
  189. var align = (0, Options_js_1.lookup)(pos, { c: 'center', r: 'right' }, '');
  190. if (align) {
  191. NodeUtil_js_1.default.setAttribute(mml, 'data-align', align);
  192. }
  193. parser.Push(mml);
  194. },
  195. MathMBox: function (parser, name) {
  196. parser.Push(parser.create('node', 'mrow', [parser.ParseArg(name)]));
  197. },
  198. UnderOverBracket: function (parser, name) {
  199. var thickness = (0, lengths_js_1.length2em)(parser.GetBrackets(name, '.1em'), .1);
  200. var height = parser.GetBrackets(name, '.2em');
  201. var arg = parser.GetArgument(name);
  202. var _a = __read((name.charAt(1) === 'o' ?
  203. ['over', 'accent', 'bottom'] :
  204. ['under', 'accentunder', 'top']), 3), pos = _a[0], accent = _a[1], border = _a[2];
  205. var t = (0, lengths_js_1.em)(thickness);
  206. var base = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
  207. var copy = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
  208. var script = parser.create('node', 'mpadded', [
  209. parser.create('node', 'mphantom', [copy])
  210. ], {
  211. style: "border: ".concat(t, " solid; border-").concat(border, ": none"),
  212. height: height,
  213. depth: 0
  214. });
  215. var node = ParseUtil_js_1.default.underOver(parser, base, script, pos, true);
  216. var munderover = NodeUtil_js_1.default.getChildAt(NodeUtil_js_1.default.getChildAt(node, 0), 0);
  217. NodeUtil_js_1.default.setAttribute(munderover, accent, true);
  218. parser.Push(node);
  219. },
  220. Aboxed: function (parser, name) {
  221. var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
  222. if (top.row.length % 2 === 1) {
  223. top.row.push(parser.create('node', 'mtd', []));
  224. }
  225. var arg = parser.GetArgument(name);
  226. var rest = parser.string.substr(parser.i);
  227. parser.string = arg + '&&\\endAboxed';
  228. parser.i = 0;
  229. var left = parser.GetUpTo(name, '&');
  230. var right = parser.GetUpTo(name, '&');
  231. parser.GetUpTo(name, '\\endAboxed');
  232. var tex = ParseUtil_js_1.default.substituteArgs(parser, [left, right], '\\rlap{\\boxed{#1{}#2}}\\kern.267em\\phantom{#1}&\\phantom{{}#2}\\kern.267em');
  233. parser.string = tex + rest;
  234. parser.i = 0;
  235. },
  236. ArrowBetweenLines: function (parser, name) {
  237. var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
  238. if (top.Size() || top.row.length) {
  239. throw new TexError_js_1.default('BetweenLines', '%1 must be on a row by itself', name);
  240. }
  241. var star = parser.GetStar();
  242. var symbol = parser.GetBrackets(name, '\\Updownarrow');
  243. if (star) {
  244. top.EndEntry();
  245. top.EndEntry();
  246. }
  247. var tex = (star ? '\\quad' + symbol : symbol + '\\quad');
  248. var mml = new TexParser_js_1.default(tex, parser.stack.env, parser.configuration).mml();
  249. parser.Push(mml);
  250. top.EndEntry();
  251. top.EndRow();
  252. },
  253. VDotsWithin: function (parser, name) {
  254. var top = parser.stack.Top();
  255. var isFlush = (top.getProperty('flushspaceabove') === top.table.length);
  256. var arg = '\\mmlToken{mi}{}' + parser.GetArgument(name) + '\\mmlToken{mi}{}';
  257. var base = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
  258. var mml = parser.create('node', 'mpadded', [
  259. parser.create('node', 'mpadded', [
  260. parser.create('node', 'mo', [
  261. parser.create('text', '\u22EE')
  262. ])
  263. ], __assign({ width: 0, lspace: '-.5width' }, (isFlush ? { height: '-.6em', voffset: '-.18em' } : {}))),
  264. parser.create('node', 'mphantom', [base])
  265. ], {
  266. lspace: '.5width'
  267. });
  268. parser.Push(mml);
  269. },
  270. ShortVDotsWithin: function (parser, _name) {
  271. var top = parser.stack.Top();
  272. var star = parser.GetStar();
  273. exports.MathtoolsMethods.FlushSpaceAbove(parser, '\\MTFlushSpaceAbove');
  274. !star && top.EndEntry();
  275. exports.MathtoolsMethods.VDotsWithin(parser, '\\vdotswithin');
  276. star && top.EndEntry();
  277. exports.MathtoolsMethods.FlushSpaceBelow(parser, '\\MTFlushSpaceBelow');
  278. },
  279. FlushSpaceAbove: function (parser, name) {
  280. var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
  281. top.setProperty('flushspaceabove', top.table.length);
  282. top.addRowSpacing('-' + parser.options.mathtools['shortvdotsadjustabove']);
  283. },
  284. FlushSpaceBelow: function (parser, name) {
  285. var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
  286. top.Size() && top.EndEntry();
  287. top.EndRow();
  288. top.addRowSpacing('-' + parser.options.mathtools['shortvdotsadjustbelow']);
  289. },
  290. PairedDelimiters: function (parser, name, open, close, body, n, pre, post) {
  291. if (body === void 0) { body = '#1'; }
  292. if (n === void 0) { n = 1; }
  293. if (pre === void 0) { pre = ''; }
  294. if (post === void 0) { post = ''; }
  295. var star = parser.GetStar();
  296. var size = (star ? '' : parser.GetBrackets(name));
  297. var _a = __read((star ? ['\\left', '\\right'] : size ? [size + 'l', size + 'r'] : ['', '']), 2), left = _a[0], right = _a[1];
  298. var delim = (star ? '\\middle' : size || '');
  299. if (n) {
  300. var args = [];
  301. for (var i = args.length; i < n; i++) {
  302. args.push(parser.GetArgument(name));
  303. }
  304. pre = ParseUtil_js_1.default.substituteArgs(parser, args, pre);
  305. body = ParseUtil_js_1.default.substituteArgs(parser, args, body);
  306. post = ParseUtil_js_1.default.substituteArgs(parser, args, post);
  307. }
  308. body = body.replace(/\\delimsize/g, delim);
  309. parser.string = [pre, left, open, body, right, close, post, parser.string.substr(parser.i)]
  310. .reduce(function (s, part) { return ParseUtil_js_1.default.addArgs(parser, s, part); }, '');
  311. parser.i = 0;
  312. ParseUtil_js_1.default.checkMaxMacros(parser);
  313. },
  314. DeclarePairedDelimiter: function (parser, name) {
  315. var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
  316. var open = parser.GetArgument(name);
  317. var close = parser.GetArgument(name);
  318. MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close]);
  319. },
  320. DeclarePairedDelimiterX: function (parser, name) {
  321. var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
  322. var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
  323. var open = parser.GetArgument(name);
  324. var close = parser.GetArgument(name);
  325. var body = parser.GetArgument(name);
  326. MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close, body, n]);
  327. },
  328. DeclarePairedDelimiterXPP: function (parser, name) {
  329. var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
  330. var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
  331. var pre = parser.GetArgument(name);
  332. var open = parser.GetArgument(name);
  333. var close = parser.GetArgument(name);
  334. var post = parser.GetArgument(name);
  335. var body = parser.GetArgument(name);
  336. MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close, body, n, pre, post]);
  337. },
  338. CenterColon: function (parser, _name, center, force, thin) {
  339. if (force === void 0) { force = false; }
  340. if (thin === void 0) { thin = false; }
  341. var options = parser.options.mathtools;
  342. var mml = parser.create('token', 'mo', {}, ':');
  343. if (center && (options['centercolon'] || force)) {
  344. var dy = options['centercolon-offset'];
  345. mml = parser.create('node', 'mpadded', [mml], __assign({ voffset: dy, height: "+".concat(dy), depth: "-".concat(dy) }, (thin ? { width: options['thincolon-dw'], lspace: options['thincolon-dx'] } : {})));
  346. }
  347. parser.Push(mml);
  348. },
  349. Relation: function (parser, _name, tex, unicode) {
  350. var options = parser.options.mathtools;
  351. if (options['use-unicode'] && unicode) {
  352. parser.Push(parser.create('token', 'mo', { texClass: MmlNode_js_1.TEXCLASS.REL }, unicode));
  353. }
  354. else {
  355. tex = '\\mathrel{' + tex.replace(/:/g, '\\MTThinColon').replace(/-/g, '\\mathrel{-}') + '}';
  356. parser.string = ParseUtil_js_1.default.addArgs(parser, tex, parser.string.substr(parser.i));
  357. parser.i = 0;
  358. }
  359. },
  360. NArrow: function (parser, _name, c, dy) {
  361. parser.Push(parser.create('node', 'TeXAtom', [
  362. parser.create('token', 'mtext', {}, c),
  363. parser.create('node', 'mpadded', [
  364. parser.create('node', 'mpadded', [
  365. parser.create('node', 'menclose', [
  366. parser.create('node', 'mspace', [], { height: '.2em', depth: 0, width: '.4em' })
  367. ], { notation: 'updiagonalstrike', 'data-thickness': '.05em', 'data-padding': 0 })
  368. ], { width: 0, lspace: '-.5width', voffset: dy }),
  369. parser.create('node', 'mphantom', [
  370. parser.create('token', 'mtext', {}, c)
  371. ])
  372. ], { width: 0, lspace: '-.5width' })
  373. ], { texClass: MmlNode_js_1.TEXCLASS.REL }));
  374. },
  375. SplitFrac: function (parser, name, display) {
  376. var num = parser.ParseArg(name);
  377. var den = parser.ParseArg(name);
  378. parser.Push(parser.create('node', 'mstyle', [
  379. parser.create('node', 'mfrac', [
  380. parser.create('node', 'mstyle', [
  381. num,
  382. parser.create('token', 'mi'),
  383. parser.create('token', 'mspace', { width: '1em' })
  384. ], { scriptlevel: 0 }),
  385. parser.create('node', 'mstyle', [
  386. parser.create('token', 'mspace', { width: '1em' }),
  387. parser.create('token', 'mi'),
  388. den
  389. ], { scriptlevel: 0 })
  390. ], { linethickness: 0, numalign: 'left', denomalign: 'right' })
  391. ], { displaystyle: display, scriptlevel: 0 }));
  392. },
  393. XMathStrut: function (parser, name) {
  394. var dd = parser.GetBrackets(name);
  395. var dh = parser.GetArgument(name);
  396. dh = MathtoolsUtil_js_1.MathtoolsUtil.plusOrMinus(name, dh);
  397. dd = MathtoolsUtil_js_1.MathtoolsUtil.plusOrMinus(name, dd || dh);
  398. parser.Push(parser.create('node', 'TeXAtom', [
  399. parser.create('node', 'mpadded', [
  400. parser.create('node', 'mphantom', [
  401. parser.create('token', 'mo', { stretchy: false }, '(')
  402. ])
  403. ], { width: 0, height: dh + 'height', depth: dd + 'depth' })
  404. ], { texClass: MmlNode_js_1.TEXCLASS.ORD }));
  405. },
  406. Prescript: function (parser, name) {
  407. var sup = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'sup');
  408. var sub = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'sub');
  409. var base = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'arg');
  410. if (NodeUtil_js_1.default.isType(sup, 'none') && NodeUtil_js_1.default.isType(sub, 'none')) {
  411. parser.Push(base);
  412. return;
  413. }
  414. var mml = parser.create('node', 'mmultiscripts', [base]);
  415. NodeUtil_js_1.default.getChildren(mml).push(null, null);
  416. NodeUtil_js_1.default.appendChildren(mml, [parser.create('node', 'mprescripts'), sub, sup]);
  417. mml.setProperty('fixPrescript', true);
  418. parser.Push(mml);
  419. },
  420. NewTagForm: function (parser, name, renew) {
  421. if (renew === void 0) { renew = false; }
  422. var tags = parser.tags;
  423. if (!('mtFormats' in tags)) {
  424. throw new TexError_js_1.default('TagsNotMT', '%1 can only be used with ams or mathtools tags', name);
  425. }
  426. var id = parser.GetArgument(name).trim();
  427. if (!id) {
  428. throw new TexError_js_1.default('InvalidTagFormID', 'Tag form name can\'t be empty');
  429. }
  430. var format = parser.GetBrackets(name, '');
  431. var left = parser.GetArgument(name);
  432. var right = parser.GetArgument(name);
  433. if (!renew && tags.mtFormats.has(id)) {
  434. throw new TexError_js_1.default('DuplicateTagForm', 'Duplicate tag form: %1', id);
  435. }
  436. tags.mtFormats.set(id, [left, right, format]);
  437. },
  438. UseTagForm: function (parser, name) {
  439. var tags = parser.tags;
  440. if (!('mtFormats' in tags)) {
  441. throw new TexError_js_1.default('TagsNotMT', '%1 can only be used with ams or mathtools tags', name);
  442. }
  443. var id = parser.GetArgument(name).trim();
  444. if (!id) {
  445. tags.mtCurrent = null;
  446. return;
  447. }
  448. if (!tags.mtFormats.has(id)) {
  449. throw new TexError_js_1.default('UndefinedTagForm', 'Undefined tag form: %1', id);
  450. }
  451. tags.mtCurrent = tags.mtFormats.get(id);
  452. },
  453. SetOptions: function (parser, name) {
  454. var e_2, _a;
  455. var options = parser.options.mathtools;
  456. if (!options['allow-mathtoolsset']) {
  457. throw new TexError_js_1.default('ForbiddenMathtoolsSet', '%1 is disabled', name);
  458. }
  459. var allowed = {};
  460. Object.keys(options).forEach(function (id) {
  461. if (id !== 'pariedDelimiters' && id !== 'tagforms' && id !== 'allow-mathtoolsset') {
  462. allowed[id] = 1;
  463. }
  464. });
  465. var args = parser.GetArgument(name);
  466. var keys = ParseUtil_js_1.default.keyvalOptions(args, allowed, true);
  467. try {
  468. for (var _b = __values(Object.keys(keys)), _c = _b.next(); !_c.done; _c = _b.next()) {
  469. var id = _c.value;
  470. options[id] = keys[id];
  471. }
  472. }
  473. catch (e_2_1) { e_2 = { error: e_2_1 }; }
  474. finally {
  475. try {
  476. if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
  477. }
  478. finally { if (e_2) throw e_2.error; }
  479. }
  480. },
  481. Array: BaseMethods_js_1.default.Array,
  482. Macro: BaseMethods_js_1.default.Macro,
  483. xArrow: AmsMethods_js_1.AmsMethods.xArrow,
  484. HandleRef: AmsMethods_js_1.AmsMethods.HandleRef,
  485. AmsEqnArray: AmsMethods_js_1.AmsMethods.AmsEqnArray,
  486. MacroWithTemplate: NewcommandMethods_js_1.default.MacroWithTemplate,
  487. };
  488. //# sourceMappingURL=MathtoolsMethods.js.map