From e0407a19a09bc1ed6dada3c90f533f49c32ce478 Mon Sep 17 00:00:00 2001 From: Eddie Kohler Date: Wed, 23 Nov 2016 09:28:09 -0500 Subject: [PATCH] Support \atop. Add Jasmine test and update screenshotter test. --- src/functions.js | 9 ++++++++- test/katex-spec.js | 9 +++++++++ .../images/FractionTest-chrome.png | Bin 8081 -> 8261 bytes .../images/FractionTest-firefox.png | Bin 7298 -> 7487 bytes test/screenshotter/ss_data.yaml | 2 +- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/functions.js b/src/functions.js index b3f875a..24cf245 100644 --- a/src/functions.js +++ b/src/functions.js @@ -418,6 +418,7 @@ defineFunction("\\mathop", { defineFunction([ "\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", + "\\\\atopfrac", // can’t be entered directly ], { numArgs: 2, greediness: 2, @@ -435,6 +436,9 @@ defineFunction([ case "\\tfrac": hasBarLine = true; break; + case "\\\\atopfrac": + hasBarLine = false; + break; case "\\dbinom": case "\\binom": case "\\tbinom": @@ -571,7 +575,7 @@ defineFunction([ }); // Infix generalized fractions -defineFunction(["\\over", "\\choose"], { +defineFunction(["\\over", "\\choose", "\\atop"], { numArgs: 0, infix: true, }, function(context) { @@ -583,6 +587,9 @@ defineFunction(["\\over", "\\choose"], { case "\\choose": replaceWith = "\\binom"; break; + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; default: throw new Error("Unrecognized infix genfrac command"); } diff --git a/test/katex-spec.js b/test/katex-spec.js index b2fa955..de326d6 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -606,6 +606,15 @@ describe("A frac parser", function() { expect(tfracParse.value.numer).toBeDefined(); expect(tfracParse.value.denom).toBeDefined(); }); + + it("should parse atop", function() { + var parse = getParsed("x \\atop y")[0]; + + expect(parse.type).toEqual("genfrac"); + expect(parse.value.numer).toBeDefined(); + expect(parse.value.denom).toBeDefined(); + expect(parse.value.hasBarLine).toEqual(false); + }); }); describe("An over parser", function() { diff --git a/test/screenshotter/images/FractionTest-chrome.png b/test/screenshotter/images/FractionTest-chrome.png index b365f94253306af022536b11d32d6b624bcbe034..a54e5b316e8f74bf96877e2927cb67b3b5121a5e 100644 GIT binary patch literal 8261 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 literal 7298 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 E0Qtm${Qv*} diff --git a/test/screenshotter/ss_data.yaml b/test/screenshotter/ss_data.yaml index 7779912..a37a692 100644 --- a/test/screenshotter/ss_data.yaml +++ b/test/screenshotter/ss_data.yaml @@ -62,7 +62,7 @@ DisplayStyle: | {\displaystyle\sqrt{x}}{\sqrt{x}} {\displaystyle \frac12}{\frac12}{\displaystyle x^1_2}{x^1_2} Exponents: a^{a^a_a}_{a^a_a} -FractionTest: \dfrac{a}{b}\frac{a}{b}\tfrac{a}{b}\;-\dfrac12\;1\tfrac12 +FractionTest: \dfrac{a}{b}\frac{a}{b}\tfrac{a}{b}\;-\dfrac12\;1\tfrac12\;{1 \atop 2} Functions: \sin\cos\tan\ln\log GreekLetters: \alpha\beta\gamma\omega KaTeX: \KaTeX