diff --git a/docs/support_table.md b/docs/support_table.md index fedaefb7..8db08e45 100644 --- a/docs/support_table.md +++ b/docs/support_table.md @@ -338,6 +338,7 @@ use `\ce` instead| |\downdownarrows|$\downdownarrows$|| |\downharpoonleft|$\downharpoonleft$|| |\downharpoonright|$\downharpoonright$|| +|{drcases}|$\begin{drcases}a&\text{if }b\\c&\text{if }d\end{drcases}$|`\begin{drcases}`
   `a &\text{if } b \\`
   `c &\text{if } d`
`\end{drcases}`| ## E @@ -847,6 +848,7 @@ use `\ce` instead| |\rBrace|$\rBrace$|| |\rbrace|$\rbrace$|| |\rbrack|$\rbrack$|| +|{rcases}|$\begin{rcases}a&\text{if }b\\c&\text{if }d\end{rcases}$|`\begin{rcases}`
   `a &\text{if } b \\`
   `c &\text{if } d`
`\end{rcases}`| |\rceil|$\rceil$|| |\Re|$\Re$|| |\real|$\real$|| diff --git a/docs/supported.md b/docs/supported.md index 755a8c84..10870350 100644 --- a/docs/supported.md +++ b/docs/supported.md @@ -85,11 +85,11 @@ $( \big( \Big( \bigg( \Bigg($ `( \big( \Big( \bigg( \Bigg(` |$\begin{Bmatrix} a & b \\ c & d \end{Bmatrix}$ |`\begin{Bmatrix}`
   `a & b \\`
   `c & d`
`\end{Bmatrix}`|$\def\arraystretch{1.5}\begin{array}{c:c:c} a & b & c \\ \hline d & e & f \\ \hdashline g & h & i \end{array}$|`\def\arraystretch{1.5}`
   `\begin{array}{c:c:c}`
   `a & b & c \\ \hline`
   `d & e & f \\`
   `\hdashline`
   `g & h & i`
`\end{array}` |$\begin{aligned} a&=b+c \\ d+e&=f \end{aligned}$ |`\begin{aligned}`
   `a&=b+c \\`
   `d+e&=f`
`\end{aligned}`|$\begin{alignedat}{2}10&x+&3&y=2\\3&x+&13&y=4\end{alignedat}$ |`\begin{alignedat}{2}`
   `10&x+ &3&y = 2 \\`
   ` 3&x+&13&y = 4`
`\end{alignedat}` |$\begin{gathered} a=b \\ e=b+c \end{gathered}$ |`\begin{gathered}`
   `a=b \\ `
   `e=b+c`
`\end{gathered}`|$x = \begin{cases} a &\text{if } b \\ c &\text{if } d \end{cases}$ |`x = \begin{cases}`
   `a &\text{if } b \\`
   `c &\text{if } d`
`\end{cases}` -|$\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}$ | `\begin{smallmatrix}`
   `a & b \\`
   `c & d`
`\end{smallmatrix}` | | | +|$\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}$ | `\begin{smallmatrix}`
   `a & b \\`
   `c & d`
`\end{smallmatrix}` |$\begin{rcases} a &\text{if } b \\ c &\text{if } d \end{rcases}⇒…$ |`\begin{rcases}`
   `a &\text{if } b \\`
   `c &\text{if } d`
`\end{rcases}⇒…`| -KaTeX also supports `darray` and `dcases`. +KaTeX also supports `darray`, `dcases`, and `drcases`. Acceptable line separators include: `\\`, `\cr`, `\\[distance]`, and `\cr[distance]`. *Distance* can be written with any of the [KaTeX units](#units). diff --git a/src/environments/array.js b/src/environments/array.js index 5dca8ffa..045e40c5 100644 --- a/src/environments/array.js +++ b/src/environments/array.js @@ -752,11 +752,14 @@ defineEnvironment({ // \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. // {dcases} is a {cases} environment where cells are set in \displaystyle, // as defined in mathtools.sty. +// {rcases} is another mathtools environment. It's brace is on the right side. defineEnvironment({ type: "array", names: [ "cases", "dcases", + "rcases", + "drcases", ], props: { numArgs: 0, @@ -786,8 +789,8 @@ defineEnvironment({ type: "leftright", mode: context.mode, body: [res], - left: "\\{", - right: ".", + left: context.envName.indexOf("r") > -1 ? "." : "\\{", + right: context.envName.indexOf("r") > -1 ? "\\}" : ".", rightColor: undefined, }; }, diff --git a/test/katex-spec.js b/test/katex-spec.js index f4637f10..953d7796 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -2646,6 +2646,15 @@ describe("A cases environment", function() { }); +describe("An rcases environment", function() { + + it("should build", function() { + expect`\begin{rcases} a &\text{if } b \\ c &\text{if } d \end{rcases}⇒…` + .toBuild(); + }); + +}); + describe("An aligned environment", function() { it("should parse its input", function() { diff --git a/test/screenshotter/images/Cases-chrome.png b/test/screenshotter/images/Cases-chrome.png index 784d5a97..7167a66b 100644 Binary files a/test/screenshotter/images/Cases-chrome.png and b/test/screenshotter/images/Cases-chrome.png differ diff --git a/test/screenshotter/images/Cases-firefox.png b/test/screenshotter/images/Cases-firefox.png index 8f2e797e..522fcb42 100644 Binary files a/test/screenshotter/images/Cases-firefox.png and b/test/screenshotter/images/Cases-firefox.png differ diff --git a/test/screenshotter/ss_data.yaml b/test/screenshotter/ss_data.yaml index 6f2d4fcb..8144c36d 100644 --- a/test/screenshotter/ss_data.yaml +++ b/test/screenshotter/ss_data.yaml @@ -74,7 +74,11 @@ Cases: | a+1&\text{if }b\text{ is odd} \\ a&\text{if }b=0 \\ a-1&\text{otherwise} - \end{cases} + \end{cases} \\ + \begin{rcases} + a &\text{if } b \\ + c &\text{if } d + \end{rcases}⇒… Colors: tex: \blue{a}\textcolor{#0f0}{b}\textcolor{red}{c} nolatex: different syntax and different scope