From 84981da3bf18eaa999f6a93ed02c48ce5e0f5ce0 Mon Sep 17 00:00:00 2001 From: Ron Kok Date: Mon, 11 Jan 2021 10:00:03 -0800 Subject: [PATCH] fix: Remove topEnv parameter. (#2712) * fix: Remove topEnv parameter. * Set test to default strictness Co-authored-by: Kevin Barabash --- src/Settings.js | 3 --- src/environments/array.js | 6 ++---- test/katex-spec.js | 36 ++++++++++++++++++------------------ 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/Settings.js b/src/Settings.js index c29271ae..f555c21a 100644 --- a/src/Settings.js +++ b/src/Settings.js @@ -67,7 +67,6 @@ export type SettingsOptions = { maxSize?: number; maxExpand?: number; globalGroup?: boolean; - topEnv?: boolean; }; /** @@ -95,7 +94,6 @@ export default class Settings { maxSize: number; maxExpand: number; globalGroup: boolean; - topEnv: boolean; constructor(options: SettingsOptions) { // allow null options @@ -117,7 +115,6 @@ export default class Settings { this.maxSize = Math.max(0, utils.deflt(options.maxSize, Infinity)); this.maxExpand = Math.max(0, utils.deflt(options.maxExpand, 1000)); this.globalGroup = utils.deflt(options.globalGroup, false); - this.topEnv = utils.deflt(options.topEnv, false); } /** diff --git a/src/environments/array.js b/src/environments/array.js index 69828d20..bb44fd06 100644 --- a/src/environments/array.js +++ b/src/environments/array.js @@ -49,10 +49,8 @@ function getHLines(parser: Parser): boolean[] { const validateAmsEnvironmentContext = context => { const settings = context.parser.settings; if (!settings.displayMode) { - throw new ParseError(`{${context.envName}} cannot be used inline.`); - } else if (settings.strict && !settings.topEnv) { - settings.reportNonstrict("textEnv", - `{${context.envName}} called from math mode.`); + throw new ParseError(`{${context.envName}} can be used only in` + + ` display mode.`); } }; diff --git a/test/katex-spec.js b/test/katex-spec.js index 5f3c190c..1c337f56 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -2783,41 +2783,41 @@ describe("AMS environments", function() { expect`\begin{CD}A @>a>> B \\@VbVV @AAcA\\C @= D\end{CD}`.not.toParse(nonstrictSettings); }); - const nonStrictDisplay = new Settings({displayMode: true, strict: false}); - it("should build if in non-strict display mode", () => { - expect`\begin{gather}a+b\\c+d\end{gather}`.toBuild(nonStrictDisplay); - expect`\begin{gather*}a+b\\c+d\end{gather*}`.toBuild(nonStrictDisplay); - expect`\begin{align}a&=b+c\\d+e&=f\end{align}`.toBuild(nonStrictDisplay); - expect`\begin{align*}a&=b+c\\d+e&=f\end{align*}`.toBuild(nonStrictDisplay); - expect`\begin{alignat}{2}10&x+ &3&y = 2\\3&x+&13&y = 4\end{alignat}`.toBuild(nonStrictDisplay); - expect`\begin{alignat*}{2}10&x+ &3&y = 2\\3&x+&13&y = 4\end{alignat*}`.toBuild(nonStrictDisplay); - expect`\begin{equation}a=b+c\end{equation}`.toBuild(nonStrictDisplay); - expect`\begin{equation}\begin{split}a &=b+c\\&=e+f\end{split}\end{equation}`.toBuild(nonStrictDisplay); - expect`\begin{split}a &=b+c\\&=e+f\end{split}`.toBuild(nonStrictDisplay); - expect`\begin{CD}A @>b> C @>>> D\\@. @| @AcAA @VVdV \\@. E @= F @>>> G\end{CD}`.toBuild(nonStrictDisplay); + const displayMode = new Settings({displayMode: true}); + it("should build if in display mode", () => { + expect`\begin{gather}a+b\\c+d\end{gather}`.toBuild(displayMode); + expect`\begin{gather*}a+b\\c+d\end{gather*}`.toBuild(displayMode); + expect`\begin{align}a&=b+c\\d+e&=f\end{align}`.toBuild(displayMode); + expect`\begin{align*}a&=b+c\\d+e&=f\end{align*}`.toBuild(displayMode); + expect`\begin{alignat}{2}10&x+ &3&y = 2\\3&x+&13&y = 4\end{alignat}`.toBuild(displayMode); + expect`\begin{alignat*}{2}10&x+ &3&y = 2\\3&x+&13&y = 4\end{alignat*}`.toBuild(displayMode); + expect`\begin{equation}a=b+c\end{equation}`.toBuild(displayMode); + expect`\begin{equation}\begin{split}a &=b+c\\&=e+f\end{split}\end{equation}`.toBuild(displayMode); + expect`\begin{split}a &=b+c\\&=e+f\end{split}`.toBuild(displayMode); + expect`\begin{CD}A @>b> C @>>> D\\@. @| @AcAA @VVdV \\@. E @= F @>>> G\end{CD}`.toBuild(displayMode); }); it("{equation} should fail if argument contains two rows.", () => { - expect`\begin{equation}a=\cr b+c\end{equation}`.not.toParse(nonStrictDisplay); + expect`\begin{equation}a=\cr b+c\end{equation}`.not.toParse(displayMode); }); it("{equation} should fail if argument contains two columns.", () => { - expect`\begin{equation}a &=b+c\end{equation}`.not.toBuild(nonStrictDisplay); + expect`\begin{equation}a &=b+c\end{equation}`.not.toBuild(displayMode); }); it("{split} should fail if argument contains three columns.", () => { - expect`\begin{equation}\begin{split}a &=b &+c\\&=e &+f\end{split}\end{equation}`.not.toBuild(nonStrictDisplay); + expect`\begin{equation}\begin{split}a &=b &+c\\&=e &+f\end{split}\end{equation}`.not.toBuild(displayMode); }); it("{array} should fail if body contains more columns than specification.", () => { - expect`\begin{array}{2}a & b & c\\d & e f\end{array}`.not.toBuild(nonStrictDisplay); + expect`\begin{array}{2}a & b & c\\d & e f\end{array}`.not.toBuild(displayMode); }); }); describe("The CD environment", function() { it("should fail if not is display mode", function() { expect(`\\begin{CD}A @>b> C @>>> D\\\\@. @| @AcAA @VVdV \\\\@. E @= F @>>> G\\end{CD}`).not.toParse( - new Settings({displayMode: false, strict: false}) + new Settings({displayMode: false}) ); }); - const displaySettings = new Settings({displayMode: true, strict: false}); + const displaySettings = new Settings({displayMode: true}); it("should fail if the character after '@' is not in <>AV=|.", function() { expect(`\\begin{CD}A @X>b> C @>>> D\\\\@. @| @AcAA @VVdV \\\\@. E @= F @>>> G\\end{CD}`).not.toParse(displaySettings); });