Skip to content

Commit

Permalink
fix: space should prevent optional argument to \\ (#3746)
Browse files Browse the repository at this point in the history
Fix `src/functions/cr.js`'s definition of `\\` to manually look for an
optional argument via `future()` instead of `numOptionalArgs`, so that
it does *not* skip over spaces.  This matches the existing behavior of
`\\` in `src/environments/array.js` and AMSMath's behavior of `\math@cr`
via `\new@ifnextchar`.

Fixes #3745

Co-authored-by: Ron Kok <ronkok@comcast.net>
  • Loading branch information
edemaine and ronkok committed Dec 7, 2022
1 parent 3db8e34 commit a0deb34
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/functions/cr.js
Expand Up @@ -13,13 +13,13 @@ defineFunction({
names: ["\\\\"],
props: {
numArgs: 0,
numOptionalArgs: 1,
argTypes: ["size"],
numOptionalArgs: 0,
allowedInText: true,
},

handler({parser}, args, optArgs) {
const size = optArgs[0];
const size = parser.gullet.future().text === "[" ?
parser.parseSizeGroup(true) : null;
const newLine = !parser.settings.displayMode ||
!parser.settings.useStrictBehavior(
"newLineInDisplayMode", "In LaTeX, \\\\ or \\newline " +
Expand Down
5 changes: 5 additions & 0 deletions test/katex-spec.js
Expand Up @@ -1309,6 +1309,11 @@ describe("A begin/end parser", function() {
expect`\begin{matrix}a&b\cr[c]&d\end{matrix}`.toParse();
});

it("should not treat [ after space as optional argument to \\\\", function() {
expect`\begin{matrix}a&b\\ [c]&d\end{matrix}`.toParse();
expect`a\\ [b]`.toParse();
});

it("should eat a final newline", function() {
const m3 = getParsed`\begin{matrix}a&b\\ c&d \\ \end{matrix}`[0];
expect(m3.body).toHaveLength(2);
Expand Down

0 comments on commit a0deb34

Please sign in to comment.