From 5d83bb8cc013763c611c27808a16378dbfbe7185 Mon Sep 17 00:00:00 2001 From: Jeff Everett Date: Mon, 20 Jul 2015 13:30:23 -0600 Subject: [PATCH] Added support for \limits and \nolimits controls --- src/Parser.js | 13 ++++++- test/katex-spec.js | 34 ++++++++++++++++++ .../images/LimitControls-chrome.png | Bin 0 -> 22356 bytes .../images/LimitControls-firefox.png | Bin 0 -> 23733 bytes test/screenshotter/ss_data.json | 1 + 5 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test/screenshotter/images/LimitControls-chrome.png create mode 100644 test/screenshotter/images/LimitControls-firefox.png diff --git a/src/Parser.js b/src/Parser.js index 9de04875..5f9f5725 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -254,7 +254,18 @@ Parser.prototype.parseAtom = function(pos, mode) { // Lex the first token var lex = this.lexer.lex(currPos, mode); - if (lex.text === "^") { + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.result.type !== "op") { + throw new ParseError("Limit controls must follow a math operator", + this.lexer, currPos); + } + else { + var limits = lex.text == "\\limits"; + base.result.value.limits = limits; + currPos = lex.position; + } + } else if (lex.text === "^") { // We got a superscript start if (superscript) { throw new ParseError( diff --git a/test/katex-spec.js b/test/katex-spec.js index 36b4f91f..927cd9d6 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -360,6 +360,40 @@ describe("A subscript and superscript tree-builder", function() { }); }); +describe("A parser with limit controls", function() { + it("should fail when the limit control is not preceded by an op node", function() { + expect("3\\nolimits_2^2").toNotParse(); + expect("\\sqrt\\limits_2^2").toNotParse(); + expect("45 +\\nolimits 45").toNotParse(); + }); + + it("should parse when the limit control directly follows an op node", function() { + expect("\\int\\limits_2^2 3").toParse(); + expect("\\sum\\nolimits_3^4 4").toParse(); + }); + + it("should parse when the limit control is in the sup/sub area of an op node", function() { + expect("\\int_2^2\\limits").toParse(); + expect("\\int^2\\nolimits_2").toParse(); + expect("\\int_2\\limits^2").toParse(); + }); + + it("should allow multiple limit controls in the sup/sub area of an op node", function() { + expect("\\int_2\\nolimits^2\\limits 3").toParse(); + expect("\\int\\nolimits\\limits_2^2").toParse(); + expect("\\int\\limits\\limits\\limits_2^2").toParse(); + }); + + it("should have the rightmost limit control determine the limits property " + + "of the preceding op node", function() { + var parsedInput = getParsed("\\int\\nolimits\\limits_2^2"); + expect(parsedInput[0].value.base.value.limits).toBe(true); + + parsedInput = getParsed("\\int\\limits_2\\nolimits^2"); + expect(parsedInput[0].value.base.value.limits).toBe(false); + }); +}); + describe("A group parser", function() { it("should not fail", function() { expect("{xy}").toParse(); diff --git a/test/screenshotter/images/LimitControls-chrome.png b/test/screenshotter/images/LimitControls-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..0695620b4eb34b2bb08e102c856a7cd44290bc67 GIT binary patch literal 22356 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 s=7rI0z%ZH(Mzg_aHWFVdQ&MBb@0QH-nSpWb4 literal 0 HcmV?d00001 diff --git a/test/screenshotter/images/LimitControls-firefox.png b/test/screenshotter/images/LimitControls-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..a7145098456aa2ffce8fccb4a67dbee5afd0640c GIT binary patch literal 23733 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%0DZiTA_5 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