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