mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 11:18:39 +00:00
feat: Allow text-mode accents in math mode, except in strict mode (#3009)
* feat: Allow text-mode accents in math mode, except in strict mode LaTeX only issues a warning when using e.g. `\r` in math mode. KaTeX will now do the same with the default `strict` setting of `warn`. Fixes #2983 * Fix accent mode Co-authored-by: ylemkimon <y@ylem.kim>
This commit is contained in:
@@ -249,15 +249,22 @@ defineFunction({
|
||||
props: {
|
||||
numArgs: 1,
|
||||
allowedInText: true,
|
||||
allowedInMath: false,
|
||||
allowedInMath: true, // unless in strict mode
|
||||
argTypes: ["primitive"],
|
||||
},
|
||||
handler: (context, args) => {
|
||||
const base = args[0];
|
||||
let mode = context.parser.mode;
|
||||
|
||||
if (mode === "math") {
|
||||
context.parser.settings.reportNonstrict("mathVsTextAccents",
|
||||
`LaTeX's accent ${context.funcName} works only in text mode`);
|
||||
mode = "text";
|
||||
}
|
||||
|
||||
return {
|
||||
type: "accent",
|
||||
mode: context.parser.mode,
|
||||
mode: mode,
|
||||
label: context.funcName,
|
||||
isStretchy: false,
|
||||
isShifty: true,
|
||||
|
@@ -1,3 +1,5 @@
|
||||
import {strictSettings} from "./helpers";
|
||||
|
||||
describe("Parser:", function() {
|
||||
|
||||
describe("#handleInfixNodes", function() {
|
||||
@@ -84,10 +86,14 @@ describe("Parser:", function() {
|
||||
"Can't use function '\\sqrt' in text mode" +
|
||||
" at position 7: \\text{\\̲s̲q̲r̲t̲2 is irrational…");
|
||||
});
|
||||
it("rejects text-mode-only functions in math mode", function() {
|
||||
expect`\'echec`.toFailWithParseError(
|
||||
"Can't use function '\\'' in math mode" +
|
||||
" at position 1: \\̲'̲echec");
|
||||
it("rejects text-mode-only functions in math mode", () => {
|
||||
expect`$`.toFailWithParseError(
|
||||
"Can't use function '$' in math mode at position 1: $̲");
|
||||
});
|
||||
it("rejects strict-mode text-mode-only functions in math mode", () => {
|
||||
expect`\'echec`.toFailWithParseError("LaTeX-incompatible input " +
|
||||
"and strict mode is set to 'error': LaTeX's accent \\' works " +
|
||||
"only in text mode [mathVsTextAccents]", strictSettings);
|
||||
});
|
||||
});
|
||||
|
||||
|
@@ -56,8 +56,8 @@ expect.extend({
|
||||
return expectKaTeX(expr, settings, Mode.PARSE, this.isNot);
|
||||
},
|
||||
|
||||
toFailWithParseError: function(expr, expected = ParseError) {
|
||||
return expectKaTeX(expr, undefined, Mode.PARSE, this.isNot, expected);
|
||||
toFailWithParseError: function(expr, expected = ParseError, settings) {
|
||||
return expectKaTeX(expr, settings, Mode.PARSE, this.isNot, expected);
|
||||
},
|
||||
|
||||
toBuild(expr, settings) {
|
||||
|
Reference in New Issue
Block a user