Commit node_modules
This commit is contained in:
73
paige/node_modules/katex/src/functions/styling.js
generated
vendored
Normal file
73
paige/node_modules/katex/src/functions/styling.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
// @flow
|
||||
import defineFunction from "../defineFunction";
|
||||
import mathMLTree from "../mathMLTree";
|
||||
import Style from "../Style";
|
||||
import {sizingGroup} from "./sizing";
|
||||
|
||||
import * as mml from "../buildMathML";
|
||||
|
||||
const styleMap = {
|
||||
"display": Style.DISPLAY,
|
||||
"text": Style.TEXT,
|
||||
"script": Style.SCRIPT,
|
||||
"scriptscript": Style.SCRIPTSCRIPT,
|
||||
};
|
||||
|
||||
defineFunction({
|
||||
type: "styling",
|
||||
names: [
|
||||
"\\displaystyle", "\\textstyle", "\\scriptstyle",
|
||||
"\\scriptscriptstyle",
|
||||
],
|
||||
props: {
|
||||
numArgs: 0,
|
||||
allowedInText: true,
|
||||
primitive: true,
|
||||
},
|
||||
handler({breakOnTokenText, funcName, parser}, args) {
|
||||
// parse out the implicit body
|
||||
const body = parser.parseExpression(true, breakOnTokenText);
|
||||
|
||||
// TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
|
||||
// here and in buildHTML and de-dupe the enumeration of all the styles).
|
||||
// $FlowFixMe: The names above exactly match the styles.
|
||||
const style: StyleStr = funcName.slice(1, funcName.length - 5);
|
||||
return {
|
||||
type: "styling",
|
||||
mode: parser.mode,
|
||||
// Figure out what style to use by pulling out the style from
|
||||
// the function name
|
||||
style,
|
||||
body,
|
||||
};
|
||||
},
|
||||
htmlBuilder(group, options) {
|
||||
// Style changes are handled in the TeXbook on pg. 442, Rule 3.
|
||||
const newStyle = styleMap[group.style];
|
||||
const newOptions = options.havingStyle(newStyle).withFont('');
|
||||
return sizingGroup(group.body, newOptions, options);
|
||||
},
|
||||
mathmlBuilder(group, options) {
|
||||
// Figure out what style we're changing to.
|
||||
const newStyle = styleMap[group.style];
|
||||
const newOptions = options.havingStyle(newStyle);
|
||||
|
||||
const inner = mml.buildExpression(group.body, newOptions);
|
||||
|
||||
const node = new mathMLTree.MathNode("mstyle", inner);
|
||||
|
||||
const styleAttributes = {
|
||||
"display": ["0", "true"],
|
||||
"text": ["0", "false"],
|
||||
"script": ["1", "false"],
|
||||
"scriptscript": ["2", "false"],
|
||||
};
|
||||
|
||||
const attr = styleAttributes[group.style];
|
||||
|
||||
node.setAttribute("scriptlevel", attr[0]);
|
||||
node.setAttribute("displaystyle", attr[1]);
|
||||
|
||||
return node;
|
||||
},
|
||||
});
|
Reference in New Issue
Block a user