Add \iff, \implies, \impliedby support. Fix #190.

* Based on @ronkok's code, but without \mathrel as it's absent
  from amstex.sty.
* Add toBuild tests to ensure these operators expand.
This commit is contained in:
Erik Demaine
2017-05-11 16:03:37 -04:00
parent e4b93379fb
commit 46f34181e3
2 changed files with 16 additions and 1 deletions

View File

@@ -21,3 +21,12 @@ defineMacro("\\endgroup", "}");
// \def\overset#1#2{\binrel@{#2}\binrel@@{\mathop{\kern\z@#2}\limits^{#1}}}
defineMacro("\\overset", "\\mathop{#2}\\limits^{#1}");
defineMacro("\\underset", "\\mathop{#2}\\limits_{#1}");
//TODO: When implementing \dots, should ideally add the \DOTSB indicator
// into the macro, to indicate these are binary operators.
// \def\iff{\DOTSB\;\Longleftrightarrow\;}
// \def\implies{\DOTSB\;\Longrightarrow\;}
// \def\impliedby{\DOTSB\;\Longleftarrow\;}
defineMacro("\\iff", "\\;\\Longleftrightarrow\\;");
defineMacro("\\implies", "\\;\\Longrightarrow\\;");
defineMacro("\\impliedby", "\\;\\Longleftarrow\\;");

View File

@@ -2012,12 +2012,18 @@ describe("A macro expander", function() {
});
});
it("should expand the \overset macro as expected", function() {
it("should expand the \\overset macro as expected", function() {
expect("\\overset?=").toParseLike("\\mathop{=}\\limits^{?}");
expect("\\overset{x=y}{\sqrt{ab}}")
.toParseLike("\\mathop{\sqrt{ab}}\\limits^{x=y}");
expect("\\overset {?} =").toParseLike("\\mathop{=}\\limits^{?}");
});
it("should build \\iff, \\implies, \\impliedby", function() {
expect("X \\iff Y").toBuild();
expect("X \\implies Y").toBuild();
expect("X \\impliedby Y").toBuild();
});
});
describe("A parser taking String objects", function() {