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);
});