mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-10 05:28:41 +00:00
feat: \operatornamewithlimits (and clean up \operatorname support) (#2984)
* feat: \operatornamewithlimits (and clean up \operatorname support) Add support for `\operatornamewithlimits` (an alias to `\operatorname*` defined in `amsmath/amsopn.sty`), and use KaTeX's existing `\@ifstar` macro to define `\operatorname` instead of a special lexing rule (simplifying the lexer). * Pick up one comment * Actually fix docs this time Co-authored-by: Ron Kok <ronkok@comcast.net>
This commit is contained in:
@@ -59,7 +59,6 @@ const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace
|
||||
`${combiningDiacriticalMarkString}*` + // ...plus accents
|
||||
"|\\\\verb\\*([^]).*?\\4" + // \verb*
|
||||
"|\\\\verb([^*a-zA-Z]).*?\\5" + // \verb unstarred
|
||||
"|\\\\operatorname\\*" + // \operatorname*
|
||||
`|${controlWordWhitespaceRegexString}` + // \macroName + spaces
|
||||
`|${controlSymbolRegexString})`; // \\, \', etc.
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
// @flow
|
||||
import defineFunction, {ordargument} from "../defineFunction";
|
||||
import {defineMacro} from "../macros";
|
||||
import buildCommon from "../buildCommon";
|
||||
import mathMLTree from "../mathMLTree";
|
||||
import {SymbolNode} from "../domTree";
|
||||
@@ -140,7 +141,7 @@ const mathmlBuilder: MathMLBuilder<"operatorname"> = (group, options) => {
|
||||
// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@
|
||||
defineFunction({
|
||||
type: "operatorname",
|
||||
names: ["\\operatorname", "\\operatorname*"],
|
||||
names: ["\\operatorname@", "\\operatornamewithlimits"],
|
||||
props: {
|
||||
numArgs: 1,
|
||||
},
|
||||
@@ -150,7 +151,7 @@ defineFunction({
|
||||
type: "operatorname",
|
||||
mode: parser.mode,
|
||||
body: ordargument(body),
|
||||
alwaysHandleSupSub: (funcName === "\\operatorname*"),
|
||||
alwaysHandleSupSub: (funcName === "\\operatornamewithlimits"),
|
||||
limits: false,
|
||||
parentIsSupSub: false,
|
||||
};
|
||||
@@ -159,3 +160,5 @@ defineFunction({
|
||||
mathmlBuilder,
|
||||
});
|
||||
|
||||
defineMacro("\\operatorname",
|
||||
"\\@ifstar\\operatornamewithlimits\\operatorname@");
|
||||
|
Reference in New Issue
Block a user