mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-07 04:08:43 +00:00
chore: Spelling (#3762)
* spelling: analysis Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: calculate Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: calligraphic Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: compatibility Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: corresponding Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: devanagari Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: display Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: empirically Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: environment Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: from Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: gatsby Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: glyph Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: hlines Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: itself Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: javascript Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: multiple Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: necessary Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: nonexistent Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: precedence Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: respectively Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: retrieved Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: similarly Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: simultaneously Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: stretch Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: surprisingly Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: the Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: unambiguously Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: vinculum Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * spelling: which Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> * Restore nonexistsOK --------- Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> Co-authored-by: Erik Demaine <edemaine@mit.edu>
This commit is contained in:
@@ -359,7 +359,7 @@ You can now use:
|
||||
- docs: Update \operatorname in supported_table.md 0.12.0 (#2571)
|
||||
- docs: Fix documentation typo in operatorname* (#2570)
|
||||
- docs: add warning re:defer to mhchem documentation (#2485)
|
||||
- docs: update Gastby logo and link (#2481)
|
||||
- docs: update Gatsby logo and link (#2481)
|
||||
- docs: add MonsterWriter to the users page (#2478)
|
||||
- docs: add comment re: \arrowvert (#2449)
|
||||
- docs: add link to Discussions (#2405)
|
||||
|
@@ -127,7 +127,7 @@ describe("A delimiter splitter", function() {
|
||||
]);
|
||||
});
|
||||
|
||||
it("splits mutliple times", function() {
|
||||
it("splits multiple times", function() {
|
||||
expect("hello ( world ) boo ( more ) stuff").toSplitInto(
|
||||
[
|
||||
{type: "text", data: "hello "},
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable */
|
||||
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
||||
/* -*- Mode: JavaScript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
||||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
|
||||
/*************************************************************
|
||||
@@ -1686,7 +1686,7 @@ import katex from "katex";
|
||||
};
|
||||
|
||||
//
|
||||
// Helpers for code anaylsis
|
||||
// Helpers for code analysis
|
||||
// Will show type error at calling position
|
||||
//
|
||||
/** @param {number} a */
|
||||
|
@@ -670,7 +670,7 @@ const handleObject = (
|
||||
}
|
||||
|
||||
case "mathchoice": {
|
||||
// TODO: track which which style we're using, e.g. dispaly, text, etc.
|
||||
// TODO: track which style we're using, e.g. display, text, etc.
|
||||
// default to text style if even that may not be the correct style
|
||||
buildA11yStrings(tree.text, a11yStrings, atomType);
|
||||
break;
|
||||
|
@@ -45,7 +45,7 @@ Note that screenshots taken without Docker are very likely to disagree
|
||||
from the ones stored in the repository, due to different versions of
|
||||
various software components being used. The screenshots taken in this
|
||||
fashion are well suited for visual inspection, but for exact binary
|
||||
comparisons it would be neccessary to carefully set up the environment
|
||||
comparisons it would be necessary to carefully set up the environment
|
||||
to match the one used by the Docker approach.
|
||||
|
||||
Screenshots can also be verified and generated by opening a pull request.
|
||||
|
@@ -178,7 +178,7 @@ export default class Parser {
|
||||
* Parses an "expression", which is a list of atoms.
|
||||
*
|
||||
* `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
|
||||
* happens when functions have higher precendence han infix
|
||||
* happens when functions have higher precedence han infix
|
||||
* nodes in implicit parses.
|
||||
*
|
||||
* `breakOnTokenText`: The text of the token that the expression should end
|
||||
|
@@ -1,6 +1,6 @@
|
||||
// @flow
|
||||
/**
|
||||
* This file converts a parse tree into a cooresponding MathML tree. The main
|
||||
* This file converts a parse tree into a corresponding MathML tree. The main
|
||||
* entry point is the `buildMathML` function, which takes a parse tree from the
|
||||
* parser.
|
||||
*/
|
||||
@@ -101,7 +101,7 @@ export const getVariant = function(
|
||||
} else if (font === "mathfrak") {
|
||||
return "fraktur";
|
||||
} else if (font === "mathscr" || font === "mathcal") {
|
||||
// MathML makes no distinction between script and caligrahpic
|
||||
// MathML makes no distinction between script and calligraphic
|
||||
return "script";
|
||||
} else if (font === "mathsf") {
|
||||
return "sans-serif";
|
||||
|
@@ -42,7 +42,7 @@ type EnvProps = {
|
||||
};
|
||||
|
||||
/**
|
||||
* Final enviornment spec for use at parse time.
|
||||
* Final environment spec for use at parse time.
|
||||
* This is almost identical to `EnvDefSpec`, except it
|
||||
* 1. includes the function handler
|
||||
* 2. requires all arguments except argType
|
||||
|
@@ -364,7 +364,7 @@ const makeStackedDelim = function(
|
||||
middleFactor = 2; // repeat symmetrically above and below middle
|
||||
}
|
||||
|
||||
// Calcuate the minimal height that the delimiter can have.
|
||||
// Calculate the minimal height that the delimiter can have.
|
||||
// It is at least the size of the top, bottom, and optional middle combined.
|
||||
const minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;
|
||||
|
||||
@@ -453,7 +453,7 @@ const makeStackedDelim = function(
|
||||
Style.TEXT, options, classes);
|
||||
};
|
||||
|
||||
// All surds have 0.08em padding above the viniculum inside the SVG.
|
||||
// All surds have 0.08em padding above the vinculum inside the SVG.
|
||||
// That keeps browser span height rounding error from pinching the line.
|
||||
const vbPad = 80; // padding above the surd, measured inside the viewBox.
|
||||
const emPad = 0.08; // padding, in ems, measured in the document.
|
||||
@@ -462,10 +462,10 @@ const sqrtSvg = function(
|
||||
sqrtName: string,
|
||||
height: number,
|
||||
viewBoxHeight: number,
|
||||
extraViniculum: number,
|
||||
extraVinculum: number,
|
||||
options: Options,
|
||||
): SvgSpan {
|
||||
const path = sqrtPath(sqrtName, extraViniculum, viewBoxHeight);
|
||||
const path = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);
|
||||
const pathNode = new PathNode(sqrtName, path);
|
||||
|
||||
const svg = new SvgNode([pathNode], {
|
||||
@@ -500,9 +500,9 @@ const makeSqrtImage = function(
|
||||
|
||||
let sizeMultiplier = newOptions.sizeMultiplier; // default
|
||||
|
||||
// The standard sqrt SVGs each have a 0.04em thick viniculum.
|
||||
// If Settings.minRuleThickness is larger than that, we add extraViniculum.
|
||||
const extraViniculum = Math.max(0,
|
||||
// The standard sqrt SVGs each have a 0.04em thick vinculum.
|
||||
// If Settings.minRuleThickness is larger than that, we add extraVinculum.
|
||||
const extraVinculum = Math.max(0,
|
||||
options.minRuleThickness - options.fontMetrics().sqrtRuleThickness);
|
||||
|
||||
// Create a span containing an SVG image of a sqrt symbol.
|
||||
@@ -514,22 +514,22 @@ const makeSqrtImage = function(
|
||||
|
||||
// We create viewBoxes with 80 units of "padding" above each surd.
|
||||
// Then browser rounding error on the parent span height will not
|
||||
// encroach on the ink of the viniculum. But that padding is not
|
||||
// encroach on the ink of the vinculum. But that padding is not
|
||||
// included in the TeX-like `height` used for calculation of
|
||||
// vertical alignment. So texHeight = span.height < span.style.height.
|
||||
|
||||
if (delim.type === "small") {
|
||||
// Get an SVG that is derived from glyph U+221A in font KaTeX-Main.
|
||||
// 1000 unit normal glyph height.
|
||||
viewBoxHeight = 1000 + 1000 * extraViniculum + vbPad;
|
||||
viewBoxHeight = 1000 + 1000 * extraVinculum + vbPad;
|
||||
if (height < 1.0) {
|
||||
sizeMultiplier = 1.0; // mimic a \textfont radical
|
||||
} else if (height < 1.4) {
|
||||
sizeMultiplier = 0.7; // mimic a \scriptfont radical
|
||||
}
|
||||
spanHeight = (1.0 + extraViniculum + emPad) / sizeMultiplier;
|
||||
texHeight = (1.00 + extraViniculum) / sizeMultiplier;
|
||||
span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraViniculum,
|
||||
spanHeight = (1.0 + extraVinculum + emPad) / sizeMultiplier;
|
||||
texHeight = (1.00 + extraVinculum) / sizeMultiplier;
|
||||
span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraVinculum,
|
||||
options);
|
||||
span.style.minWidth = "0.853em";
|
||||
advanceWidth = 0.833 / sizeMultiplier; // from the font.
|
||||
@@ -537,21 +537,21 @@ const makeSqrtImage = function(
|
||||
} else if (delim.type === "large") {
|
||||
// These SVGs come from fonts: KaTeX_Size1, _Size2, etc.
|
||||
viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size];
|
||||
texHeight = (sizeToMaxHeight[delim.size] + extraViniculum) / sizeMultiplier;
|
||||
spanHeight = (sizeToMaxHeight[delim.size] + extraViniculum + emPad)
|
||||
texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier;
|
||||
spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad)
|
||||
/ sizeMultiplier;
|
||||
span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight,
|
||||
extraViniculum, options);
|
||||
extraVinculum, options);
|
||||
span.style.minWidth = "1.02em";
|
||||
advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font.
|
||||
|
||||
} else {
|
||||
// Tall sqrt. In TeX, this would be stacked using multiple glyphs.
|
||||
// We'll use a single SVG to accomplish the same thing.
|
||||
spanHeight = height + extraViniculum + emPad;
|
||||
texHeight = height + extraViniculum;
|
||||
viewBoxHeight = Math.floor(1000 * height + extraViniculum) + vbPad;
|
||||
span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraViniculum,
|
||||
spanHeight = height + extraVinculum + emPad;
|
||||
texHeight = height + extraVinculum;
|
||||
viewBoxHeight = Math.floor(1000 * height + extraVinculum) + vbPad;
|
||||
span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraVinculum,
|
||||
options);
|
||||
span.style.minWidth = "0.742em";
|
||||
advanceWidth = 1.056;
|
||||
@@ -567,7 +567,7 @@ const makeSqrtImage = function(
|
||||
// This actually should depend on the chosen font -- e.g. \boldmath
|
||||
// should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and
|
||||
// have thicker rules.
|
||||
ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraViniculum)
|
||||
ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraVinculum)
|
||||
* sizeMultiplier,
|
||||
};
|
||||
};
|
||||
|
@@ -573,8 +573,8 @@ const mathmlBuilder: MathMLBuilder<"array"> = function(group, options) {
|
||||
// We simulate this by adding (arraystretch - 1)em to the gap. This
|
||||
// does a reasonable job of adjusting arrays containing 1 em tall content.
|
||||
|
||||
// The 0.16 and 0.09 values are found emprically. They produce an array
|
||||
// similar to LaTeX and in which content does not interfere with \hines.
|
||||
// The 0.16 and 0.09 values are found empirically. They produce an array
|
||||
// similar to LaTeX and in which content does not interfere with \hlines.
|
||||
const gap = (group.arraystretch === 0.5)
|
||||
? 0.1 // {smallmatrix}, {subarray}
|
||||
: 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);
|
||||
|
@@ -13,9 +13,9 @@ import type {Mode} from "./types";
|
||||
// In TeX, there are actually three sets of dimensions, one for each of
|
||||
// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:
|
||||
// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are
|
||||
// provided in the the arrays below, in that order.
|
||||
// provided in the arrays below, in that order.
|
||||
//
|
||||
// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.
|
||||
// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respectively.
|
||||
// This was determined by running the following script:
|
||||
//
|
||||
// latex -interaction=nonstopmode \
|
||||
@@ -25,7 +25,7 @@ import type {Mode} from "./types";
|
||||
// '\expandafter\show\the\scriptscriptfont2' \
|
||||
// '\stop'
|
||||
//
|
||||
// The metrics themselves were retreived using the following commands:
|
||||
// The metrics themselves were retrieved using the following commands:
|
||||
//
|
||||
// tftopl cmsy10
|
||||
// tftopl cmsy7
|
||||
@@ -230,7 +230,7 @@ export function getCharacterMetrics(
|
||||
// So if the character is in a script we support but we
|
||||
// don't have metrics for it, just use the metrics for
|
||||
// the Latin capital letter M. This is close enough because
|
||||
// we (currently) only care about the height of the glpyh
|
||||
// we (currently) only care about the height of the glyph
|
||||
// not its width.
|
||||
if (supportedCodepoint(ch)) {
|
||||
metrics = metricMap[font][77]; // 77 is the charcode for 'M'
|
||||
|
@@ -47,7 +47,7 @@ defineFunction({
|
||||
};
|
||||
},
|
||||
// Flow is unable to correctly infer the type of `group`, even though it's
|
||||
// unamibiguously determined from the passed-in `type` above.
|
||||
// unambiguously determined from the passed-in `type` above.
|
||||
htmlBuilder(group: ParseNode<"xArrow">, options) {
|
||||
const style = options.style;
|
||||
|
||||
|
@@ -342,7 +342,7 @@ defineFunction({
|
||||
return middleDelim;
|
||||
},
|
||||
mathmlBuilder: (group, options) => {
|
||||
// A Firefox \middle will strech a character vertically only if it
|
||||
// A Firefox \middle will stretch a character vertically only if it
|
||||
// is in the fence part of the operator dictionary at:
|
||||
// https://www.w3.org/TR/MathML3/appendixc.html.
|
||||
// So we need to avoid U+2223 and use plain "|" instead.
|
||||
|
@@ -432,7 +432,7 @@
|
||||
.mtable {
|
||||
.vertical-separator {
|
||||
display: inline-block;
|
||||
// margin and border-right are set in Javascript
|
||||
// margin and border-right are set in JavaScript
|
||||
min-width: 1px; // Prevent Chrome from omitting a line.
|
||||
}
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
* since we're mainly using MathML to improve accessibility, we don't manage
|
||||
* any of the styling state that the plain DOM nodes do.
|
||||
*
|
||||
* The `toNode` and `toMarkup` functions work simlarly to how they do in
|
||||
* The `toNode` and `toMarkup` functions work similarly to how they do in
|
||||
* domTree.js, creating namespaced DOM nodes and HTML text markup respectively.
|
||||
*/
|
||||
|
||||
@@ -166,7 +166,7 @@ export class TextNode implements MathDomNode {
|
||||
|
||||
/**
|
||||
* Converts the text node into a string
|
||||
* (representing the text iteself).
|
||||
* (representing the text itself).
|
||||
*/
|
||||
toText(): string {
|
||||
return this.text;
|
||||
|
@@ -72,7 +72,7 @@ type ParseNodeTypes = {
|
||||
|},
|
||||
// To avoid requiring run-time type assertions, this more carefully captures
|
||||
// the requirements on the fields per the op.js htmlBuilder logic:
|
||||
// - `body` and `value` are NEVER set simultanouesly.
|
||||
// - `body` and `value` are NEVER set simultaneously.
|
||||
// - When `symbol` is true, `body` is set.
|
||||
"op": {|
|
||||
type: "op",
|
||||
|
@@ -6,96 +6,96 @@
|
||||
|
||||
// In all paths below, the viewBox-to-em scale is 1000:1.
|
||||
|
||||
const hLinePad = 80; // padding above a sqrt viniculum. Prevents image cropping.
|
||||
const hLinePad = 80; // padding above a sqrt vinculum. Prevents image cropping.
|
||||
|
||||
// The viniculum of a \sqrt can be made thicker by a KaTeX rendering option.
|
||||
// Think of variable extraViniculum as two detours in the SVG path.
|
||||
// The detour begins at the lower left of the area labeled extraViniculum below.
|
||||
// The detour proceeds one extraViniculum distance up and slightly to the right,
|
||||
// displacing the radiused corner between surd and viniculum. The radius is
|
||||
// The vinculum of a \sqrt can be made thicker by a KaTeX rendering option.
|
||||
// Think of variable extraVinculum as two detours in the SVG path.
|
||||
// The detour begins at the lower left of the area labeled extraVinculum below.
|
||||
// The detour proceeds one extraVinculum distance up and slightly to the right,
|
||||
// displacing the radiused corner between surd and vinculum. The radius is
|
||||
// traversed as usual, then the detour resumes. It goes right, to the end of
|
||||
// the very long viniculumn, then down one extraViniculum distance,
|
||||
// the very long vinculum, then down one extraVinculum distance,
|
||||
// after which it resumes regular path geometry for the radical.
|
||||
/* viniculum
|
||||
/* vinculum
|
||||
/
|
||||
/▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒←extraViniculum
|
||||
/ █████████████████████←0.04em (40 unit) std viniculum thickness
|
||||
/▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒←extraVinculum
|
||||
/ █████████████████████←0.04em (40 unit) std vinculum thickness
|
||||
/ /
|
||||
/ /
|
||||
/ /\
|
||||
/ / surd
|
||||
*/
|
||||
|
||||
const sqrtMain = function(extraViniculum: number, hLinePad: number): string {
|
||||
const sqrtMain = function(extraVinculum: number, hLinePad: number): string {
|
||||
// sqrtMain path geometry is from glyph U221A in the font KaTeX Main
|
||||
return `M95,${622 + extraViniculum + hLinePad}
|
||||
return `M95,${622 + extraVinculum + hLinePad}
|
||||
c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
|
||||
c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
|
||||
c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
|
||||
s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
|
||||
c69,-144,104.5,-217.7,106.5,-221
|
||||
l${extraViniculum / 2.075} -${extraViniculum}
|
||||
l${extraVinculum / 2.075} -${extraVinculum}
|
||||
c5.3,-9.3,12,-14,20,-14
|
||||
H400000v${40 + extraViniculum}H845.2724
|
||||
H400000v${40 + extraVinculum}H845.2724
|
||||
s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
|
||||
c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
|
||||
M${834 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
|
||||
M${834 + extraVinculum} ${hLinePad}h400000v${40 + extraVinculum}h-400000z`;
|
||||
};
|
||||
|
||||
const sqrtSize1 = function(extraViniculum: number, hLinePad: number): string {
|
||||
const sqrtSize1 = function(extraVinculum: number, hLinePad: number): string {
|
||||
// size1 is from glyph U221A in the font KaTeX_Size1-Regular
|
||||
return `M263,${601 + extraViniculum + hLinePad}c0.7,0,18,39.7,52,119
|
||||
return `M263,${601 + extraVinculum + hLinePad}c0.7,0,18,39.7,52,119
|
||||
c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
|
||||
c340,-704.7,510.7,-1060.3,512,-1067
|
||||
l${extraViniculum / 2.084} -${extraViniculum}
|
||||
l${extraVinculum / 2.084} -${extraVinculum}
|
||||
c4.7,-7.3,11,-11,19,-11
|
||||
H40000v${40 + extraViniculum}H1012.3
|
||||
H40000v${40 + extraVinculum}H1012.3
|
||||
s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232
|
||||
c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
|
||||
s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
|
||||
c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
|
||||
M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
|
||||
M${1001 + extraVinculum} ${hLinePad}h400000v${40 + extraVinculum}h-400000z`;
|
||||
};
|
||||
|
||||
const sqrtSize2 = function(extraViniculum: number, hLinePad: number): string {
|
||||
const sqrtSize2 = function(extraVinculum: number, hLinePad: number): string {
|
||||
// size2 is from glyph U221A in the font KaTeX_Size2-Regular
|
||||
return `M983 ${10 + extraViniculum + hLinePad}
|
||||
l${extraViniculum / 3.13} -${extraViniculum}
|
||||
c4,-6.7,10,-10,18,-10 H400000v${40 + extraViniculum}
|
||||
return `M983 ${10 + extraVinculum + hLinePad}
|
||||
l${extraVinculum / 3.13} -${extraVinculum}
|
||||
c4,-6.7,10,-10,18,-10 H400000v${40 + extraVinculum}
|
||||
H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7
|
||||
s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744
|
||||
c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30
|
||||
c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722
|
||||
c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5
|
||||
c53.7,-170.3,84.5,-266.8,92.5,-289.5z
|
||||
M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
|
||||
M${1001 + extraVinculum} ${hLinePad}h400000v${40 + extraVinculum}h-400000z`;
|
||||
};
|
||||
|
||||
const sqrtSize3 = function(extraViniculum: number, hLinePad: number): string {
|
||||
const sqrtSize3 = function(extraVinculum: number, hLinePad: number): string {
|
||||
// size3 is from glyph U221A in the font KaTeX_Size3-Regular
|
||||
return `M424,${2398 + extraViniculum + hLinePad}
|
||||
return `M424,${2398 + extraVinculum + hLinePad}
|
||||
c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
|
||||
c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
|
||||
s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
|
||||
s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081
|
||||
l${extraViniculum / 4.223} -${extraViniculum}c4,-6.7,10,-10,18,-10 H400000
|
||||
v${40 + extraViniculum}H1014.6
|
||||
l${extraVinculum / 4.223} -${extraVinculum}c4,-6.7,10,-10,18,-10 H400000
|
||||
v${40 + extraVinculum}H1014.6
|
||||
s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
|
||||
c-2,6,-10,9,-24,9
|
||||
c-8,0,-12,-0.7,-12,-2z M${1001 + extraViniculum} ${hLinePad}
|
||||
h400000v${40 + extraViniculum}h-400000z`;
|
||||
c-8,0,-12,-0.7,-12,-2z M${1001 + extraVinculum} ${hLinePad}
|
||||
h400000v${40 + extraVinculum}h-400000z`;
|
||||
};
|
||||
|
||||
const sqrtSize4 = function(extraViniculum: number, hLinePad: number): string {
|
||||
const sqrtSize4 = function(extraVinculum: number, hLinePad: number): string {
|
||||
// size4 is from glyph U221A in the font KaTeX_Size4-Regular
|
||||
return `M473,${2713 + extraViniculum + hLinePad}
|
||||
c339.3,-1799.3,509.3,-2700,510,-2702 l${extraViniculum / 5.298} -${extraViniculum}
|
||||
c3.3,-7.3,9.3,-11,18,-11 H400000v${40 + extraViniculum}H1017.7
|
||||
return `M473,${2713 + extraVinculum + hLinePad}
|
||||
c339.3,-1799.3,509.3,-2700,510,-2702 l${extraVinculum / 5.298} -${extraVinculum}
|
||||
c3.3,-7.3,9.3,-11,18,-11 H400000v${40 + extraVinculum}H1017.7
|
||||
s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9
|
||||
c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200
|
||||
c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26
|
||||
s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,
|
||||
606zM${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}H1017.7z`;
|
||||
606zM${1001 + extraVinculum} ${hLinePad}h400000v${40 + extraVinculum}H1017.7z`;
|
||||
};
|
||||
|
||||
export const phasePath = function(y: number): string {
|
||||
@@ -104,49 +104,49 @@ export const phasePath = function(y: number): string {
|
||||
};
|
||||
|
||||
const sqrtTall = function(
|
||||
extraViniculum: number,
|
||||
extraVinculum: number,
|
||||
hLinePad: number,
|
||||
viewBoxHeight: number
|
||||
): string {
|
||||
// sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular
|
||||
// One path edge has a variable length. It runs vertically from the viniculumn
|
||||
// to a point near (14 units) the bottom of the surd. The viniculum
|
||||
// One path edge has a variable length. It runs vertically from the vinculum
|
||||
// to a point near (14 units) the bottom of the surd. The vinculum
|
||||
// is normally 40 units thick. So the length of the line in question is:
|
||||
const vertSegment = viewBoxHeight - 54 - hLinePad - extraViniculum;
|
||||
const vertSegment = viewBoxHeight - 54 - hLinePad - extraVinculum;
|
||||
|
||||
return `M702 ${extraViniculum + hLinePad}H400000${40 + extraViniculum}
|
||||
return `M702 ${extraVinculum + hLinePad}H400000${40 + extraVinculum}
|
||||
H742v${vertSegment}l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
|
||||
h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170
|
||||
c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667
|
||||
219 661 l218 661zM702 ${hLinePad}H400000v${40 + extraViniculum}H742z`;
|
||||
219 661 l218 661zM702 ${hLinePad}H400000v${40 + extraVinculum}H742z`;
|
||||
};
|
||||
|
||||
export const sqrtPath = function(
|
||||
size: string,
|
||||
extraViniculum: number,
|
||||
extraVinculum: number,
|
||||
viewBoxHeight: number
|
||||
): string {
|
||||
extraViniculum = 1000 * extraViniculum; // Convert from document ems to viewBox.
|
||||
extraVinculum = 1000 * extraVinculum; // Convert from document ems to viewBox.
|
||||
let path = "";
|
||||
|
||||
switch (size) {
|
||||
case "sqrtMain":
|
||||
path = sqrtMain(extraViniculum, hLinePad);
|
||||
path = sqrtMain(extraVinculum, hLinePad);
|
||||
break;
|
||||
case "sqrtSize1":
|
||||
path = sqrtSize1(extraViniculum, hLinePad);
|
||||
path = sqrtSize1(extraVinculum, hLinePad);
|
||||
break;
|
||||
case "sqrtSize2":
|
||||
path = sqrtSize2(extraViniculum, hLinePad);
|
||||
path = sqrtSize2(extraVinculum, hLinePad);
|
||||
break;
|
||||
case "sqrtSize3":
|
||||
path = sqrtSize3(extraViniculum, hLinePad);
|
||||
path = sqrtSize3(extraVinculum, hLinePad);
|
||||
break;
|
||||
case "sqrtSize4":
|
||||
path = sqrtSize4(extraViniculum, hLinePad);
|
||||
path = sqrtSize4(extraVinculum, hLinePad);
|
||||
break;
|
||||
case "sqrtTall":
|
||||
path = sqrtTall(extraViniculum, hLinePad, viewBoxHeight);
|
||||
path = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);
|
||||
}
|
||||
return path;
|
||||
};
|
||||
@@ -441,7 +441,7 @@ c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,
|
||||
// The next ten paths support reaction arrows from the mhchem package.
|
||||
|
||||
// Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX
|
||||
// baraboveleftarrow is mostly from from glyph U+2190 in font KaTeX Main
|
||||
// baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main
|
||||
baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202
|
||||
c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5
|
||||
c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130
|
||||
|
@@ -1409,9 +1409,9 @@ describe("A TeX-compliant parser", function() {
|
||||
r`\frac x \sqrt y`,
|
||||
r`\frac \mathllap x y`,
|
||||
r`\frac x \mathllap y`,
|
||||
// This actually doesn't work in real TeX, but it is suprisingly
|
||||
// This actually doesn't work in real TeX, but it is surprisingly
|
||||
// hard to get this to correctly work. So, we take hit of very small
|
||||
// amounts of non-compatiblity in order for the rest of the tests to
|
||||
// amounts of non-compatibility in order for the rest of the tests to
|
||||
// work
|
||||
// r`\llap \frac x y`,
|
||||
r`\mathllap \mathllap x`,
|
||||
|
@@ -62,15 +62,15 @@ describe("unicode", function() {
|
||||
expect`여보세요`.not.toParse(strictSettings);
|
||||
});
|
||||
|
||||
it("should build Devangari inside \\text{}", function() {
|
||||
it("should build Devanagari inside \\text{}", function() {
|
||||
expect`\text{नमस्ते}`.toBuild();
|
||||
});
|
||||
|
||||
it("should build Devangari outside \\text{}", function() {
|
||||
it("should build Devanagari outside \\text{}", function() {
|
||||
expect`नमस्ते`.toBuild(nonstrictSettings);
|
||||
});
|
||||
|
||||
it("should not parse Devangari outside \\text{} with strict", function() {
|
||||
it("should not parse Devanagari outside \\text{} with strict", function() {
|
||||
expect`नमस्ते`.not.toParse(strictSettings);
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user