mathpix-markdown-it
Version:
Mathpix-markdown-it is an open source implementation of the mathpix-markdown spec written in Typescript. It relies on the following open source libraries: MathJax v3 (to render math with SVGs), markdown-it (for standard Markdown parsing)
105 lines • 3.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.IconMethods = void 0;
var NodeUtil_js_1 = require("mathjax-full/js/input/tex/NodeUtil.js");
var ParseUtil_js_1 = require("mathjax-full/js/input/tex/ParseUtil.js");
function padding(colorPadding) {
var pad = "+".concat(colorPadding);
var unit = colorPadding.replace(/^.*?([a-z]*)$/, '$1');
var pad2 = 2 * parseFloat(pad);
return {
width: "+".concat(pad2).concat(unit),
height: pad,
depth: pad,
lspace: colorPadding,
};
}
exports.IconMethods = {};
/**
* Override \color macro definition.
*
* @param {TexParser} parser The calling parser.
* @param {string} name The name of the control sequence.
*/
exports.IconMethods.Color = function (parser, name) {
var model = parser.GetBrackets(name, '');
var colorDef = parser.GetArgument(name);
var colorModel = parser.configuration.packageData.get('color').model;
var color = colorModel.getColor(model, colorDef);
var style = parser.itemFactory.create('style')
.setProperties({ styles: { mathcolor: color } });
parser.stack.env['color'] = color;
parser.Push(style);
};
/**
* Define the \textcolor macro.
*
* @param {TexParser} parser The calling parser.
* @param {string} name The name of the control sequence.
*/
exports.IconMethods.TextColor = function (parser, name) {
var model = parser.GetBrackets(name, '');
var colorDef = parser.GetArgument(name);
var colorModel = parser.configuration.packageData.get('color').model;
var color = colorModel.getColor(model, colorDef);
var old = parser.stack.env['color'];
parser.stack.env['color'] = color;
var math = parser.ParseArg(name);
if (old) {
parser.stack.env['color'] = old;
}
else {
delete parser.stack.env['color'];
}
var node = parser.create('node', 'mstyle', [math], { mathcolor: color });
parser.Push(node);
};
/**
* Define the \definecolor macro.
*
* @param {TexParser} parser The calling parser.
* @param {string} name The name of the control sequence.
*/
exports.IconMethods.DefineColor = function (parser, name) {
var cname = parser.GetArgument(name);
var model = parser.GetArgument(name);
var def = parser.GetArgument(name);
var colorModel = parser.configuration.packageData.get('color').model;
colorModel.defineColor(model, cname, def);
};
/**
* Produce a text box with a colored background: `\colorbox`.
*
* @param {TexParser} parser The calling parser.
* @param {string} name The name of the control sequence.
*/
exports.IconMethods.ColorBox = function (parser, name) {
var cname = parser.GetArgument(name);
var math = ParseUtil_js_1.default.internalMath(parser, parser.GetArgument(name));
var colorModel = parser.configuration.packageData.get('color').model;
var node = parser.create('node', 'mpadded', math, {
mathbackground: colorModel.getColor('named', cname)
});
NodeUtil_js_1.default.setProperties(node, padding(parser.options.color.padding));
parser.Push(node);
};
/**
* Produce a framed text box with a colored background: `\fcolorbox`.
*
* @param {TexParser} parser The calling parser.
* @param {string} name The name of the control sequence.
*/
exports.IconMethods.FColorBox = function (parser, name) {
var fname = parser.GetArgument(name);
var cname = parser.GetArgument(name);
var math = ParseUtil_js_1.default.internalMath(parser, parser.GetArgument(name));
var options = parser.options.color;
var colorModel = parser.configuration.packageData.get('color').model;
var node = parser.create('node', 'mpadded', math, {
mathbackground: colorModel.getColor('named', cname),
style: "border: ".concat(options.borderWidth, " solid ").concat(colorModel.getColor('named', fname))
});
NodeUtil_js_1.default.setProperties(node, padding(options.padding));
parser.Push(node);
};
//# sourceMappingURL=IconMethods.js.map