123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- "use strict";
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var __read = (this && this.__read) || function (o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- };
- var __values = (this && this.__values) || function(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
- };
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.MathtoolsMethods = void 0;
- var ParseUtil_js_1 = __importDefault(require("../ParseUtil.js"));
- var AmsMethods_js_1 = require("../ams/AmsMethods.js");
- var BaseMethods_js_1 = __importDefault(require("../base/BaseMethods.js"));
- var TexParser_js_1 = __importDefault(require("../TexParser.js"));
- var TexError_js_1 = __importDefault(require("../TexError.js"));
- var NodeUtil_js_1 = __importDefault(require("../NodeUtil.js"));
- var MmlNode_js_1 = require("../../../core/MmlTree/MmlNode.js");
- var lengths_js_1 = require("../../../util/lengths.js");
- var Options_js_1 = require("../../../util/Options.js");
- var NewcommandUtil_js_1 = __importDefault(require("../newcommand/NewcommandUtil.js"));
- var NewcommandMethods_js_1 = __importDefault(require("../newcommand/NewcommandMethods.js"));
- var MathtoolsUtil_js_1 = require("./MathtoolsUtil.js");
- exports.MathtoolsMethods = {
- MtMatrix: function (parser, begin, open, close) {
- var align = parser.GetBrackets("\\begin{".concat(begin.getName(), "}"), 'c');
- return exports.MathtoolsMethods.Array(parser, begin, open, close, align);
- },
- MtSmallMatrix: function (parser, begin, open, close, align) {
- if (!align) {
- align = parser.GetBrackets("\\begin{".concat(begin.getName(), "}"), parser.options.mathtools['smallmatrix-align']);
- }
- return exports.MathtoolsMethods.Array(parser, begin, open, close, align, ParseUtil_js_1.default.Em(1 / 3), '.2em', 'S', 1);
- },
- MtMultlined: function (parser, begin) {
- var _a;
- var name = "\\begin{".concat(begin.getName(), "}");
- var pos = parser.GetBrackets(name, parser.options.mathtools['multlined-pos'] || 'c');
- var width = pos ? parser.GetBrackets(name, '') : '';
- if (pos && !pos.match(/^[cbt]$/)) {
- _a = __read([pos, width], 2), width = _a[0], pos = _a[1];
- }
- parser.Push(begin);
- var item = parser.itemFactory.create('multlined', parser, begin);
- item.arraydef = {
- displaystyle: true,
- rowspacing: '.5em',
- width: width || 'auto',
- columnwidth: '100%',
- };
- return ParseUtil_js_1.default.setArrayAlign(item, pos || 'c');
- },
- HandleShove: function (parser, name, shove) {
- var top = parser.stack.Top();
- if (top.kind !== 'multline' && top.kind !== 'multlined') {
- throw new TexError_js_1.default('CommandInMultlined', '%1 can only appear within the multline or multlined environments', name);
- }
- if (top.Size()) {
- throw new TexError_js_1.default('CommandAtTheBeginingOfLine', '%1 must come at the beginning of the line', name);
- }
- top.setProperty('shove', shove);
- var shift = parser.GetBrackets(name);
- var mml = parser.ParseArg(name);
- if (shift) {
- var mrow = parser.create('node', 'mrow', []);
- var mspace = parser.create('node', 'mspace', [], { width: shift });
- if (shove === 'left') {
- mrow.appendChild(mspace);
- mrow.appendChild(mml);
- }
- else {
- mrow.appendChild(mml);
- mrow.appendChild(mspace);
- }
- mml = mrow;
- }
- parser.Push(mml);
- },
- SpreadLines: function (parser, begin) {
- var e_1, _a;
- if (parser.stack.env.closing === begin.getName()) {
- delete parser.stack.env.closing;
- var top_1 = parser.stack.Pop();
- var mml = top_1.toMml();
- var spread = top_1.getProperty('spread');
- if (mml.isInferred) {
- try {
- for (var _b = __values(NodeUtil_js_1.default.getChildren(mml)), _c = _b.next(); !_c.done; _c = _b.next()) {
- var child = _c.value;
- MathtoolsUtil_js_1.MathtoolsUtil.spreadLines(child, spread);
- }
- }
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
- finally {
- try {
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
- }
- finally { if (e_1) throw e_1.error; }
- }
- }
- else {
- MathtoolsUtil_js_1.MathtoolsUtil.spreadLines(mml, spread);
- }
- parser.Push(mml);
- }
- else {
- var spread = parser.GetDimen("\\begin{".concat(begin.getName(), "}"));
- begin.setProperty('spread', spread);
- parser.Push(begin);
- }
- },
- Cases: function (parser, begin, open, close, style) {
- var array = parser.itemFactory.create('array').setProperty('casesEnv', begin.getName());
- array.arraydef = {
- rowspacing: '.2em',
- columnspacing: '1em',
- columnalign: 'left'
- };
- if (style === 'D') {
- array.arraydef.displaystyle = true;
- }
- array.setProperties({ open: open, close: close });
- parser.Push(begin);
- return array;
- },
- MathLap: function (parser, name, pos, cramped) {
- var style = parser.GetBrackets(name, '').trim();
- var mml = parser.create('node', 'mstyle', [
- parser.create('node', 'mpadded', [parser.ParseArg(name)], __assign({ width: 0 }, (pos === 'r' ? {} : { lspace: (pos === 'l' ? '-1width' : '-.5width') })))
- ], { 'data-cramped': cramped });
- MathtoolsUtil_js_1.MathtoolsUtil.setDisplayLevel(mml, style);
- parser.Push(parser.create('node', 'TeXAtom', [mml]));
- },
- Cramped: function (parser, name) {
- var style = parser.GetBrackets(name, '').trim();
- var arg = parser.ParseArg(name);
- var mml = parser.create('node', 'mstyle', [arg], { 'data-cramped': true });
- MathtoolsUtil_js_1.MathtoolsUtil.setDisplayLevel(mml, style);
- parser.Push(mml);
- },
- MtLap: function (parser, name, pos) {
- var content = ParseUtil_js_1.default.internalMath(parser, parser.GetArgument(name), 0);
- var mml = parser.create('node', 'mpadded', content, { width: 0 });
- if (pos !== 'r') {
- NodeUtil_js_1.default.setAttribute(mml, 'lspace', pos === 'l' ? '-1width' : '-.5width');
- }
- parser.Push(mml);
- },
- MathMakeBox: function (parser, name) {
- var width = parser.GetBrackets(name);
- var pos = parser.GetBrackets(name, 'c');
- var mml = parser.create('node', 'mpadded', [parser.ParseArg(name)]);
- if (width) {
- NodeUtil_js_1.default.setAttribute(mml, 'width', width);
- }
- var align = (0, Options_js_1.lookup)(pos, { c: 'center', r: 'right' }, '');
- if (align) {
- NodeUtil_js_1.default.setAttribute(mml, 'data-align', align);
- }
- parser.Push(mml);
- },
- MathMBox: function (parser, name) {
- parser.Push(parser.create('node', 'mrow', [parser.ParseArg(name)]));
- },
- UnderOverBracket: function (parser, name) {
- var thickness = (0, lengths_js_1.length2em)(parser.GetBrackets(name, '.1em'), .1);
- var height = parser.GetBrackets(name, '.2em');
- var arg = parser.GetArgument(name);
- var _a = __read((name.charAt(1) === 'o' ?
- ['over', 'accent', 'bottom'] :
- ['under', 'accentunder', 'top']), 3), pos = _a[0], accent = _a[1], border = _a[2];
- var t = (0, lengths_js_1.em)(thickness);
- var base = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
- var copy = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
- var script = parser.create('node', 'mpadded', [
- parser.create('node', 'mphantom', [copy])
- ], {
- style: "border: ".concat(t, " solid; border-").concat(border, ": none"),
- height: height,
- depth: 0
- });
- var node = ParseUtil_js_1.default.underOver(parser, base, script, pos, true);
- var munderover = NodeUtil_js_1.default.getChildAt(NodeUtil_js_1.default.getChildAt(node, 0), 0);
- NodeUtil_js_1.default.setAttribute(munderover, accent, true);
- parser.Push(node);
- },
- Aboxed: function (parser, name) {
- var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
- if (top.row.length % 2 === 1) {
- top.row.push(parser.create('node', 'mtd', []));
- }
- var arg = parser.GetArgument(name);
- var rest = parser.string.substr(parser.i);
- parser.string = arg + '&&\\endAboxed';
- parser.i = 0;
- var left = parser.GetUpTo(name, '&');
- var right = parser.GetUpTo(name, '&');
- parser.GetUpTo(name, '\\endAboxed');
- var tex = ParseUtil_js_1.default.substituteArgs(parser, [left, right], '\\rlap{\\boxed{#1{}#2}}\\kern.267em\\phantom{#1}&\\phantom{{}#2}\\kern.267em');
- parser.string = tex + rest;
- parser.i = 0;
- },
- ArrowBetweenLines: function (parser, name) {
- var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
- if (top.Size() || top.row.length) {
- throw new TexError_js_1.default('BetweenLines', '%1 must be on a row by itself', name);
- }
- var star = parser.GetStar();
- var symbol = parser.GetBrackets(name, '\\Updownarrow');
- if (star) {
- top.EndEntry();
- top.EndEntry();
- }
- var tex = (star ? '\\quad' + symbol : symbol + '\\quad');
- var mml = new TexParser_js_1.default(tex, parser.stack.env, parser.configuration).mml();
- parser.Push(mml);
- top.EndEntry();
- top.EndRow();
- },
- VDotsWithin: function (parser, name) {
- var top = parser.stack.Top();
- var isFlush = (top.getProperty('flushspaceabove') === top.table.length);
- var arg = '\\mmlToken{mi}{}' + parser.GetArgument(name) + '\\mmlToken{mi}{}';
- var base = new TexParser_js_1.default(arg, parser.stack.env, parser.configuration).mml();
- var mml = parser.create('node', 'mpadded', [
- parser.create('node', 'mpadded', [
- parser.create('node', 'mo', [
- parser.create('text', '\u22EE')
- ])
- ], __assign({ width: 0, lspace: '-.5width' }, (isFlush ? { height: '-.6em', voffset: '-.18em' } : {}))),
- parser.create('node', 'mphantom', [base])
- ], {
- lspace: '.5width'
- });
- parser.Push(mml);
- },
- ShortVDotsWithin: function (parser, _name) {
- var top = parser.stack.Top();
- var star = parser.GetStar();
- exports.MathtoolsMethods.FlushSpaceAbove(parser, '\\MTFlushSpaceAbove');
- !star && top.EndEntry();
- exports.MathtoolsMethods.VDotsWithin(parser, '\\vdotswithin');
- star && top.EndEntry();
- exports.MathtoolsMethods.FlushSpaceBelow(parser, '\\MTFlushSpaceBelow');
- },
- FlushSpaceAbove: function (parser, name) {
- var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
- top.setProperty('flushspaceabove', top.table.length);
- top.addRowSpacing('-' + parser.options.mathtools['shortvdotsadjustabove']);
- },
- FlushSpaceBelow: function (parser, name) {
- var top = MathtoolsUtil_js_1.MathtoolsUtil.checkAlignment(parser, name);
- top.Size() && top.EndEntry();
- top.EndRow();
- top.addRowSpacing('-' + parser.options.mathtools['shortvdotsadjustbelow']);
- },
- PairedDelimiters: function (parser, name, open, close, body, n, pre, post) {
- if (body === void 0) { body = '#1'; }
- if (n === void 0) { n = 1; }
- if (pre === void 0) { pre = ''; }
- if (post === void 0) { post = ''; }
- var star = parser.GetStar();
- var size = (star ? '' : parser.GetBrackets(name));
- var _a = __read((star ? ['\\left', '\\right'] : size ? [size + 'l', size + 'r'] : ['', '']), 2), left = _a[0], right = _a[1];
- var delim = (star ? '\\middle' : size || '');
- if (n) {
- var args = [];
- for (var i = args.length; i < n; i++) {
- args.push(parser.GetArgument(name));
- }
- pre = ParseUtil_js_1.default.substituteArgs(parser, args, pre);
- body = ParseUtil_js_1.default.substituteArgs(parser, args, body);
- post = ParseUtil_js_1.default.substituteArgs(parser, args, post);
- }
- body = body.replace(/\\delimsize/g, delim);
- parser.string = [pre, left, open, body, right, close, post, parser.string.substr(parser.i)]
- .reduce(function (s, part) { return ParseUtil_js_1.default.addArgs(parser, s, part); }, '');
- parser.i = 0;
- ParseUtil_js_1.default.checkMaxMacros(parser);
- },
- DeclarePairedDelimiter: function (parser, name) {
- var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
- var open = parser.GetArgument(name);
- var close = parser.GetArgument(name);
- MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close]);
- },
- DeclarePairedDelimiterX: function (parser, name) {
- var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
- var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
- var open = parser.GetArgument(name);
- var close = parser.GetArgument(name);
- var body = parser.GetArgument(name);
- MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close, body, n]);
- },
- DeclarePairedDelimiterXPP: function (parser, name) {
- var cs = NewcommandUtil_js_1.default.GetCsNameArgument(parser, name);
- var n = NewcommandUtil_js_1.default.GetArgCount(parser, name);
- var pre = parser.GetArgument(name);
- var open = parser.GetArgument(name);
- var close = parser.GetArgument(name);
- var post = parser.GetArgument(name);
- var body = parser.GetArgument(name);
- MathtoolsUtil_js_1.MathtoolsUtil.addPairedDelims(parser.configuration, cs, [open, close, body, n, pre, post]);
- },
- CenterColon: function (parser, _name, center, force, thin) {
- if (force === void 0) { force = false; }
- if (thin === void 0) { thin = false; }
- var options = parser.options.mathtools;
- var mml = parser.create('token', 'mo', {}, ':');
- if (center && (options['centercolon'] || force)) {
- var dy = options['centercolon-offset'];
- mml = parser.create('node', 'mpadded', [mml], __assign({ voffset: dy, height: "+".concat(dy), depth: "-".concat(dy) }, (thin ? { width: options['thincolon-dw'], lspace: options['thincolon-dx'] } : {})));
- }
- parser.Push(mml);
- },
- Relation: function (parser, _name, tex, unicode) {
- var options = parser.options.mathtools;
- if (options['use-unicode'] && unicode) {
- parser.Push(parser.create('token', 'mo', { texClass: MmlNode_js_1.TEXCLASS.REL }, unicode));
- }
- else {
- tex = '\\mathrel{' + tex.replace(/:/g, '\\MTThinColon').replace(/-/g, '\\mathrel{-}') + '}';
- parser.string = ParseUtil_js_1.default.addArgs(parser, tex, parser.string.substr(parser.i));
- parser.i = 0;
- }
- },
- NArrow: function (parser, _name, c, dy) {
- parser.Push(parser.create('node', 'TeXAtom', [
- parser.create('token', 'mtext', {}, c),
- parser.create('node', 'mpadded', [
- parser.create('node', 'mpadded', [
- parser.create('node', 'menclose', [
- parser.create('node', 'mspace', [], { height: '.2em', depth: 0, width: '.4em' })
- ], { notation: 'updiagonalstrike', 'data-thickness': '.05em', 'data-padding': 0 })
- ], { width: 0, lspace: '-.5width', voffset: dy }),
- parser.create('node', 'mphantom', [
- parser.create('token', 'mtext', {}, c)
- ])
- ], { width: 0, lspace: '-.5width' })
- ], { texClass: MmlNode_js_1.TEXCLASS.REL }));
- },
- SplitFrac: function (parser, name, display) {
- var num = parser.ParseArg(name);
- var den = parser.ParseArg(name);
- parser.Push(parser.create('node', 'mstyle', [
- parser.create('node', 'mfrac', [
- parser.create('node', 'mstyle', [
- num,
- parser.create('token', 'mi'),
- parser.create('token', 'mspace', { width: '1em' })
- ], { scriptlevel: 0 }),
- parser.create('node', 'mstyle', [
- parser.create('token', 'mspace', { width: '1em' }),
- parser.create('token', 'mi'),
- den
- ], { scriptlevel: 0 })
- ], { linethickness: 0, numalign: 'left', denomalign: 'right' })
- ], { displaystyle: display, scriptlevel: 0 }));
- },
- XMathStrut: function (parser, name) {
- var dd = parser.GetBrackets(name);
- var dh = parser.GetArgument(name);
- dh = MathtoolsUtil_js_1.MathtoolsUtil.plusOrMinus(name, dh);
- dd = MathtoolsUtil_js_1.MathtoolsUtil.plusOrMinus(name, dd || dh);
- parser.Push(parser.create('node', 'TeXAtom', [
- parser.create('node', 'mpadded', [
- parser.create('node', 'mphantom', [
- parser.create('token', 'mo', { stretchy: false }, '(')
- ])
- ], { width: 0, height: dh + 'height', depth: dd + 'depth' })
- ], { texClass: MmlNode_js_1.TEXCLASS.ORD }));
- },
- Prescript: function (parser, name) {
- var sup = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'sup');
- var sub = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'sub');
- var base = MathtoolsUtil_js_1.MathtoolsUtil.getScript(parser, name, 'arg');
- if (NodeUtil_js_1.default.isType(sup, 'none') && NodeUtil_js_1.default.isType(sub, 'none')) {
- parser.Push(base);
- return;
- }
- var mml = parser.create('node', 'mmultiscripts', [base]);
- NodeUtil_js_1.default.getChildren(mml).push(null, null);
- NodeUtil_js_1.default.appendChildren(mml, [parser.create('node', 'mprescripts'), sub, sup]);
- mml.setProperty('fixPrescript', true);
- parser.Push(mml);
- },
- NewTagForm: function (parser, name, renew) {
- if (renew === void 0) { renew = false; }
- var tags = parser.tags;
- if (!('mtFormats' in tags)) {
- throw new TexError_js_1.default('TagsNotMT', '%1 can only be used with ams or mathtools tags', name);
- }
- var id = parser.GetArgument(name).trim();
- if (!id) {
- throw new TexError_js_1.default('InvalidTagFormID', 'Tag form name can\'t be empty');
- }
- var format = parser.GetBrackets(name, '');
- var left = parser.GetArgument(name);
- var right = parser.GetArgument(name);
- if (!renew && tags.mtFormats.has(id)) {
- throw new TexError_js_1.default('DuplicateTagForm', 'Duplicate tag form: %1', id);
- }
- tags.mtFormats.set(id, [left, right, format]);
- },
- UseTagForm: function (parser, name) {
- var tags = parser.tags;
- if (!('mtFormats' in tags)) {
- throw new TexError_js_1.default('TagsNotMT', '%1 can only be used with ams or mathtools tags', name);
- }
- var id = parser.GetArgument(name).trim();
- if (!id) {
- tags.mtCurrent = null;
- return;
- }
- if (!tags.mtFormats.has(id)) {
- throw new TexError_js_1.default('UndefinedTagForm', 'Undefined tag form: %1', id);
- }
- tags.mtCurrent = tags.mtFormats.get(id);
- },
- SetOptions: function (parser, name) {
- var e_2, _a;
- var options = parser.options.mathtools;
- if (!options['allow-mathtoolsset']) {
- throw new TexError_js_1.default('ForbiddenMathtoolsSet', '%1 is disabled', name);
- }
- var allowed = {};
- Object.keys(options).forEach(function (id) {
- if (id !== 'pariedDelimiters' && id !== 'tagforms' && id !== 'allow-mathtoolsset') {
- allowed[id] = 1;
- }
- });
- var args = parser.GetArgument(name);
- var keys = ParseUtil_js_1.default.keyvalOptions(args, allowed, true);
- try {
- for (var _b = __values(Object.keys(keys)), _c = _b.next(); !_c.done; _c = _b.next()) {
- var id = _c.value;
- options[id] = keys[id];
- }
- }
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
- finally {
- try {
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
- }
- finally { if (e_2) throw e_2.error; }
- }
- },
- Array: BaseMethods_js_1.default.Array,
- Macro: BaseMethods_js_1.default.Macro,
- xArrow: AmsMethods_js_1.AmsMethods.xArrow,
- HandleRef: AmsMethods_js_1.AmsMethods.HandleRef,
- AmsEqnArray: AmsMethods_js_1.AmsMethods.AmsEqnArray,
- MacroWithTemplate: NewcommandMethods_js_1.default.MacroWithTemplate,
- };
- //# sourceMappingURL=MathtoolsMethods.js.map
|