katex 0.17.0 → 0.18.1
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.
- package/README.md +3 -3
- package/cli.js +6 -9
- package/contrib/auto-render/index.html +1 -1
- package/contrib/copy-tex/README.md +3 -3
- package/contrib/copy-tex/index.html +1 -1
- package/contrib/mathtex-script-type/README.md +5 -5
- package/contrib/mhchem/README.md +1 -1
- package/dist/README.md +3 -3
- package/dist/contrib/render-a11y-string.js +15 -40
- package/dist/contrib/render-a11y-string.min.js +1 -1
- package/dist/contrib/render-a11y-string.mjs +13 -33
- package/dist/katex-swap.css +159 -164
- package/dist/katex-swap.min.css +1 -1
- package/dist/katex.css +159 -164
- package/dist/katex.js +277 -421
- package/dist/katex.min.css +1 -1
- package/dist/katex.min.js +1 -1
- package/dist/katex.mjs +279 -423
- package/package.json +14 -16
- package/src/MacroExpander.ts +10 -7
- package/src/Namespace.ts +16 -20
- package/src/Options.ts +2 -2
- package/src/Parser.ts +2 -2
- package/src/atoms.ts +22 -22
- package/src/buildCommon.ts +2 -2
- package/src/buildHTML.ts +8 -8
- package/src/buildMathML.ts +3 -3
- package/src/environments/array.ts +3 -3
- package/src/fontMetrics.ts +2 -4
- package/src/functions/accent.ts +2 -2
- package/src/functions/cr.ts +1 -1
- package/src/functions/enclose.ts +1 -1
- package/src/functions/environment.ts +1 -1
- package/src/functions/html.ts +21 -4
- package/src/functions/lap.ts +7 -7
- package/src/functions/overline.ts +1 -1
- package/src/functions/phantom.ts +2 -2
- package/src/functions/rule.ts +1 -1
- package/src/functions/sizing.ts +1 -1
- package/src/functions/smash.ts +1 -1
- package/src/functions/sqrt.ts +1 -1
- package/src/functions/symbolsSpacing.ts +20 -21
- package/src/functions/underline.ts +1 -1
- package/src/macros.ts +3 -3
- package/src/mathMLTree.ts +6 -10
- package/src/parseNode.ts +4 -4
- package/src/stretchy.ts +2 -2
- package/src/styles/katex.scss +31 -37
- package/src/wide-character.ts +2 -2
package/dist/katex.mjs
CHANGED
|
@@ -3732,10 +3732,8 @@ function getGlobalMetrics(size) {
|
|
|
3732
3732
|
var metrics = fontMetricsBySizeIndex[sizeIndex] = {
|
|
3733
3733
|
cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18
|
|
3734
3734
|
};
|
|
3735
|
-
for (var key
|
|
3736
|
-
|
|
3737
|
-
metrics[key] = sigmasAndXis[key][sizeIndex];
|
|
3738
|
-
}
|
|
3735
|
+
for (var key of Object.keys(sigmasAndXis)) {
|
|
3736
|
+
metrics[key] = sigmasAndXis[key][sizeIndex];
|
|
3739
3737
|
}
|
|
3740
3738
|
}
|
|
3741
3739
|
return fontMetricsBySizeIndex[sizeIndex];
|
|
@@ -4803,12 +4801,10 @@ var makeOrd = function makeOrd(group, options) {
|
|
|
4803
4801
|
var mode = group.mode;
|
|
4804
4802
|
var text = group.text;
|
|
4805
4803
|
var classes = ["mord"];
|
|
4806
|
-
var
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
fontShape
|
|
4811
|
-
} = options;
|
|
4804
|
+
var font = options.font,
|
|
4805
|
+
fontFamily = options.fontFamily,
|
|
4806
|
+
fontWeight = options.fontWeight,
|
|
4807
|
+
fontShape = options.fontShape;
|
|
4812
4808
|
// Math mode or Old font (i.e. \rm)
|
|
4813
4809
|
var useFont = mode === "math" || mode === "text" && !!font;
|
|
4814
4810
|
var fontOrFamily = useFont ? font : fontFamily;
|
|
@@ -4838,7 +4834,7 @@ var makeOrd = function makeOrd(group, options) {
|
|
|
4838
4834
|
}
|
|
4839
4835
|
if (lookupSymbol(text, fontName, mode).metrics) {
|
|
4840
4836
|
return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses));
|
|
4841
|
-
} else if (
|
|
4837
|
+
} else if (Object.prototype.hasOwnProperty.call(ligatures, text) && fontName.slice(0, 10) === "Typewriter") {
|
|
4842
4838
|
// Deconstruct ligatures in monospace fonts (\texttt, \tt).
|
|
4843
4839
|
var parts = [];
|
|
4844
4840
|
for (var i = 0; i < text.length; i++) {
|
|
@@ -5057,10 +5053,9 @@ var getVListChildrenAndDepth = function getVListChildrenAndDepth(params) {
|
|
|
5057
5053
|
* See VListParam documentation above.
|
|
5058
5054
|
*/
|
|
5059
5055
|
var makeVList = function makeVList(params, options) {
|
|
5060
|
-
var
|
|
5061
|
-
children,
|
|
5062
|
-
depth
|
|
5063
|
-
} = getVListChildrenAndDepth(params);
|
|
5056
|
+
var _getVListChildrenAndD = getVListChildrenAndDepth(params),
|
|
5057
|
+
children = _getVListChildrenAndD.children,
|
|
5058
|
+
depth = _getVListChildrenAndD.depth;
|
|
5064
5059
|
// Create a strut that is taller than any list item. The strut is added to
|
|
5065
5060
|
// each item, where it will determine the item's baseline. Since it has
|
|
5066
5061
|
// `overflow:hidden`, the strut's top edge will sit on the item's line box's
|
|
@@ -5252,7 +5247,10 @@ var svgData = {
|
|
|
5252
5247
|
};
|
|
5253
5248
|
var staticSvg = function staticSvg(value, options) {
|
|
5254
5249
|
// Create a span with inline SVG for the element.
|
|
5255
|
-
var
|
|
5250
|
+
var _svgData$value = svgData[value],
|
|
5251
|
+
pathName = _svgData$value[0],
|
|
5252
|
+
width = _svgData$value[1],
|
|
5253
|
+
height = _svgData$value[2];
|
|
5256
5254
|
var path = new PathNode(pathName);
|
|
5257
5255
|
var svgNode = new SvgNode([path], {
|
|
5258
5256
|
"width": makeEm(width),
|
|
@@ -5262,7 +5260,7 @@ var staticSvg = function staticSvg(value, options) {
|
|
|
5262
5260
|
"viewBox": "0 0 " + 1000 * width + " " + 1000 * height,
|
|
5263
5261
|
"preserveAspectRatio": "xMinYMin"
|
|
5264
5262
|
});
|
|
5265
|
-
var span = makeSvgSpan(["overlay"], [svgNode], options);
|
|
5263
|
+
var span = makeSvgSpan(["katex-overlay"], [svgNode], options);
|
|
5266
5264
|
span.height = height;
|
|
5267
5265
|
span.style.height = makeEm(height);
|
|
5268
5266
|
span.style.width = makeEm(width);
|
|
@@ -5381,12 +5379,10 @@ var _htmlGroupBuilders = {};
|
|
|
5381
5379
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5382
5380
|
var _mathmlGroupBuilders = {};
|
|
5383
5381
|
function defineFunction(data) {
|
|
5384
|
-
var
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
mathmlBuilder
|
|
5389
|
-
} = data;
|
|
5382
|
+
var type = data.type,
|
|
5383
|
+
names = data.names,
|
|
5384
|
+
htmlBuilder = data.htmlBuilder,
|
|
5385
|
+
mathmlBuilder = data.mathmlBuilder;
|
|
5390
5386
|
for (var i = 0; i < names.length; ++i) {
|
|
5391
5387
|
// To avoid destructuring and rebuilding an object,
|
|
5392
5388
|
// we store the entire FunctionDefSpec object,
|
|
@@ -5408,11 +5404,9 @@ function defineFunction(data) {
|
|
|
5408
5404
|
* stand-alone handler provided to `defineFunction`).
|
|
5409
5405
|
*/
|
|
5410
5406
|
function defineFunctionBuilders(_ref) {
|
|
5411
|
-
var
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
mathmlBuilder
|
|
5415
|
-
} = _ref;
|
|
5407
|
+
var type = _ref.type,
|
|
5408
|
+
htmlBuilder = _ref.htmlBuilder,
|
|
5409
|
+
mathmlBuilder = _ref.mathmlBuilder;
|
|
5416
5410
|
if (htmlBuilder) {
|
|
5417
5411
|
_htmlGroupBuilders[type] = htmlBuilder;
|
|
5418
5412
|
}
|
|
@@ -5570,7 +5564,7 @@ var _traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, pre
|
|
|
5570
5564
|
}
|
|
5571
5565
|
if (nonspace) {
|
|
5572
5566
|
prev.node = node;
|
|
5573
|
-
} else if (isRoot && node.hasClass("newline")) {
|
|
5567
|
+
} else if (isRoot && node.hasClass("katex-newline")) {
|
|
5574
5568
|
prev.node = makeSpan(["leftmost"]); // treat like beginning of line
|
|
5575
5569
|
}
|
|
5576
5570
|
prev.insertAfter = (index => n => {
|
|
@@ -5650,17 +5644,17 @@ var buildGroup$1 = function buildGroup(group, options, baseOptions) {
|
|
|
5650
5644
|
};
|
|
5651
5645
|
/**
|
|
5652
5646
|
* Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`)
|
|
5653
|
-
* into an unbreakable HTML node of class .base, with proper struts to
|
|
5647
|
+
* into an unbreakable HTML node of class .katex-base, with proper struts to
|
|
5654
5648
|
* guarantee correct vertical extent. `buildHTML` calls this repeatedly to
|
|
5655
5649
|
* make up the entire expression as a sequence of unbreakable units.
|
|
5656
5650
|
*/
|
|
5657
5651
|
function buildHTMLUnbreakable(children, options) {
|
|
5658
5652
|
// Compute height and depth of this chunk.
|
|
5659
|
-
var body = makeSpan(["base"], children, options);
|
|
5653
|
+
var body = makeSpan(["katex-base"], children, options);
|
|
5660
5654
|
// Add strut, which ensures that the top of the HTML element falls at
|
|
5661
5655
|
// the height of the expression, and the bottom of the HTML element
|
|
5662
5656
|
// falls at the depth of the expression.
|
|
5663
|
-
var strut = makeSpan(["strut"]);
|
|
5657
|
+
var strut = makeSpan(["katex-strut"]);
|
|
5664
5658
|
strut.style.height = makeEm(body.height + body.depth);
|
|
5665
5659
|
if (body.depth) {
|
|
5666
5660
|
strut.style.verticalAlign = makeEm(-body.depth);
|
|
@@ -5682,7 +5676,7 @@ function buildHTML(tree, options) {
|
|
|
5682
5676
|
// Build the expression contained in the tree
|
|
5683
5677
|
var expression = buildExpression$1(tree, options, "root");
|
|
5684
5678
|
var eqnNum;
|
|
5685
|
-
if (expression.length === 2 && expression[1].hasClass("tag")) {
|
|
5679
|
+
if (expression.length === 2 && expression[1].hasClass("katex-tag")) {
|
|
5686
5680
|
// An environment with automatic equation numbers, e.g. {gather}.
|
|
5687
5681
|
eqnNum = expression.pop();
|
|
5688
5682
|
}
|
|
@@ -5700,7 +5694,7 @@ function buildHTML(tree, options) {
|
|
|
5700
5694
|
// Put any post-operator glue on same line as operator.
|
|
5701
5695
|
// Watch for \nobreak along the way, and stop at \newline.
|
|
5702
5696
|
var nobreak = false;
|
|
5703
|
-
while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) {
|
|
5697
|
+
while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("katex-newline")) {
|
|
5704
5698
|
i++;
|
|
5705
5699
|
parts.push(expression[i]);
|
|
5706
5700
|
if (expression[i].hasClass("nobreak")) {
|
|
@@ -5712,7 +5706,7 @@ function buildHTML(tree, options) {
|
|
|
5712
5706
|
children.push(buildHTMLUnbreakable(parts, options));
|
|
5713
5707
|
parts = [];
|
|
5714
5708
|
}
|
|
5715
|
-
} else if (expression[i].hasClass("newline")) {
|
|
5709
|
+
} else if (expression[i].hasClass("katex-newline")) {
|
|
5716
5710
|
// Write the line except the newline
|
|
5717
5711
|
parts.pop();
|
|
5718
5712
|
if (parts.length > 0) {
|
|
@@ -5730,7 +5724,7 @@ function buildHTML(tree, options) {
|
|
|
5730
5724
|
var tagChild;
|
|
5731
5725
|
if (tag) {
|
|
5732
5726
|
tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true), options);
|
|
5733
|
-
tagChild.classes = ["tag"];
|
|
5727
|
+
tagChild.classes = ["katex-tag"];
|
|
5734
5728
|
children.push(tagChild);
|
|
5735
5729
|
} else if (eqnNum) {
|
|
5736
5730
|
children.push(eqnNum);
|
|
@@ -5795,10 +5789,10 @@ class MathNode {
|
|
|
5795
5789
|
*/
|
|
5796
5790
|
toNode() {
|
|
5797
5791
|
var node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
|
|
5798
|
-
for (var
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5792
|
+
for (var _ref2 of Object.entries(this.attributes)) {
|
|
5793
|
+
var attr = _ref2[0];
|
|
5794
|
+
var value = _ref2[1];
|
|
5795
|
+
node.setAttribute(attr, value);
|
|
5802
5796
|
}
|
|
5803
5797
|
if (this.classes.length > 0) {
|
|
5804
5798
|
node.className = createClass(this.classes);
|
|
@@ -5824,12 +5818,12 @@ class MathNode {
|
|
|
5824
5818
|
toMarkup() {
|
|
5825
5819
|
var markup = "<" + this.type;
|
|
5826
5820
|
// Add the attributes
|
|
5827
|
-
for (var
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
|
|
5821
|
+
for (var _ref4 of Object.entries(this.attributes)) {
|
|
5822
|
+
var attr = _ref4[0];
|
|
5823
|
+
var value = _ref4[1];
|
|
5824
|
+
markup += " " + attr + "=\"";
|
|
5825
|
+
markup += escape(value);
|
|
5826
|
+
markup += "\"";
|
|
5833
5827
|
}
|
|
5834
5828
|
if (this.classes.length > 0) {
|
|
5835
5829
|
markup += " class =\"" + escape(createClass(this.classes)) + "\"";
|
|
@@ -5959,7 +5953,8 @@ var rowLikeTypes = new Set(["mrow", "mtable"]);
|
|
|
5959
5953
|
* optional replacement from symbols.js.
|
|
5960
5954
|
*/
|
|
5961
5955
|
var makeText = function makeText(text, mode, options) {
|
|
5962
|
-
|
|
5956
|
+
var _options$fontFamily, _options$font;
|
|
5957
|
+
if (symbols[mode][text] && symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(Object.prototype.hasOwnProperty.call(ligatures, text) && ((options == null || (_options$fontFamily = options.fontFamily) == null ? void 0 : _options$fontFamily.slice(4, 6)) === "tt" || (options == null || (_options$font = options.font) == null ? void 0 : _options$font.slice(4, 6)) === "tt"))) {
|
|
5963
5958
|
text = symbols[mode][text].replace;
|
|
5964
5959
|
}
|
|
5965
5960
|
return new TextNode(text);
|
|
@@ -6422,7 +6417,7 @@ class Options {
|
|
|
6422
6417
|
*/
|
|
6423
6418
|
sizingClasses(oldOptions) {
|
|
6424
6419
|
if (oldOptions.size !== this.size) {
|
|
6425
|
-
return ["sizing", "reset-size" + oldOptions.size, "size" + this.size];
|
|
6420
|
+
return ["katex-sizing", "reset-size" + oldOptions.size, "size" + this.size];
|
|
6426
6421
|
} else {
|
|
6427
6422
|
return [];
|
|
6428
6423
|
}
|
|
@@ -6433,7 +6428,7 @@ class Options {
|
|
|
6433
6428
|
*/
|
|
6434
6429
|
baseSizingClasses() {
|
|
6435
6430
|
if (this.size !== Options.BASESIZE) {
|
|
6436
|
-
return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE];
|
|
6431
|
+
return ["katex-sizing", "reset-size" + this.size, "size" + Options.BASESIZE];
|
|
6437
6432
|
} else {
|
|
6438
6433
|
return [];
|
|
6439
6434
|
}
|
|
@@ -6670,7 +6665,9 @@ var stretchySvg = function stretchySvg(group, options) {
|
|
|
6670
6665
|
if (!data) {
|
|
6671
6666
|
throw new Error("No SVG data for \"" + label + "\".");
|
|
6672
6667
|
}
|
|
6673
|
-
var
|
|
6668
|
+
var paths = data[0],
|
|
6669
|
+
_minWidth = data[1],
|
|
6670
|
+
_viewBoxHeight = data[2];
|
|
6674
6671
|
var _height2 = _viewBoxHeight / 1000;
|
|
6675
6672
|
var numSvgChildren = paths.length;
|
|
6676
6673
|
var widthClasses;
|
|
@@ -6711,17 +6708,16 @@ var stretchySvg = function stretchySvg(group, options) {
|
|
|
6711
6708
|
}
|
|
6712
6709
|
}
|
|
6713
6710
|
return {
|
|
6714
|
-
span: makeSpan(["stretchy"], spans, options),
|
|
6711
|
+
span: makeSpan(["katex-stretchy"], spans, options),
|
|
6715
6712
|
minWidth: _minWidth,
|
|
6716
6713
|
height: _height2
|
|
6717
6714
|
};
|
|
6718
6715
|
}
|
|
6719
6716
|
} // buildSvgSpan_()
|
|
6720
|
-
var
|
|
6721
|
-
span,
|
|
6722
|
-
minWidth,
|
|
6723
|
-
height
|
|
6724
|
-
} = buildSvgSpan_();
|
|
6717
|
+
var _buildSvgSpan_ = buildSvgSpan_(),
|
|
6718
|
+
span = _buildSvgSpan_.span,
|
|
6719
|
+
minWidth = _buildSvgSpan_.minWidth,
|
|
6720
|
+
height = _buildSvgSpan_.height;
|
|
6725
6721
|
// Note that we are returning span.depth = 0.
|
|
6726
6722
|
// Any adjustments relative to the baseline must be done in buildHTML.
|
|
6727
6723
|
span.height = height;
|
|
@@ -6736,7 +6732,7 @@ var stretchyEnclose = function stretchyEnclose(inner, label, topPad, bottomPad,
|
|
|
6736
6732
|
var img;
|
|
6737
6733
|
var totalHeight = inner.height + inner.depth + topPad + bottomPad;
|
|
6738
6734
|
if (/fbox|color|angl/.test(label)) {
|
|
6739
|
-
img = makeSpan(["stretchy", label], [], options);
|
|
6735
|
+
img = makeSpan(["katex-stretchy", label], [], options);
|
|
6740
6736
|
if (label === "fbox") {
|
|
6741
6737
|
var color = options.color && options.getColor();
|
|
6742
6738
|
if (color) {
|
|
@@ -6782,27 +6778,12 @@ var stretchyEnclose = function stretchyEnclose(inner, label, topPad, bottomPad,
|
|
|
6782
6778
|
* `symbols.ts` so that consumers (notably `contrib/render-a11y-string`) can
|
|
6783
6779
|
* pull in `isAtom` without dragging in the ~870-line symbol tables.
|
|
6784
6780
|
*/
|
|
6785
|
-
|
|
6786
|
-
|
|
6787
|
-
|
|
6788
|
-
|
|
6789
|
-
var ATOMS = {
|
|
6790
|
-
"bin": 1,
|
|
6791
|
-
"close": 1,
|
|
6792
|
-
"inner": 1,
|
|
6793
|
-
"open": 1,
|
|
6794
|
-
"punct": 1,
|
|
6795
|
-
"rel": 1
|
|
6796
|
-
};
|
|
6797
|
-
var NON_ATOMS = {
|
|
6798
|
-
"accent-token": 1,
|
|
6799
|
-
"mathord": 1,
|
|
6800
|
-
"op-token": 1,
|
|
6801
|
-
"spacing": 1,
|
|
6802
|
-
"textord": 1
|
|
6803
|
-
};
|
|
6781
|
+
var atomList = ["bin", "close", "inner", "open", "punct", "rel"];
|
|
6782
|
+
var nonAtomList = ["accent-token", "mathord", "op-token", "spacing", "textord"];
|
|
6783
|
+
var Atoms = new Set(atomList);
|
|
6784
|
+
var NonAtoms = new Set(nonAtomList);
|
|
6804
6785
|
function isAtom(value) {
|
|
6805
|
-
return value
|
|
6786
|
+
return Atoms.has(value);
|
|
6806
6787
|
}
|
|
6807
6788
|
|
|
6808
6789
|
/**
|
|
@@ -6831,7 +6812,7 @@ function assertSymbolNodeType(node) {
|
|
|
6831
6812
|
* returns null.
|
|
6832
6813
|
*/
|
|
6833
6814
|
function checkSymbolNodeType(node) {
|
|
6834
|
-
if (node
|
|
6815
|
+
if (node.type === "atom" || NonAtoms.has(node.type)) {
|
|
6835
6816
|
return node;
|
|
6836
6817
|
}
|
|
6837
6818
|
return null;
|
|
@@ -6933,7 +6914,7 @@ var htmlBuilder$a = (grp, options) => {
|
|
|
6933
6914
|
}
|
|
6934
6915
|
// Shift the accent over by the skew.
|
|
6935
6916
|
var left = skew;
|
|
6936
|
-
// CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }`
|
|
6917
|
+
// CSS defines `.katex .katex-accent .accent-body:not(.accent-full) { width: 0 }`
|
|
6937
6918
|
// so that the accent doesn't contribute to the bounding box.
|
|
6938
6919
|
// We need to shift the character by its width (effectively half
|
|
6939
6920
|
// its width) to compensate.
|
|
@@ -6977,7 +6958,7 @@ var htmlBuilder$a = (grp, options) => {
|
|
|
6977
6958
|
}]
|
|
6978
6959
|
});
|
|
6979
6960
|
}
|
|
6980
|
-
var accentWrap = makeSpan(["mord", "accent"], [accentBody], options);
|
|
6961
|
+
var accentWrap = makeSpan(["mord", "katex-accent"], [accentBody], options);
|
|
6981
6962
|
if (supSubGroup) {
|
|
6982
6963
|
// Here, we replace the "base" child of the supsub with our newly
|
|
6983
6964
|
// generated accent.
|
|
@@ -7053,10 +7034,8 @@ defineFunction({
|
|
|
7053
7034
|
names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
|
|
7054
7035
|
numArgs: 1,
|
|
7055
7036
|
handler: (_ref, args) => {
|
|
7056
|
-
var
|
|
7057
|
-
|
|
7058
|
-
funcName
|
|
7059
|
-
} = _ref;
|
|
7037
|
+
var parser = _ref.parser,
|
|
7038
|
+
funcName = _ref.funcName;
|
|
7060
7039
|
var base = args[0];
|
|
7061
7040
|
return {
|
|
7062
7041
|
type: "accentUnder",
|
|
@@ -7115,10 +7094,8 @@ defineFunction({
|
|
|
7115
7094
|
numArgs: 1,
|
|
7116
7095
|
numOptionalArgs: 1,
|
|
7117
7096
|
handler(_ref, args, optArgs) {
|
|
7118
|
-
var
|
|
7119
|
-
|
|
7120
|
-
funcName
|
|
7121
|
-
} = _ref;
|
|
7097
|
+
var parser = _ref.parser,
|
|
7098
|
+
funcName = _ref.funcName;
|
|
7122
7099
|
return {
|
|
7123
7100
|
type: "xArrow",
|
|
7124
7101
|
mode: parser.mode,
|
|
@@ -7263,10 +7240,8 @@ defineFunction({
|
|
|
7263
7240
|
numArgs: 1,
|
|
7264
7241
|
primitive: true,
|
|
7265
7242
|
handler(_ref, args) {
|
|
7266
|
-
var
|
|
7267
|
-
|
|
7268
|
-
funcName
|
|
7269
|
-
} = _ref;
|
|
7243
|
+
var parser = _ref.parser,
|
|
7244
|
+
funcName = _ref.funcName;
|
|
7270
7245
|
var body = args[0];
|
|
7271
7246
|
return {
|
|
7272
7247
|
type: "mclass",
|
|
@@ -7298,9 +7273,7 @@ defineFunction({
|
|
|
7298
7273
|
names: ["\\@binrel"],
|
|
7299
7274
|
numArgs: 2,
|
|
7300
7275
|
handler(_ref2, args) {
|
|
7301
|
-
var
|
|
7302
|
-
parser
|
|
7303
|
-
} = _ref2;
|
|
7276
|
+
var parser = _ref2.parser;
|
|
7304
7277
|
return {
|
|
7305
7278
|
type: "mclass",
|
|
7306
7279
|
mode: parser.mode,
|
|
@@ -7316,10 +7289,8 @@ defineFunction({
|
|
|
7316
7289
|
names: ["\\stackrel", "\\overset", "\\underset"],
|
|
7317
7290
|
numArgs: 2,
|
|
7318
7291
|
handler(_ref3, args) {
|
|
7319
|
-
var
|
|
7320
|
-
|
|
7321
|
-
funcName
|
|
7322
|
-
} = _ref3;
|
|
7292
|
+
var parser = _ref3.parser,
|
|
7293
|
+
funcName = _ref3.funcName;
|
|
7323
7294
|
var baseArg = args[1];
|
|
7324
7295
|
var shiftedArg = args[0];
|
|
7325
7296
|
var mclass;
|
|
@@ -7370,9 +7341,7 @@ defineFunction({
|
|
|
7370
7341
|
numArgs: 1,
|
|
7371
7342
|
allowedInText: true,
|
|
7372
7343
|
handler(_ref, args) {
|
|
7373
|
-
var
|
|
7374
|
-
parser
|
|
7375
|
-
} = _ref;
|
|
7344
|
+
var parser = _ref.parser;
|
|
7376
7345
|
return {
|
|
7377
7346
|
type: "pmb",
|
|
7378
7347
|
mode: parser.mode,
|
|
@@ -7616,10 +7585,8 @@ defineFunction({
|
|
|
7616
7585
|
names: ["\\\\cdleft", "\\\\cdright"],
|
|
7617
7586
|
numArgs: 1,
|
|
7618
7587
|
handler(_ref, args) {
|
|
7619
|
-
var
|
|
7620
|
-
|
|
7621
|
-
funcName
|
|
7622
|
-
} = _ref;
|
|
7588
|
+
var parser = _ref.parser,
|
|
7589
|
+
funcName = _ref.funcName;
|
|
7623
7590
|
return {
|
|
7624
7591
|
type: "cdlabel",
|
|
7625
7592
|
mode: parser.mode,
|
|
@@ -7659,9 +7626,7 @@ defineFunction({
|
|
|
7659
7626
|
names: ["\\\\cdparent"],
|
|
7660
7627
|
numArgs: 1,
|
|
7661
7628
|
handler(_ref2, args) {
|
|
7662
|
-
var
|
|
7663
|
-
parser
|
|
7664
|
-
} = _ref2;
|
|
7629
|
+
var parser = _ref2.parser;
|
|
7665
7630
|
return {
|
|
7666
7631
|
type: "cdlabelparent",
|
|
7667
7632
|
mode: parser.mode,
|
|
@@ -7690,9 +7655,7 @@ defineFunction({
|
|
|
7690
7655
|
numArgs: 1,
|
|
7691
7656
|
allowedInText: true,
|
|
7692
7657
|
handler(_ref, args) {
|
|
7693
|
-
var
|
|
7694
|
-
parser
|
|
7695
|
-
} = _ref;
|
|
7658
|
+
var parser = _ref.parser;
|
|
7696
7659
|
var arg = assertNodeType(args[0], "ordgroup");
|
|
7697
7660
|
var group = arg.body;
|
|
7698
7661
|
var number = "";
|
|
@@ -7744,9 +7707,7 @@ defineFunction({
|
|
|
7744
7707
|
allowedInText: true,
|
|
7745
7708
|
argTypes: ["color", "original"],
|
|
7746
7709
|
handler(_ref, args) {
|
|
7747
|
-
var
|
|
7748
|
-
parser
|
|
7749
|
-
} = _ref;
|
|
7710
|
+
var parser = _ref.parser;
|
|
7750
7711
|
var color = assertNodeType(args[0], "color-token").color;
|
|
7751
7712
|
var body = args[1];
|
|
7752
7713
|
return {
|
|
@@ -7766,10 +7727,8 @@ defineFunction({
|
|
|
7766
7727
|
allowedInText: true,
|
|
7767
7728
|
argTypes: ["color"],
|
|
7768
7729
|
handler(_ref2, args) {
|
|
7769
|
-
var
|
|
7770
|
-
|
|
7771
|
-
breakOnTokenText
|
|
7772
|
-
} = _ref2;
|
|
7730
|
+
var parser = _ref2.parser,
|
|
7731
|
+
breakOnTokenText = _ref2.breakOnTokenText;
|
|
7773
7732
|
var color = assertNodeType(args[0], "color-token").color;
|
|
7774
7733
|
// Set macro \current@color in current namespace to store the current
|
|
7775
7734
|
// color, mimicking the behavior of color.sty.
|
|
@@ -7796,9 +7755,7 @@ defineFunction({
|
|
|
7796
7755
|
numOptionalArgs: 0,
|
|
7797
7756
|
allowedInText: true,
|
|
7798
7757
|
handler(_ref, args, optArgs) {
|
|
7799
|
-
var
|
|
7800
|
-
parser
|
|
7801
|
-
} = _ref;
|
|
7758
|
+
var parser = _ref.parser;
|
|
7802
7759
|
var size = parser.gullet.future().text === "[" ? parser.parseSizeGroup(true) : null;
|
|
7803
7760
|
var newLine = !parser.settings.displayMode || !parser.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline " + "does nothing in display mode");
|
|
7804
7761
|
return {
|
|
@@ -7813,7 +7770,7 @@ defineFunction({
|
|
|
7813
7770
|
htmlBuilder(group, options) {
|
|
7814
7771
|
var span = makeSpan(["mspace"], [], options);
|
|
7815
7772
|
if (group.newLine) {
|
|
7816
|
-
span.classes.push("newline");
|
|
7773
|
+
span.classes.push("katex-newline");
|
|
7817
7774
|
if (group.size) {
|
|
7818
7775
|
span.style.marginTop = makeEm(calculateSize(group.size, options));
|
|
7819
7776
|
}
|
|
@@ -7888,10 +7845,8 @@ defineFunction({
|
|
|
7888
7845
|
numArgs: 0,
|
|
7889
7846
|
allowedInText: true,
|
|
7890
7847
|
handler(_ref) {
|
|
7891
|
-
var
|
|
7892
|
-
|
|
7893
|
-
funcName
|
|
7894
|
-
} = _ref;
|
|
7848
|
+
var parser = _ref.parser,
|
|
7849
|
+
funcName = _ref.funcName;
|
|
7895
7850
|
parser.consumeSpaces();
|
|
7896
7851
|
var token = parser.fetch();
|
|
7897
7852
|
if (globalMap[token.text]) {
|
|
@@ -7915,10 +7870,8 @@ defineFunction({
|
|
|
7915
7870
|
allowedInText: true,
|
|
7916
7871
|
primitive: true,
|
|
7917
7872
|
handler(_ref2) {
|
|
7918
|
-
var
|
|
7919
|
-
|
|
7920
|
-
funcName
|
|
7921
|
-
} = _ref2;
|
|
7873
|
+
var parser = _ref2.parser,
|
|
7874
|
+
funcName = _ref2.funcName;
|
|
7922
7875
|
var tok = parser.gullet.popToken();
|
|
7923
7876
|
var name = tok.text;
|
|
7924
7877
|
if (/^(?:[\\{}$&#^_]|EOF)$/.test(name)) {
|
|
@@ -7958,9 +7911,8 @@ defineFunction({
|
|
|
7958
7911
|
}
|
|
7959
7912
|
}
|
|
7960
7913
|
// replacement text, enclosed in '{' and '}' and properly nested
|
|
7961
|
-
var
|
|
7962
|
-
tokens
|
|
7963
|
-
} = parser.gullet.consumeArg();
|
|
7914
|
+
var _parser$gullet$consum = parser.gullet.consumeArg(),
|
|
7915
|
+
tokens = _parser$gullet$consum.tokens;
|
|
7964
7916
|
if (insert) {
|
|
7965
7917
|
tokens.unshift(insert);
|
|
7966
7918
|
}
|
|
@@ -7992,10 +7944,8 @@ defineFunction({
|
|
|
7992
7944
|
allowedInText: true,
|
|
7993
7945
|
primitive: true,
|
|
7994
7946
|
handler(_ref3) {
|
|
7995
|
-
var
|
|
7996
|
-
|
|
7997
|
-
funcName
|
|
7998
|
-
} = _ref3;
|
|
7947
|
+
var parser = _ref3.parser,
|
|
7948
|
+
funcName = _ref3.funcName;
|
|
7999
7949
|
var name = checkControlSequence(parser.gullet.popToken());
|
|
8000
7950
|
parser.gullet.consumeSpaces();
|
|
8001
7951
|
var tok = getRHS(parser);
|
|
@@ -8015,10 +7965,8 @@ defineFunction({
|
|
|
8015
7965
|
allowedInText: true,
|
|
8016
7966
|
primitive: true,
|
|
8017
7967
|
handler(_ref4) {
|
|
8018
|
-
var
|
|
8019
|
-
|
|
8020
|
-
funcName
|
|
8021
|
-
} = _ref4;
|
|
7968
|
+
var parser = _ref4.parser,
|
|
7969
|
+
funcName = _ref4.funcName;
|
|
8022
7970
|
var name = checkControlSequence(parser.gullet.popToken());
|
|
8023
7971
|
var middle = parser.gullet.popToken();
|
|
8024
7972
|
var tok = parser.gullet.popToken();
|
|
@@ -8986,7 +8934,7 @@ var htmlBuilder$7 = (group, options) => {
|
|
|
8986
8934
|
// subjects that should get the "tall" treatment.
|
|
8987
8935
|
var isSingleChar = isCharacterBox(group.body);
|
|
8988
8936
|
if (label === "sout") {
|
|
8989
|
-
img = makeSpan(["stretchy", "sout"]);
|
|
8937
|
+
img = makeSpan(["katex-stretchy", "katex-sout"]);
|
|
8990
8938
|
img.height = options.fontMetrics().defaultRuleThickness / scale;
|
|
8991
8939
|
imgShift = -0.5 * options.fontMetrics().xHeight;
|
|
8992
8940
|
} else if (label === "phase") {
|
|
@@ -9165,10 +9113,8 @@ defineFunction({
|
|
|
9165
9113
|
allowedInText: true,
|
|
9166
9114
|
argTypes: ["color", "hbox"],
|
|
9167
9115
|
handler(_ref, args, optArgs) {
|
|
9168
|
-
var
|
|
9169
|
-
|
|
9170
|
-
funcName
|
|
9171
|
-
} = _ref;
|
|
9116
|
+
var parser = _ref.parser,
|
|
9117
|
+
funcName = _ref.funcName;
|
|
9172
9118
|
var color = assertNodeType(args[0], "color-token").color;
|
|
9173
9119
|
var body = args[1];
|
|
9174
9120
|
return {
|
|
@@ -9189,10 +9135,8 @@ defineFunction({
|
|
|
9189
9135
|
allowedInText: true,
|
|
9190
9136
|
argTypes: ["color", "color", "hbox"],
|
|
9191
9137
|
handler(_ref2, args, optArgs) {
|
|
9192
|
-
var
|
|
9193
|
-
|
|
9194
|
-
funcName
|
|
9195
|
-
} = _ref2;
|
|
9138
|
+
var parser = _ref2.parser,
|
|
9139
|
+
funcName = _ref2.funcName;
|
|
9196
9140
|
var borderColor = assertNodeType(args[0], "color-token").color;
|
|
9197
9141
|
var backgroundColor = assertNodeType(args[1], "color-token").color;
|
|
9198
9142
|
var body = args[2];
|
|
@@ -9213,9 +9157,7 @@ defineFunction({
|
|
|
9213
9157
|
argTypes: ["hbox"],
|
|
9214
9158
|
allowedInText: true,
|
|
9215
9159
|
handler(_ref3, args) {
|
|
9216
|
-
var
|
|
9217
|
-
parser
|
|
9218
|
-
} = _ref3;
|
|
9160
|
+
var parser = _ref3.parser;
|
|
9219
9161
|
return {
|
|
9220
9162
|
type: "enclose",
|
|
9221
9163
|
mode: parser.mode,
|
|
@@ -9229,10 +9171,8 @@ defineFunction({
|
|
|
9229
9171
|
names: ["\\cancel", "\\bcancel", "\\xcancel", "\\phase"],
|
|
9230
9172
|
numArgs: 1,
|
|
9231
9173
|
handler(_ref4, args) {
|
|
9232
|
-
var
|
|
9233
|
-
|
|
9234
|
-
funcName
|
|
9235
|
-
} = _ref4;
|
|
9174
|
+
var parser = _ref4.parser,
|
|
9175
|
+
funcName = _ref4.funcName;
|
|
9236
9176
|
var body = args[0];
|
|
9237
9177
|
return {
|
|
9238
9178
|
type: "enclose",
|
|
@@ -9248,10 +9188,8 @@ defineFunction({
|
|
|
9248
9188
|
numArgs: 1,
|
|
9249
9189
|
allowedInText: true,
|
|
9250
9190
|
handler(_ref5, args) {
|
|
9251
|
-
var
|
|
9252
|
-
|
|
9253
|
-
funcName
|
|
9254
|
-
} = _ref5;
|
|
9191
|
+
var parser = _ref5.parser,
|
|
9192
|
+
funcName = _ref5.funcName;
|
|
9255
9193
|
if (parser.mode === "math") {
|
|
9256
9194
|
parser.settings.reportNonstrict("mathVsSout", "LaTeX's \\sout works only in text mode");
|
|
9257
9195
|
}
|
|
@@ -9271,9 +9209,7 @@ defineFunction({
|
|
|
9271
9209
|
argTypes: ["hbox"],
|
|
9272
9210
|
allowedInText: false,
|
|
9273
9211
|
handler(_ref6, args) {
|
|
9274
|
-
var
|
|
9275
|
-
parser
|
|
9276
|
-
} = _ref6;
|
|
9212
|
+
var parser = _ref6.parser;
|
|
9277
9213
|
return {
|
|
9278
9214
|
type: "enclose",
|
|
9279
9215
|
mode: parser.mode,
|
|
@@ -9290,14 +9226,12 @@ defineFunction({
|
|
|
9290
9226
|
*/
|
|
9291
9227
|
var _environments = {};
|
|
9292
9228
|
function defineEnvironment(_ref) {
|
|
9293
|
-
var
|
|
9294
|
-
|
|
9295
|
-
|
|
9296
|
-
|
|
9297
|
-
|
|
9298
|
-
|
|
9299
|
-
mathmlBuilder
|
|
9300
|
-
} = _ref;
|
|
9229
|
+
var type = _ref.type,
|
|
9230
|
+
names = _ref.names,
|
|
9231
|
+
props = _ref.props,
|
|
9232
|
+
handler = _ref.handler,
|
|
9233
|
+
htmlBuilder = _ref.htmlBuilder,
|
|
9234
|
+
mathmlBuilder = _ref.mathmlBuilder;
|
|
9301
9235
|
// Set default values of environments.
|
|
9302
9236
|
var data = {
|
|
9303
9237
|
type,
|
|
@@ -9450,18 +9384,16 @@ function getAutoTag(name) {
|
|
|
9450
9384
|
* ("text", "display", etc.), then each cell is cast into that style.
|
|
9451
9385
|
*/
|
|
9452
9386
|
function parseArray(parser, _ref, style) {
|
|
9453
|
-
var
|
|
9454
|
-
|
|
9455
|
-
|
|
9456
|
-
|
|
9457
|
-
|
|
9458
|
-
|
|
9459
|
-
|
|
9460
|
-
|
|
9461
|
-
|
|
9462
|
-
|
|
9463
|
-
leqno
|
|
9464
|
-
} = _ref;
|
|
9387
|
+
var hskipBeforeAndAfter = _ref.hskipBeforeAndAfter,
|
|
9388
|
+
addJot = _ref.addJot,
|
|
9389
|
+
cols = _ref.cols,
|
|
9390
|
+
arraystretch = _ref.arraystretch,
|
|
9391
|
+
colSeparationType = _ref.colSeparationType,
|
|
9392
|
+
autoTag = _ref.autoTag,
|
|
9393
|
+
singleRow = _ref.singleRow,
|
|
9394
|
+
emptySingleRow = _ref.emptySingleRow,
|
|
9395
|
+
maxNumCols = _ref.maxNumCols,
|
|
9396
|
+
leqno = _ref.leqno;
|
|
9465
9397
|
parser.gullet.beginGroup();
|
|
9466
9398
|
if (!singleRow) {
|
|
9467
9399
|
// \cr is equivalent to \\ without the optional size argument (see below)
|
|
@@ -9820,8 +9752,8 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
|
|
|
9820
9752
|
var tableBody = makeSpan(["mtable"], cols);
|
|
9821
9753
|
// Add \hline(s), if any.
|
|
9822
9754
|
if (hlines.length > 0) {
|
|
9823
|
-
var line = makeLineSpan("hline", options, ruleThickness);
|
|
9824
|
-
var dashes = makeLineSpan("hdashline", options, ruleThickness);
|
|
9755
|
+
var line = makeLineSpan("katex-hline", options, ruleThickness);
|
|
9756
|
+
var dashes = makeLineSpan("katex-hdashline", options, ruleThickness);
|
|
9825
9757
|
var vListElems = [{
|
|
9826
9758
|
type: "elem",
|
|
9827
9759
|
elem: tableBody,
|
|
@@ -9856,7 +9788,7 @@ var htmlBuilder$6 = function htmlBuilder(group, options) {
|
|
|
9856
9788
|
positionType: "individualShift",
|
|
9857
9789
|
children: tagSpans
|
|
9858
9790
|
});
|
|
9859
|
-
var tagCol = makeSpan(["tag"], [eqnNumCol], options);
|
|
9791
|
+
var tagCol = makeSpan(["katex-tag"], [eqnNumCol], options);
|
|
9860
9792
|
return makeFragment([tableBody, tagCol]);
|
|
9861
9793
|
}
|
|
9862
9794
|
};
|
|
@@ -10398,10 +10330,8 @@ defineFunction({
|
|
|
10398
10330
|
numArgs: 1,
|
|
10399
10331
|
argTypes: ["text"],
|
|
10400
10332
|
handler(_ref, args) {
|
|
10401
|
-
var
|
|
10402
|
-
|
|
10403
|
-
funcName
|
|
10404
|
-
} = _ref;
|
|
10333
|
+
var parser = _ref.parser,
|
|
10334
|
+
funcName = _ref.funcName;
|
|
10405
10335
|
var nameGroup = args[0];
|
|
10406
10336
|
if (nameGroup.type !== "ordgroup") {
|
|
10407
10337
|
throw new ParseError("Invalid environment name", nameGroup);
|
|
@@ -10412,16 +10342,15 @@ defineFunction({
|
|
|
10412
10342
|
}
|
|
10413
10343
|
if (funcName === "\\begin") {
|
|
10414
10344
|
// begin...end is similar to left...right
|
|
10415
|
-
if (!
|
|
10345
|
+
if (!Object.prototype.hasOwnProperty.call(environments, envName)) {
|
|
10416
10346
|
throw new ParseError("No such environment: " + envName, nameGroup);
|
|
10417
10347
|
}
|
|
10418
10348
|
// Build the environment object. Arguments and other information will
|
|
10419
10349
|
// be made available to the begin and end methods using properties.
|
|
10420
10350
|
var env = environments[envName];
|
|
10421
|
-
var {
|
|
10422
|
-
args
|
|
10423
|
-
optArgs
|
|
10424
|
-
} = parser.parseArguments("\\begin{" + envName + "}", env);
|
|
10351
|
+
var _parser$parseArgument = parser.parseArguments("\\begin{" + envName + "}", env),
|
|
10352
|
+
_args = _parser$parseArgument.args,
|
|
10353
|
+
optArgs = _parser$parseArgument.optArgs;
|
|
10425
10354
|
var context = {
|
|
10426
10355
|
mode: parser.mode,
|
|
10427
10356
|
envName,
|
|
@@ -10477,10 +10406,8 @@ defineFunction({
|
|
|
10477
10406
|
numArgs: 1,
|
|
10478
10407
|
allowedInArgument: true,
|
|
10479
10408
|
handler: (_ref, args) => {
|
|
10480
|
-
var
|
|
10481
|
-
|
|
10482
|
-
funcName
|
|
10483
|
-
} = _ref;
|
|
10409
|
+
var parser = _ref.parser,
|
|
10410
|
+
funcName = _ref.funcName;
|
|
10484
10411
|
var body = normalizeArgument(args[0]);
|
|
10485
10412
|
var func = funcName in fontAliases ? fontAliases[funcName] : funcName;
|
|
10486
10413
|
return {
|
|
@@ -10498,9 +10425,7 @@ defineFunction({
|
|
|
10498
10425
|
names: ["\\boldsymbol", "\\bm"],
|
|
10499
10426
|
numArgs: 1,
|
|
10500
10427
|
handler: (_ref2, args) => {
|
|
10501
|
-
var
|
|
10502
|
-
parser
|
|
10503
|
-
} = _ref2;
|
|
10428
|
+
var parser = _ref2.parser;
|
|
10504
10429
|
var body = args[0];
|
|
10505
10430
|
// amsbsy.sty's \boldsymbol uses \binrel spacing to inherit the
|
|
10506
10431
|
// argument's bin|rel|ord status
|
|
@@ -10525,14 +10450,10 @@ defineFunction({
|
|
|
10525
10450
|
numArgs: 0,
|
|
10526
10451
|
allowedInText: true,
|
|
10527
10452
|
handler: (_ref3, args) => {
|
|
10528
|
-
var
|
|
10529
|
-
|
|
10530
|
-
|
|
10531
|
-
|
|
10532
|
-
} = _ref3;
|
|
10533
|
-
var {
|
|
10534
|
-
mode
|
|
10535
|
-
} = parser;
|
|
10453
|
+
var parser = _ref3.parser,
|
|
10454
|
+
funcName = _ref3.funcName,
|
|
10455
|
+
breakOnTokenText = _ref3.breakOnTokenText;
|
|
10456
|
+
var mode = parser.mode;
|
|
10536
10457
|
var body = parser.parseExpression(true, breakOnTokenText);
|
|
10537
10458
|
return {
|
|
10538
10459
|
type: "font",
|
|
@@ -10728,10 +10649,8 @@ defineFunction({
|
|
|
10728
10649
|
numArgs: 2,
|
|
10729
10650
|
allowedInArgument: true,
|
|
10730
10651
|
handler: (_ref, args) => {
|
|
10731
|
-
var
|
|
10732
|
-
|
|
10733
|
-
funcName
|
|
10734
|
-
} = _ref;
|
|
10652
|
+
var parser = _ref.parser,
|
|
10653
|
+
funcName = _ref.funcName;
|
|
10735
10654
|
var numer = args[0];
|
|
10736
10655
|
var denom = args[1];
|
|
10737
10656
|
var hasBarLine;
|
|
@@ -10797,11 +10716,9 @@ defineFunction({
|
|
|
10797
10716
|
numArgs: 0,
|
|
10798
10717
|
infix: true,
|
|
10799
10718
|
handler(_ref2) {
|
|
10800
|
-
var
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
token
|
|
10804
|
-
} = _ref2;
|
|
10719
|
+
var parser = _ref2.parser,
|
|
10720
|
+
funcName = _ref2.funcName,
|
|
10721
|
+
token = _ref2.token;
|
|
10805
10722
|
var replaceWith;
|
|
10806
10723
|
switch (funcName) {
|
|
10807
10724
|
case "\\over":
|
|
@@ -10846,9 +10763,7 @@ defineFunction({
|
|
|
10846
10763
|
allowedInArgument: true,
|
|
10847
10764
|
argTypes: ["math", "math", "size", "text", "math", "math"],
|
|
10848
10765
|
handler(_ref3, args) {
|
|
10849
|
-
var
|
|
10850
|
-
parser
|
|
10851
|
-
} = _ref3;
|
|
10766
|
+
var parser = _ref3.parser;
|
|
10852
10767
|
var numer = args[4];
|
|
10853
10768
|
var denom = args[5];
|
|
10854
10769
|
// Look into the parse nodes to get the desired delimiters.
|
|
@@ -10901,11 +10816,9 @@ defineFunction({
|
|
|
10901
10816
|
argTypes: ["size"],
|
|
10902
10817
|
infix: true,
|
|
10903
10818
|
handler(_ref4, args) {
|
|
10904
|
-
var
|
|
10905
|
-
|
|
10906
|
-
|
|
10907
|
-
token
|
|
10908
|
-
} = _ref4;
|
|
10819
|
+
var parser = _ref4.parser;
|
|
10820
|
+
_ref4.funcName;
|
|
10821
|
+
var token = _ref4.token;
|
|
10909
10822
|
return {
|
|
10910
10823
|
type: "infix",
|
|
10911
10824
|
mode: parser.mode,
|
|
@@ -10921,10 +10834,8 @@ defineFunction({
|
|
|
10921
10834
|
numArgs: 3,
|
|
10922
10835
|
argTypes: ["math", "size", "math"],
|
|
10923
10836
|
handler: (_ref5, args) => {
|
|
10924
|
-
var
|
|
10925
|
-
|
|
10926
|
-
funcName
|
|
10927
|
-
} = _ref5;
|
|
10837
|
+
var parser = _ref5.parser;
|
|
10838
|
+
_ref5.funcName;
|
|
10928
10839
|
var numer = args[0];
|
|
10929
10840
|
var barSize = assertNodeType(args[1], "infix").size;
|
|
10930
10841
|
if (!barSize) {
|
|
@@ -11053,10 +10964,8 @@ defineFunction({
|
|
|
11053
10964
|
names: ["\\overbrace", "\\underbrace", "\\overbracket", "\\underbracket"],
|
|
11054
10965
|
numArgs: 1,
|
|
11055
10966
|
handler(_ref, args) {
|
|
11056
|
-
var
|
|
11057
|
-
|
|
11058
|
-
funcName
|
|
11059
|
-
} = _ref;
|
|
10967
|
+
var parser = _ref.parser,
|
|
10968
|
+
funcName = _ref.funcName;
|
|
11060
10969
|
return {
|
|
11061
10970
|
type: "horizBrace",
|
|
11062
10971
|
mode: parser.mode,
|
|
@@ -11076,9 +10985,7 @@ defineFunction({
|
|
|
11076
10985
|
argTypes: ["url", "original"],
|
|
11077
10986
|
allowedInText: true,
|
|
11078
10987
|
handler: (_ref, args) => {
|
|
11079
|
-
var
|
|
11080
|
-
parser
|
|
11081
|
-
} = _ref;
|
|
10988
|
+
var parser = _ref.parser;
|
|
11082
10989
|
var body = args[1];
|
|
11083
10990
|
var href = assertNodeType(args[0], "url").url;
|
|
11084
10991
|
if (!parser.settings.isTrusted({
|
|
@@ -11114,9 +11021,7 @@ defineFunction({
|
|
|
11114
11021
|
argTypes: ["url"],
|
|
11115
11022
|
allowedInText: true,
|
|
11116
11023
|
handler: (_ref2, args) => {
|
|
11117
|
-
var
|
|
11118
|
-
parser
|
|
11119
|
-
} = _ref2;
|
|
11024
|
+
var parser = _ref2.parser;
|
|
11120
11025
|
var href = assertNodeType(args[0], "url").url;
|
|
11121
11026
|
if (!parser.settings.isTrusted({
|
|
11122
11027
|
command: "\\url",
|
|
@@ -11163,9 +11068,7 @@ defineFunction({
|
|
|
11163
11068
|
allowedInText: true,
|
|
11164
11069
|
primitive: true,
|
|
11165
11070
|
handler(_ref, args) {
|
|
11166
|
-
var
|
|
11167
|
-
parser
|
|
11168
|
-
} = _ref;
|
|
11071
|
+
var parser = _ref.parser;
|
|
11169
11072
|
return {
|
|
11170
11073
|
type: "hbox",
|
|
11171
11074
|
mode: parser.mode,
|
|
@@ -11188,11 +11091,9 @@ defineFunction({
|
|
|
11188
11091
|
argTypes: ["raw", "original"],
|
|
11189
11092
|
allowedInText: true,
|
|
11190
11093
|
handler: (_ref, args) => {
|
|
11191
|
-
var
|
|
11192
|
-
|
|
11193
|
-
|
|
11194
|
-
token
|
|
11195
|
-
} = _ref;
|
|
11094
|
+
var parser = _ref.parser,
|
|
11095
|
+
funcName = _ref.funcName;
|
|
11096
|
+
_ref.token;
|
|
11196
11097
|
var value = assertNodeType(args[0], "raw").string;
|
|
11197
11098
|
var body = args[1];
|
|
11198
11099
|
if (parser.settings.strict) {
|
|
@@ -11224,9 +11125,26 @@ defineFunction({
|
|
|
11224
11125
|
break;
|
|
11225
11126
|
case "\\htmlData":
|
|
11226
11127
|
{
|
|
11227
|
-
|
|
11228
|
-
|
|
11229
|
-
|
|
11128
|
+
// `{,}` escapes a literal comma. Braces are used rather than a
|
|
11129
|
+
// backslash because `\,` is a macro (a thin space) that expands
|
|
11130
|
+
// away before this raw argument is ever read.
|
|
11131
|
+
var ESCAPED_COMMA = "{,}";
|
|
11132
|
+
var data = [];
|
|
11133
|
+
var current = "";
|
|
11134
|
+
for (var i = 0; i < value.length; i++) {
|
|
11135
|
+
if (value.startsWith(ESCAPED_COMMA, i)) {
|
|
11136
|
+
current += ",";
|
|
11137
|
+
i += ESCAPED_COMMA.length - 1;
|
|
11138
|
+
} else if (value[i] === ",") {
|
|
11139
|
+
data.push(current);
|
|
11140
|
+
current = "";
|
|
11141
|
+
} else {
|
|
11142
|
+
current += value[i];
|
|
11143
|
+
}
|
|
11144
|
+
}
|
|
11145
|
+
data.push(current);
|
|
11146
|
+
for (var _i = 0; _i < data.length; _i++) {
|
|
11147
|
+
var item = data[_i];
|
|
11230
11148
|
var firstEquals = item.indexOf("=");
|
|
11231
11149
|
if (firstEquals < 0) {
|
|
11232
11150
|
throw new ParseError("\\htmlData key/value '" + item + "'" + " missing equals sign");
|
|
@@ -11261,9 +11179,11 @@ defineFunction({
|
|
|
11261
11179
|
classes.push(...group.attributes.class.trim().split(/\s+/));
|
|
11262
11180
|
}
|
|
11263
11181
|
var span = makeSpan(classes, elements, options);
|
|
11264
|
-
for (var
|
|
11265
|
-
|
|
11266
|
-
|
|
11182
|
+
for (var _ref3 of Object.entries(group.attributes)) {
|
|
11183
|
+
var attr = _ref3[0];
|
|
11184
|
+
var value = _ref3[1];
|
|
11185
|
+
if (attr !== "class") {
|
|
11186
|
+
span.setAttribute(attr, value);
|
|
11267
11187
|
}
|
|
11268
11188
|
}
|
|
11269
11189
|
return span;
|
|
@@ -11280,9 +11200,7 @@ defineFunction({
|
|
|
11280
11200
|
allowedInArgument: true,
|
|
11281
11201
|
allowedInText: true,
|
|
11282
11202
|
handler: (_ref, args) => {
|
|
11283
|
-
var
|
|
11284
|
-
parser
|
|
11285
|
-
} = _ref;
|
|
11203
|
+
var parser = _ref.parser;
|
|
11286
11204
|
return {
|
|
11287
11205
|
type: "htmlmathml",
|
|
11288
11206
|
mode: parser.mode,
|
|
@@ -11331,9 +11249,7 @@ defineFunction({
|
|
|
11331
11249
|
argTypes: ["raw", "url"],
|
|
11332
11250
|
allowedInText: false,
|
|
11333
11251
|
handler: (_ref, args, optArgs) => {
|
|
11334
|
-
var
|
|
11335
|
-
parser
|
|
11336
|
-
} = _ref;
|
|
11252
|
+
var parser = _ref.parser;
|
|
11337
11253
|
var width = {
|
|
11338
11254
|
number: 0,
|
|
11339
11255
|
unit: "em"
|
|
@@ -11450,10 +11366,8 @@ defineFunction({
|
|
|
11450
11366
|
primitive: true,
|
|
11451
11367
|
allowedInText: true,
|
|
11452
11368
|
handler(_ref, args) {
|
|
11453
|
-
var
|
|
11454
|
-
|
|
11455
|
-
funcName
|
|
11456
|
-
} = _ref;
|
|
11369
|
+
var parser = _ref.parser,
|
|
11370
|
+
funcName = _ref.funcName;
|
|
11457
11371
|
var size = assertNodeType(args[0], "size");
|
|
11458
11372
|
if (parser.settings.strict) {
|
|
11459
11373
|
var mathFunction = funcName[1] === 'm'; // \mkern, \mskip
|
|
@@ -11494,10 +11408,8 @@ defineFunction({
|
|
|
11494
11408
|
numArgs: 1,
|
|
11495
11409
|
allowedInText: true,
|
|
11496
11410
|
handler: (_ref, args) => {
|
|
11497
|
-
var
|
|
11498
|
-
|
|
11499
|
-
funcName
|
|
11500
|
-
} = _ref;
|
|
11411
|
+
var parser = _ref.parser,
|
|
11412
|
+
funcName = _ref.funcName;
|
|
11501
11413
|
var body = args[0];
|
|
11502
11414
|
return {
|
|
11503
11415
|
type: "lap",
|
|
@@ -11512,19 +11424,19 @@ defineFunction({
|
|
|
11512
11424
|
if (group.alignment === "clap") {
|
|
11513
11425
|
// ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/
|
|
11514
11426
|
inner = makeSpan([], [buildGroup$1(group.body, options)]);
|
|
11515
|
-
// wrap, since CSS will center a .clap > .inner > span
|
|
11516
|
-
inner = makeSpan(["inner"], [inner], options);
|
|
11427
|
+
// wrap, since CSS will center a .clap > .katex-inner > span
|
|
11428
|
+
inner = makeSpan(["katex-inner"], [inner], options);
|
|
11517
11429
|
} else {
|
|
11518
|
-
inner = makeSpan(["inner"], [buildGroup$1(group.body, options)]);
|
|
11430
|
+
inner = makeSpan(["katex-inner"], [buildGroup$1(group.body, options)]);
|
|
11519
11431
|
}
|
|
11520
|
-
var fix = makeSpan(["fix"], []);
|
|
11432
|
+
var fix = makeSpan(["katex-fix"], []);
|
|
11521
11433
|
var node = makeSpan([group.alignment], [inner, fix], options);
|
|
11522
11434
|
// At this point, we have correctly set horizontal alignment of the
|
|
11523
11435
|
// two items involved in the lap.
|
|
11524
11436
|
// Next, use a strut to set the height of the HTML bounding box.
|
|
11525
11437
|
// Otherwise, a tall argument may be misplaced.
|
|
11526
11438
|
// This code resolved issue #1153
|
|
11527
|
-
var strut = makeSpan(["strut"]);
|
|
11439
|
+
var strut = makeSpan(["katex-strut"]);
|
|
11528
11440
|
strut.style.height = makeEm(node.height + node.depth);
|
|
11529
11441
|
if (node.depth) {
|
|
11530
11442
|
strut.style.verticalAlign = makeEm(-node.depth);
|
|
@@ -11532,8 +11444,8 @@ defineFunction({
|
|
|
11532
11444
|
node.children.unshift(strut);
|
|
11533
11445
|
// Next, prevent vertical misplacement when next to something tall.
|
|
11534
11446
|
// This code resolves issue #1234
|
|
11535
|
-
node = makeSpan(["thinbox"], [node], options);
|
|
11536
|
-
return makeSpan(["mord", "vbox"], [node], options);
|
|
11447
|
+
node = makeSpan(["katex-thinbox"], [node], options);
|
|
11448
|
+
return makeSpan(["mord", "katex-vbox"], [node], options);
|
|
11537
11449
|
},
|
|
11538
11450
|
mathmlBuilder: (group, options) => {
|
|
11539
11451
|
// mathllap, mathrlap, mathclap
|
|
@@ -11555,10 +11467,8 @@ defineFunction({
|
|
|
11555
11467
|
allowedInText: true,
|
|
11556
11468
|
allowedInMath: false,
|
|
11557
11469
|
handler(_ref, args) {
|
|
11558
|
-
var
|
|
11559
|
-
|
|
11560
|
-
parser
|
|
11561
|
-
} = _ref;
|
|
11470
|
+
var funcName = _ref.funcName,
|
|
11471
|
+
parser = _ref.parser;
|
|
11562
11472
|
var outerMode = parser.mode;
|
|
11563
11473
|
parser.switchMode("math");
|
|
11564
11474
|
var close = funcName === "\\(" ? "\\)" : "$";
|
|
@@ -11607,9 +11517,7 @@ defineFunction({
|
|
|
11607
11517
|
numArgs: 4,
|
|
11608
11518
|
primitive: true,
|
|
11609
11519
|
handler: (_ref, args) => {
|
|
11610
|
-
var
|
|
11611
|
-
parser
|
|
11612
|
-
} = _ref;
|
|
11520
|
+
var parser = _ref.parser;
|
|
11613
11521
|
return {
|
|
11614
11522
|
type: "mathchoice",
|
|
11615
11523
|
mode: parser.mode,
|
|
@@ -11902,10 +11810,8 @@ defineFunction({
|
|
|
11902
11810
|
names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220F", "\u2210", "\u2211", "\u22c0", "\u22c1", "\u22c2", "\u22c3", "\u2a00", "\u2a01", "\u2a02", "\u2a04", "\u2a06"],
|
|
11903
11811
|
numArgs: 0,
|
|
11904
11812
|
handler: (_ref, args) => {
|
|
11905
|
-
var
|
|
11906
|
-
|
|
11907
|
-
funcName
|
|
11908
|
-
} = _ref;
|
|
11813
|
+
var parser = _ref.parser,
|
|
11814
|
+
funcName = _ref.funcName;
|
|
11909
11815
|
var fName = funcName;
|
|
11910
11816
|
if (fName.length === 1) {
|
|
11911
11817
|
fName = singleCharBigOps[fName];
|
|
@@ -11928,9 +11834,7 @@ defineFunction({
|
|
|
11928
11834
|
numArgs: 1,
|
|
11929
11835
|
primitive: true,
|
|
11930
11836
|
handler: (_ref2, args) => {
|
|
11931
|
-
var
|
|
11932
|
-
parser
|
|
11933
|
-
} = _ref2;
|
|
11837
|
+
var parser = _ref2.parser;
|
|
11934
11838
|
var body = args[0];
|
|
11935
11839
|
return {
|
|
11936
11840
|
type: "op",
|
|
@@ -11959,10 +11863,8 @@ defineFunction({
|
|
|
11959
11863
|
names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"],
|
|
11960
11864
|
numArgs: 0,
|
|
11961
11865
|
handler(_ref3) {
|
|
11962
|
-
var
|
|
11963
|
-
|
|
11964
|
-
funcName
|
|
11965
|
-
} = _ref3;
|
|
11866
|
+
var parser = _ref3.parser,
|
|
11867
|
+
funcName = _ref3.funcName;
|
|
11966
11868
|
return {
|
|
11967
11869
|
type: "op",
|
|
11968
11870
|
mode: parser.mode,
|
|
@@ -11979,10 +11881,8 @@ defineFunction({
|
|
|
11979
11881
|
names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
|
|
11980
11882
|
numArgs: 0,
|
|
11981
11883
|
handler(_ref4) {
|
|
11982
|
-
var
|
|
11983
|
-
|
|
11984
|
-
funcName
|
|
11985
|
-
} = _ref4;
|
|
11884
|
+
var parser = _ref4.parser,
|
|
11885
|
+
funcName = _ref4.funcName;
|
|
11986
11886
|
return {
|
|
11987
11887
|
type: "op",
|
|
11988
11888
|
mode: parser.mode,
|
|
@@ -12000,10 +11900,8 @@ defineFunction({
|
|
|
12000
11900
|
numArgs: 0,
|
|
12001
11901
|
allowedInArgument: true,
|
|
12002
11902
|
handler(_ref5) {
|
|
12003
|
-
var
|
|
12004
|
-
|
|
12005
|
-
funcName
|
|
12006
|
-
} = _ref5;
|
|
11903
|
+
var parser = _ref5.parser,
|
|
11904
|
+
funcName = _ref5.funcName;
|
|
12007
11905
|
var fName = funcName;
|
|
12008
11906
|
if (fName.length === 1) {
|
|
12009
11907
|
fName = singleCharIntegrals[fName];
|
|
@@ -12128,10 +12026,8 @@ defineFunction({
|
|
|
12128
12026
|
names: ["\\operatorname@", "\\operatornamewithlimits"],
|
|
12129
12027
|
numArgs: 1,
|
|
12130
12028
|
handler: (_ref, args) => {
|
|
12131
|
-
var
|
|
12132
|
-
|
|
12133
|
-
funcName
|
|
12134
|
-
} = _ref;
|
|
12029
|
+
var parser = _ref.parser,
|
|
12030
|
+
funcName = _ref.funcName;
|
|
12135
12031
|
var body = args[0];
|
|
12136
12032
|
return {
|
|
12137
12033
|
type: "operatorname",
|
|
@@ -12165,9 +12061,7 @@ defineFunction({
|
|
|
12165
12061
|
names: ["\\overline"],
|
|
12166
12062
|
numArgs: 1,
|
|
12167
12063
|
handler(_ref, args) {
|
|
12168
|
-
var
|
|
12169
|
-
parser
|
|
12170
|
-
} = _ref;
|
|
12064
|
+
var parser = _ref.parser;
|
|
12171
12065
|
var body = args[0];
|
|
12172
12066
|
return {
|
|
12173
12067
|
type: "overline",
|
|
@@ -12199,7 +12093,7 @@ defineFunction({
|
|
|
12199
12093
|
size: defaultRuleThickness
|
|
12200
12094
|
}]
|
|
12201
12095
|
});
|
|
12202
|
-
return makeSpan(["mord", "overline"], [vlist], options);
|
|
12096
|
+
return makeSpan(["mord", "katex-overline"], [vlist], options);
|
|
12203
12097
|
},
|
|
12204
12098
|
mathmlBuilder(group, options) {
|
|
12205
12099
|
var operator = new MathNode("mo", [new TextNode("\u203e")]);
|
|
@@ -12216,9 +12110,7 @@ defineFunction({
|
|
|
12216
12110
|
numArgs: 1,
|
|
12217
12111
|
allowedInText: true,
|
|
12218
12112
|
handler: (_ref, args) => {
|
|
12219
|
-
var
|
|
12220
|
-
parser
|
|
12221
|
-
} = _ref;
|
|
12113
|
+
var parser = _ref.parser;
|
|
12222
12114
|
var body = args[0];
|
|
12223
12115
|
return {
|
|
12224
12116
|
type: "phantom",
|
|
@@ -12244,9 +12136,7 @@ defineFunction({
|
|
|
12244
12136
|
numArgs: 1,
|
|
12245
12137
|
allowedInText: true,
|
|
12246
12138
|
handler: (_ref2, args) => {
|
|
12247
|
-
var
|
|
12248
|
-
parser
|
|
12249
|
-
} = _ref2;
|
|
12139
|
+
var parser = _ref2.parser;
|
|
12250
12140
|
var body = args[0];
|
|
12251
12141
|
return {
|
|
12252
12142
|
type: "vphantom",
|
|
@@ -12255,8 +12145,8 @@ defineFunction({
|
|
|
12255
12145
|
};
|
|
12256
12146
|
},
|
|
12257
12147
|
htmlBuilder: (group, options) => {
|
|
12258
|
-
var inner = makeSpan(["inner"], [buildGroup$1(group.body, options.withPhantom())]);
|
|
12259
|
-
var fix = makeSpan(["fix"], []);
|
|
12148
|
+
var inner = makeSpan(["katex-inner"], [buildGroup$1(group.body, options.withPhantom())]);
|
|
12149
|
+
var fix = makeSpan(["katex-fix"], []);
|
|
12260
12150
|
return makeSpan(["mord", "rlap"], [inner, fix], options);
|
|
12261
12151
|
},
|
|
12262
12152
|
mathmlBuilder: (group, options) => {
|
|
@@ -12276,9 +12166,7 @@ defineFunction({
|
|
|
12276
12166
|
argTypes: ["size", "hbox"],
|
|
12277
12167
|
allowedInText: true,
|
|
12278
12168
|
handler(_ref, args) {
|
|
12279
|
-
var
|
|
12280
|
-
parser
|
|
12281
|
-
} = _ref;
|
|
12169
|
+
var parser = _ref.parser;
|
|
12282
12170
|
var amount = assertNodeType(args[0], "size").value;
|
|
12283
12171
|
var body = args[1];
|
|
12284
12172
|
return {
|
|
@@ -12315,9 +12203,7 @@ defineFunction({
|
|
|
12315
12203
|
allowedInText: true,
|
|
12316
12204
|
allowedInArgument: true,
|
|
12317
12205
|
handler(_ref) {
|
|
12318
|
-
var
|
|
12319
|
-
parser
|
|
12320
|
-
} = _ref;
|
|
12206
|
+
var parser = _ref.parser;
|
|
12321
12207
|
return {
|
|
12322
12208
|
type: "internal",
|
|
12323
12209
|
mode: parser.mode
|
|
@@ -12334,9 +12220,7 @@ defineFunction({
|
|
|
12334
12220
|
allowedInMath: true,
|
|
12335
12221
|
argTypes: ["size", "size", "size"],
|
|
12336
12222
|
handler(_ref, args, optArgs) {
|
|
12337
|
-
var
|
|
12338
|
-
parser
|
|
12339
|
-
} = _ref;
|
|
12223
|
+
var parser = _ref.parser;
|
|
12340
12224
|
var shift = optArgs[0];
|
|
12341
12225
|
var width = assertNodeType(args[0], "size");
|
|
12342
12226
|
var height = assertNodeType(args[1], "size");
|
|
@@ -12350,7 +12234,7 @@ defineFunction({
|
|
|
12350
12234
|
},
|
|
12351
12235
|
htmlBuilder(group, options) {
|
|
12352
12236
|
// Make an empty span for the rule
|
|
12353
|
-
var rule = makeSpan(["mord", "rule"], [], options);
|
|
12237
|
+
var rule = makeSpan(["mord", "katex-rule"], [], options);
|
|
12354
12238
|
// Calculate the shift, width, and height of the rule, and account for units
|
|
12355
12239
|
var width = calculateSize(group.width, options);
|
|
12356
12240
|
var height = calculateSize(group.height, options);
|
|
@@ -12396,7 +12280,7 @@ function sizingGroup(value, options, baseOptions) {
|
|
|
12396
12280
|
// Add size-resetting classes to the inner list and set maxFontSize
|
|
12397
12281
|
// manually. Handle nested size changes.
|
|
12398
12282
|
for (var i = 0; i < inner.length; i++) {
|
|
12399
|
-
var pos = inner[i].classes.indexOf("sizing");
|
|
12283
|
+
var pos = inner[i].classes.indexOf("katex-sizing");
|
|
12400
12284
|
if (pos < 0) {
|
|
12401
12285
|
Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));
|
|
12402
12286
|
} else if (inner[i].classes[pos + 1] === "reset-size" + options.size) {
|
|
@@ -12424,11 +12308,9 @@ defineFunction({
|
|
|
12424
12308
|
numArgs: 0,
|
|
12425
12309
|
allowedInText: true,
|
|
12426
12310
|
handler: (_ref, args) => {
|
|
12427
|
-
var
|
|
12428
|
-
|
|
12429
|
-
|
|
12430
|
-
parser
|
|
12431
|
-
} = _ref;
|
|
12311
|
+
var breakOnTokenText = _ref.breakOnTokenText,
|
|
12312
|
+
funcName = _ref.funcName,
|
|
12313
|
+
parser = _ref.parser;
|
|
12432
12314
|
var body = parser.parseExpression(false, breakOnTokenText);
|
|
12433
12315
|
return {
|
|
12434
12316
|
type: "sizing",
|
|
@@ -12461,9 +12343,7 @@ defineFunction({
|
|
|
12461
12343
|
numOptionalArgs: 1,
|
|
12462
12344
|
allowedInText: true,
|
|
12463
12345
|
handler: (_ref, args, optArgs) => {
|
|
12464
|
-
var
|
|
12465
|
-
parser
|
|
12466
|
-
} = _ref;
|
|
12346
|
+
var parser = _ref.parser;
|
|
12467
12347
|
var smashHeight = false;
|
|
12468
12348
|
var smashDepth = false;
|
|
12469
12349
|
var tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup");
|
|
@@ -12511,7 +12391,7 @@ defineFunction({
|
|
|
12511
12391
|
}
|
|
12512
12392
|
if (group.smashHeight && group.smashDepth) {
|
|
12513
12393
|
// Symmetric \smash can stay in inline layout.
|
|
12514
|
-
return makeSpan(["mord", "smash"], [node], options);
|
|
12394
|
+
return makeSpan(["mord", "katex-smash"], [node], options);
|
|
12515
12395
|
}
|
|
12516
12396
|
// In order to influence makeVList for asymmetric smashing, we have to
|
|
12517
12397
|
// reset the children.
|
|
@@ -12557,9 +12437,7 @@ defineFunction({
|
|
|
12557
12437
|
numArgs: 1,
|
|
12558
12438
|
numOptionalArgs: 1,
|
|
12559
12439
|
handler(_ref, args, optArgs) {
|
|
12560
|
-
var
|
|
12561
|
-
parser
|
|
12562
|
-
} = _ref;
|
|
12440
|
+
var parser = _ref.parser;
|
|
12563
12441
|
var index = optArgs[0];
|
|
12564
12442
|
var body = args[0];
|
|
12565
12443
|
return {
|
|
@@ -12592,11 +12470,10 @@ defineFunction({
|
|
|
12592
12470
|
var lineClearance = theta + phi / 4;
|
|
12593
12471
|
var minDelimiterHeight = inner.height + inner.depth + lineClearance + theta;
|
|
12594
12472
|
// Create a sqrt SVG of the required minimum size
|
|
12595
|
-
var
|
|
12596
|
-
span
|
|
12597
|
-
ruleWidth,
|
|
12598
|
-
advanceWidth
|
|
12599
|
-
} = makeSqrtImage(minDelimiterHeight, options);
|
|
12473
|
+
var _makeSqrtImage = makeSqrtImage(minDelimiterHeight, options),
|
|
12474
|
+
img = _makeSqrtImage.span,
|
|
12475
|
+
ruleWidth = _makeSqrtImage.ruleWidth,
|
|
12476
|
+
advanceWidth = _makeSqrtImage.advanceWidth;
|
|
12600
12477
|
var delimDepth = img.height - ruleWidth;
|
|
12601
12478
|
// Adjust the clearance based on the delimiter size
|
|
12602
12479
|
if (delimDepth > inner.height + inner.depth + lineClearance) {
|
|
@@ -12644,15 +12521,13 @@ defineFunction({
|
|
|
12644
12521
|
});
|
|
12645
12522
|
// Add a class surrounding it so we can add on the appropriate
|
|
12646
12523
|
// kerning
|
|
12647
|
-
var rootVListWrap = makeSpan(["root"], [rootVList]);
|
|
12524
|
+
var rootVListWrap = makeSpan(["katex-root"], [rootVList]);
|
|
12648
12525
|
return makeSpan(["mord", "sqrt"], [rootVListWrap, body], options);
|
|
12649
12526
|
}
|
|
12650
12527
|
},
|
|
12651
12528
|
mathmlBuilder(group, options) {
|
|
12652
|
-
var
|
|
12653
|
-
|
|
12654
|
-
index
|
|
12655
|
-
} = group;
|
|
12529
|
+
var body = group.body,
|
|
12530
|
+
index = group.index;
|
|
12656
12531
|
return index ? new MathNode("mroot", [buildGroup(body, options), buildGroup(index, options)]) : new MathNode("msqrt", [buildGroup(body, options)]);
|
|
12657
12532
|
}
|
|
12658
12533
|
});
|
|
@@ -12673,11 +12548,9 @@ defineFunction({
|
|
|
12673
12548
|
allowedInText: true,
|
|
12674
12549
|
primitive: true,
|
|
12675
12550
|
handler(_ref, args) {
|
|
12676
|
-
var
|
|
12677
|
-
|
|
12678
|
-
|
|
12679
|
-
parser
|
|
12680
|
-
} = _ref;
|
|
12551
|
+
var breakOnTokenText = _ref.breakOnTokenText,
|
|
12552
|
+
funcName = _ref.funcName,
|
|
12553
|
+
parser = _ref.parser;
|
|
12681
12554
|
// parse out the implicit body
|
|
12682
12555
|
var body = parser.parseExpression(true, breakOnTokenText);
|
|
12683
12556
|
// TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
|
|
@@ -12767,11 +12640,9 @@ defineFunctionBuilders({
|
|
|
12767
12640
|
if (builderDelegate) {
|
|
12768
12641
|
return builderDelegate(group, options);
|
|
12769
12642
|
}
|
|
12770
|
-
var
|
|
12771
|
-
|
|
12772
|
-
|
|
12773
|
-
sub: valueSub
|
|
12774
|
-
} = group;
|
|
12643
|
+
var valueBase = group.base,
|
|
12644
|
+
valueSup = group.sup,
|
|
12645
|
+
valueSub = group.sub;
|
|
12775
12646
|
var base = buildGroup$1(valueBase, options);
|
|
12776
12647
|
var supm;
|
|
12777
12648
|
var subm;
|
|
@@ -13012,33 +12883,26 @@ defineFunctionBuilders({
|
|
|
13012
12883
|
});
|
|
13013
12884
|
|
|
13014
12885
|
// A map of CSS-based spacing functions to their CSS class.
|
|
13015
|
-
var cssSpace =
|
|
13016
|
-
"\\nobreak": "nobreak",
|
|
13017
|
-
"\\allowbreak": "allowbreak"
|
|
13018
|
-
};
|
|
12886
|
+
var cssSpace = new Map([["\\nobreak", "nobreak"], ["\\allowbreak", "allowbreak"]]);
|
|
13019
12887
|
// A lookup table to determine whether a spacing function/symbol should be
|
|
13020
12888
|
// treated like a regular space character. If a symbol or command is a key
|
|
13021
12889
|
// in this table, then it should be a regular space character. Furthermore,
|
|
13022
12890
|
// the associated value may have a `className` specifying an extra CSS class
|
|
13023
12891
|
// to add to the created `span`.
|
|
13024
|
-
var regularSpace = {
|
|
13025
|
-
|
|
13026
|
-
|
|
13027
|
-
"
|
|
13028
|
-
|
|
13029
|
-
},
|
|
13030
|
-
"\\space": {},
|
|
13031
|
-
"\\nobreakspace": {
|
|
13032
|
-
className: "nobreak"
|
|
13033
|
-
}
|
|
13034
|
-
};
|
|
12892
|
+
var regularSpace = new Map([[" ", {}], ["\\ ", {}], ["~", {
|
|
12893
|
+
className: "nobreak"
|
|
12894
|
+
}], ["\\space", {}], ["\\nobreakspace", {
|
|
12895
|
+
className: "nobreak"
|
|
12896
|
+
}]]);
|
|
13035
12897
|
// ParseNode<"spacing"> created in Parser.js from the "spacing" symbol Groups in
|
|
13036
12898
|
// src/symbols.js.
|
|
13037
12899
|
defineFunctionBuilders({
|
|
13038
12900
|
type: "spacing",
|
|
13039
12901
|
htmlBuilder(group, options) {
|
|
13040
|
-
|
|
13041
|
-
|
|
12902
|
+
var regularSpaceItem = regularSpace.get(group.text);
|
|
12903
|
+
var cssSpaceClass = cssSpace.get(group.text);
|
|
12904
|
+
if (regularSpaceItem) {
|
|
12905
|
+
var className = regularSpaceItem.className || "";
|
|
13042
12906
|
// Spaces are generated by adding an actual space. Each of these
|
|
13043
12907
|
// things has an entry in the symbols table, so these will be turned
|
|
13044
12908
|
// into appropriate outputs.
|
|
@@ -13049,18 +12913,18 @@ defineFunctionBuilders({
|
|
|
13049
12913
|
} else {
|
|
13050
12914
|
return makeSpan(["mspace", className], [mathsym(group.text, group.mode, options)], options);
|
|
13051
12915
|
}
|
|
13052
|
-
} else if (
|
|
12916
|
+
} else if (cssSpaceClass) {
|
|
13053
12917
|
// Spaces based on just a CSS class.
|
|
13054
|
-
return makeSpan(["mspace",
|
|
12918
|
+
return makeSpan(["mspace", cssSpaceClass], [], options);
|
|
13055
12919
|
} else {
|
|
13056
12920
|
throw new ParseError("Unknown type of space \"" + group.text + "\"");
|
|
13057
12921
|
}
|
|
13058
12922
|
},
|
|
13059
12923
|
mathmlBuilder(group, options) {
|
|
13060
12924
|
var node;
|
|
13061
|
-
if (regularSpace.
|
|
12925
|
+
if (regularSpace.has(group.text)) {
|
|
13062
12926
|
node = new MathNode("mtext", [new TextNode("\u00a0")]);
|
|
13063
|
-
} else if (cssSpace.
|
|
12927
|
+
} else if (cssSpace.has(group.text)) {
|
|
13064
12928
|
// CSS-based MathML spaces (\nobreak, \allowbreak) are ignored
|
|
13065
12929
|
return new MathNode("mspace");
|
|
13066
12930
|
} else {
|
|
@@ -13135,10 +12999,8 @@ defineFunction({
|
|
|
13135
12999
|
allowedInArgument: true,
|
|
13136
13000
|
allowedInText: true,
|
|
13137
13001
|
handler(_ref, args) {
|
|
13138
|
-
var
|
|
13139
|
-
|
|
13140
|
-
funcName
|
|
13141
|
-
} = _ref;
|
|
13002
|
+
var parser = _ref.parser,
|
|
13003
|
+
funcName = _ref.funcName;
|
|
13142
13004
|
var body = args[0];
|
|
13143
13005
|
return {
|
|
13144
13006
|
type: "text",
|
|
@@ -13164,9 +13026,7 @@ defineFunction({
|
|
|
13164
13026
|
numArgs: 1,
|
|
13165
13027
|
allowedInText: true,
|
|
13166
13028
|
handler(_ref, args) {
|
|
13167
|
-
var
|
|
13168
|
-
parser
|
|
13169
|
-
} = _ref;
|
|
13029
|
+
var parser = _ref.parser;
|
|
13170
13030
|
return {
|
|
13171
13031
|
type: "underline",
|
|
13172
13032
|
mode: parser.mode,
|
|
@@ -13198,7 +13058,7 @@ defineFunction({
|
|
|
13198
13058
|
elem: innerGroup
|
|
13199
13059
|
}]
|
|
13200
13060
|
});
|
|
13201
|
-
return makeSpan(["mord", "underline"], [vlist], options);
|
|
13061
|
+
return makeSpan(["mord", "katex-underline"], [vlist], options);
|
|
13202
13062
|
},
|
|
13203
13063
|
mathmlBuilder(group, options) {
|
|
13204
13064
|
var operator = new MathNode("mo", [new TextNode("\u203e")]);
|
|
@@ -13218,9 +13078,7 @@ defineFunction({
|
|
|
13218
13078
|
// In LaTeX, \vcenter can act only on a box.
|
|
13219
13079
|
allowedInText: false,
|
|
13220
13080
|
handler(_ref, args) {
|
|
13221
|
-
var
|
|
13222
|
-
parser
|
|
13223
|
-
} = _ref;
|
|
13081
|
+
var parser = _ref.parser;
|
|
13224
13082
|
return {
|
|
13225
13083
|
type: "vcenter",
|
|
13226
13084
|
mode: parser.mode,
|
|
@@ -13443,13 +13301,11 @@ class Namespace {
|
|
|
13443
13301
|
throw new ParseError("Unbalanced namespace destruction: attempt " + "to pop global namespace; please report this as a bug");
|
|
13444
13302
|
}
|
|
13445
13303
|
var undefs = this.undefStack.pop();
|
|
13446
|
-
for (var
|
|
13447
|
-
if (undefs
|
|
13448
|
-
|
|
13449
|
-
|
|
13450
|
-
|
|
13451
|
-
this.current[undef] = undefs[undef];
|
|
13452
|
-
}
|
|
13304
|
+
for (var key of Object.keys(undefs)) {
|
|
13305
|
+
if (undefs[key] === undefined) {
|
|
13306
|
+
delete this.current[key];
|
|
13307
|
+
} else {
|
|
13308
|
+
this.current[key] = undefs[key];
|
|
13453
13309
|
}
|
|
13454
13310
|
}
|
|
13455
13311
|
}
|
|
@@ -13467,7 +13323,7 @@ class Namespace {
|
|
|
13467
13323
|
* `get(name) != null`.
|
|
13468
13324
|
*/
|
|
13469
13325
|
has(name) {
|
|
13470
|
-
return
|
|
13326
|
+
return Object.prototype.hasOwnProperty.call(this.current, name) || Object.prototype.hasOwnProperty.call(this.builtins, name);
|
|
13471
13327
|
}
|
|
13472
13328
|
/**
|
|
13473
13329
|
* Get the current value of a name, or `undefined` if there is no value.
|
|
@@ -13478,7 +13334,7 @@ class Namespace {
|
|
|
13478
13334
|
* `if (namespace.has(...))`.
|
|
13479
13335
|
*/
|
|
13480
13336
|
get(name) {
|
|
13481
|
-
if (
|
|
13337
|
+
if (Object.prototype.hasOwnProperty.call(this.current, name)) {
|
|
13482
13338
|
return this.current[name];
|
|
13483
13339
|
} else {
|
|
13484
13340
|
return this.builtins[name];
|
|
@@ -13511,7 +13367,7 @@ class Namespace {
|
|
|
13511
13367
|
// unless an undo is already in place, in which case that older
|
|
13512
13368
|
// value is the correct one.
|
|
13513
13369
|
var top = this.undefStack[this.undefStack.length - 1];
|
|
13514
|
-
if (top && !
|
|
13370
|
+
if (top && !Object.prototype.hasOwnProperty.call(top, name)) {
|
|
13515
13371
|
top[name] = this.current[name];
|
|
13516
13372
|
}
|
|
13517
13373
|
}
|
|
@@ -14526,16 +14382,14 @@ class MacroExpander {
|
|
|
14526
14382
|
return null;
|
|
14527
14383
|
}
|
|
14528
14384
|
start = this.popToken(); // don't include [ in tokens
|
|
14529
|
-
(
|
|
14530
|
-
|
|
14531
|
-
|
|
14532
|
-
} = this.consumeArg(["]"]));
|
|
14385
|
+
var _this$consumeArg = this.consumeArg(["]"]);
|
|
14386
|
+
tokens = _this$consumeArg.tokens;
|
|
14387
|
+
end = _this$consumeArg.end;
|
|
14533
14388
|
} else {
|
|
14534
|
-
(
|
|
14535
|
-
|
|
14536
|
-
|
|
14537
|
-
|
|
14538
|
-
} = this.consumeArg());
|
|
14389
|
+
var _this$consumeArg2 = this.consumeArg();
|
|
14390
|
+
tokens = _this$consumeArg2.tokens;
|
|
14391
|
+
start = _this$consumeArg2.start;
|
|
14392
|
+
end = _this$consumeArg2.end;
|
|
14539
14393
|
}
|
|
14540
14394
|
// indicate the end of an argument
|
|
14541
14395
|
this.pushToken(new Token("EOF", end.loc));
|
|
@@ -14833,14 +14687,17 @@ class MacroExpander {
|
|
|
14833
14687
|
* `implicitCommands`.
|
|
14834
14688
|
*/
|
|
14835
14689
|
isDefined(name) {
|
|
14836
|
-
return this.macros.has(name) ||
|
|
14690
|
+
return this.macros.has(name) || Object.prototype.hasOwnProperty.call(functions, name) || Object.prototype.hasOwnProperty.call(symbols.math, name) || Object.prototype.hasOwnProperty.call(symbols.text, name) || Object.prototype.hasOwnProperty.call(implicitCommands, name);
|
|
14837
14691
|
}
|
|
14838
14692
|
/**
|
|
14839
14693
|
* Determine whether a command is expandable.
|
|
14840
14694
|
*/
|
|
14841
14695
|
isExpandable(name) {
|
|
14842
14696
|
var macro = this.macros.get(name);
|
|
14843
|
-
|
|
14697
|
+
if (macro != null) {
|
|
14698
|
+
return typeof macro === "string" || typeof macro === "function" || !macro.unexpandable;
|
|
14699
|
+
}
|
|
14700
|
+
return Object.prototype.hasOwnProperty.call(functions, name) && !functions[name].primitive;
|
|
14844
14701
|
}
|
|
14845
14702
|
}
|
|
14846
14703
|
|
|
@@ -15791,10 +15648,9 @@ class Parser {
|
|
|
15791
15648
|
} else if (this.mode === "math" && funcData.allowedInMath === false) {
|
|
15792
15649
|
throw new ParseError("Can't use function '" + func + "' in math mode", token);
|
|
15793
15650
|
}
|
|
15794
|
-
var
|
|
15795
|
-
args,
|
|
15796
|
-
optArgs
|
|
15797
|
-
} = this.parseArguments(func, funcData);
|
|
15651
|
+
var _this$parseArguments = this.parseArguments(func, funcData),
|
|
15652
|
+
args = _this$parseArguments.args,
|
|
15653
|
+
optArgs = _this$parseArguments.optArgs;
|
|
15798
15654
|
return this.callFunction(func, args, optArgs, token, breakOnTokenText);
|
|
15799
15655
|
}
|
|
15800
15656
|
/**
|
|
@@ -16116,7 +15972,7 @@ class Parser {
|
|
|
16116
15972
|
// If there exists a function with this name, parse the function.
|
|
16117
15973
|
// Otherwise, just return a nucleus
|
|
16118
15974
|
result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol();
|
|
16119
|
-
if (result == null && text[0] === "\\" && !
|
|
15975
|
+
if (result == null && text[0] === "\\" && !Object.prototype.hasOwnProperty.call(implicitCommands, text)) {
|
|
16120
15976
|
if (this.settings.throwOnError) {
|
|
16121
15977
|
throw new ParseError("Undefined control sequence: " + text, firstToken);
|
|
16122
15978
|
}
|
|
@@ -16206,7 +16062,7 @@ class Parser {
|
|
|
16206
16062
|
}
|
|
16207
16063
|
// At this point, we should have a symbol, possibly with accents.
|
|
16208
16064
|
// First expand any accented base symbol according to unicodeSymbols.
|
|
16209
|
-
if (
|
|
16065
|
+
if (Object.prototype.hasOwnProperty.call(unicodeSymbols, text[0]) && !symbols[this.mode][text[0]]) {
|
|
16210
16066
|
// This behavior is not strict (XeTeX-compatible) in math mode.
|
|
16211
16067
|
if (this.settings.strict && this.mode === "math") {
|
|
16212
16068
|
this.settings.reportNonstrict("unicodeTextInMathMode", "Accented Unicode text character \"" + text[0] + "\" used in " + "math mode", nucleus);
|
|
@@ -16406,7 +16262,7 @@ var renderToHTMLTree = function renderToHTMLTree(expression, options) {
|
|
|
16406
16262
|
return renderError(error, expression, settings);
|
|
16407
16263
|
}
|
|
16408
16264
|
};
|
|
16409
|
-
var version = "0.
|
|
16265
|
+
var version = "0.18.1";
|
|
16410
16266
|
var __domTree = {
|
|
16411
16267
|
Span,
|
|
16412
16268
|
Anchor,
|