mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-08 04:28:41 +00:00
* Unicode accents * Lexer now looks for combining dicritical marks and adds them to the same character * Parser's `parseSymbol` now recognizes both combined and uncombined forms of Unicode accents, and builds accent objects just like the accent functions * Added CJK support to math mode (not just text mode) * Add invalid combining character test * Add MathML test * Add weak support for other Latin-1 characters This maintains backwards compatibility, but it uses the wrong font. There's a TODO to fix this later. Also refactor symbol code to use for..of * Update Unicode screenshot * Remove dot from accented i and j (in math mode) Also add dotless Unicode characters to support some accented i's and j's * Fix \imath, \jmath, \pounds, and more tests * Switch from for..of to .split().forEach() Save around 800 bytes in minified code * Fix split * normalize() detection * Convert back to vanilla for loops * Fix merge * Move normalize dependency to unicodeMake.js * Make unicodeSymbols into a lookup table instead of macros This is important for multi-accented characters. * Add comments about when to run * Move symbols definition into unicodeMake/Symbols.js * Remove CJK support in text mode * Add missing semicolon * Refactor unicodeAccents to its own file * Dotless i/j support in text mode * Remove excess character mappings * Fix Åå in math mode (still via Times) * Update to support #1030 * Add accented Greek letter support (for supported Greek symbols) * Update screenshot * remove Æ, æ, Ø, ø, and ß from math mode test
508 lines
8.7 KiB
Plaintext
508 lines
8.7 KiB
Plaintext
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||
|
||
exports[`A MathML builder accents turn into <mover accent="true"> in MathML 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mover accent="true">
|
||
<mi>
|
||
u
|
||
</mi>
|
||
<mo>
|
||
¨
|
||
</mo>
|
||
</mover>
|
||
<mi>
|
||
b
|
||
</mi>
|
||
<mi>
|
||
e
|
||
</mi>
|
||
<mi>
|
||
r
|
||
</mi>
|
||
<mi>
|
||
f
|
||
</mi>
|
||
<mi>
|
||
i
|
||
</mi>
|
||
<mi>
|
||
a
|
||
</mi>
|
||
<mi>
|
||
n
|
||
</mi>
|
||
<mi>
|
||
c
|
||
</mi>
|
||
<mover accent="true">
|
||
<mi>
|
||
e
|
||
</mi>
|
||
<mo>
|
||
´
|
||
</mo>
|
||
</mover>
|
||
<mi>
|
||
e
|
||
</mi>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
über fiancée
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should generate <mphantom> nodes for \\phantom 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mphantom>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
</mphantom>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\phantom{x}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should generate the right types of nodes 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mi>
|
||
sin
|
||
</mi>
|
||
<mo>
|
||
|
||
</mo>
|
||
<mrow>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
</mrow>
|
||
<mo>
|
||
+
|
||
</mo>
|
||
<mn>
|
||
1
|
||
</mn>
|
||
<mspace width="0.277778em">
|
||
</mspace>
|
||
<mtext>
|
||
a
|
||
</mtext>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\sin{x}+1\\;\\text{a}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should make prime operators into <mo> nodes 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<msup>
|
||
<mi>
|
||
f
|
||
</mi>
|
||
<mo mathvariant="normal">
|
||
′
|
||
</mo>
|
||
</msup>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
f'
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should output \\limsup_{x \\rightarrow \\infty} correctly in \\textstyle 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<msub>
|
||
<mo>
|
||
<mi mathvariant="normal">
|
||
lim sup
|
||
</mi>
|
||
<mo>
|
||
|
||
</mo>
|
||
</mo>
|
||
<mrow>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<mo>
|
||
→
|
||
</mo>
|
||
<mi mathvariant="normal">
|
||
∞
|
||
</mi>
|
||
</mrow>
|
||
</msub>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\limsup_{x \\rightarrow \\infty}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should output \\limsup_{x \\rightarrow \\infty} in displaymode correctly 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<munder>
|
||
<mo>
|
||
<mi mathvariant="normal">
|
||
lim sup
|
||
</mi>
|
||
<mo>
|
||
|
||
</mo>
|
||
</mo>
|
||
<mrow>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<mo>
|
||
→
|
||
</mo>
|
||
<mi mathvariant="normal">
|
||
∞
|
||
</mi>
|
||
</mrow>
|
||
</munder>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\limsup_{x \\rightarrow \\infty}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should render boldsymbol with the correct mathvariants 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mrow>
|
||
<mi mathvariant="bold-italic">
|
||
A
|
||
</mi>
|
||
<mi mathvariant="bold-italic">
|
||
x
|
||
</mi>
|
||
<mn mathvariant="bold-italic">
|
||
2
|
||
</mn>
|
||
<mi mathvariant="bold-italic">
|
||
k
|
||
</mi>
|
||
<mi mathvariant="bold-italic">
|
||
ω
|
||
</mi>
|
||
<mi mathvariant="bold-italic">
|
||
Ω
|
||
</mi>
|
||
<mi mathvariant="bold-italic">
|
||
ı
|
||
</mi>
|
||
<mo mathvariant="bold-italic">
|
||
+
|
||
</mo>
|
||
</mrow>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\boldsymbol{Ax2k\\omega\\Omega\\imath+}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should render mathchoice as if there was nothing 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mstyle scriptlevel="0"
|
||
displaystyle="true"
|
||
>
|
||
<mrow>
|
||
<munderover>
|
||
<mo>
|
||
∑
|
||
</mo>
|
||
<mrow>
|
||
<mi>
|
||
k
|
||
</mi>
|
||
<mo>
|
||
=
|
||
</mo>
|
||
<mn>
|
||
0
|
||
</mn>
|
||
</mrow>
|
||
<mi mathvariant="normal">
|
||
∞
|
||
</mi>
|
||
</munderover>
|
||
<msup>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<mi>
|
||
k
|
||
</mi>
|
||
</msup>
|
||
</mrow>
|
||
</mstyle>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\displaystyle\\mathchoice{\\sum_{k = 0}^{\\infty} x^k}{T}{S}{SS}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should render mathchoice as if there was nothing 2`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mrow>
|
||
<msubsup>
|
||
<mo>
|
||
∑
|
||
</mo>
|
||
<mrow>
|
||
<mi>
|
||
k
|
||
</mi>
|
||
<mo>
|
||
=
|
||
</mo>
|
||
<mn>
|
||
0
|
||
</mn>
|
||
</mrow>
|
||
<mi mathvariant="normal">
|
||
∞
|
||
</mi>
|
||
</msubsup>
|
||
<msup>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<mi>
|
||
k
|
||
</mi>
|
||
</msup>
|
||
</mrow>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\mathchoice{D}{\\sum_{k = 0}^{\\infty} x^k}{S}{SS}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should render mathchoice as if there was nothing 3`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<msub>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<mrow>
|
||
<mi>
|
||
T
|
||
</mi>
|
||
</mrow>
|
||
</msub>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
x_{\\mathchoice{D}{T}{\\sum_{k = 0}^{\\infty} x^k}{SS}}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should render mathchoice as if there was nothing 4`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<msub>
|
||
<mi>
|
||
x
|
||
</mi>
|
||
<msub>
|
||
<mi>
|
||
y
|
||
</mi>
|
||
<mrow>
|
||
<mi>
|
||
T
|
||
</mi>
|
||
</mrow>
|
||
</msub>
|
||
</msub>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
x_{y_{\\mathchoice{D}{T}{S}{\\sum_{k = 0}^{\\infty} x^k}}}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should set href attribute for href appropriately 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mrow href="http://example.org">
|
||
<mi>
|
||
α
|
||
</mi>
|
||
</mrow>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\href{http://example.org}{\\alpha}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should use <menclose> for colorbox 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<menclose mathbackground="red">
|
||
<mrow>
|
||
<mtext>
|
||
b
|
||
</mtext>
|
||
</mrow>
|
||
</menclose>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\colorbox{red}{b}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should use <mpadded> for raisebox 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mpadded voffset="0.25em">
|
||
<mrow>
|
||
<mtext>
|
||
b
|
||
</mtext>
|
||
</mrow>
|
||
</mpadded>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\raisebox{0.25em}{b}
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should use <msupsub> for regular operators 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mstyle scriptlevel="0"
|
||
displaystyle="false"
|
||
>
|
||
<msubsup>
|
||
<mo>
|
||
∑
|
||
</mo>
|
||
<mi>
|
||
a
|
||
</mi>
|
||
<mi>
|
||
b
|
||
</mi>
|
||
</msubsup>
|
||
</mstyle>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\textstyle\\sum_a^b
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|
||
|
||
exports[`A MathML builder should use <munderover> for large operators 1`] = `
|
||
|
||
<math>
|
||
<semantics>
|
||
<mrow>
|
||
<mstyle scriptlevel="0"
|
||
displaystyle="true"
|
||
>
|
||
<munderover>
|
||
<mo>
|
||
∑
|
||
</mo>
|
||
<mi>
|
||
a
|
||
</mi>
|
||
<mi>
|
||
b
|
||
</mi>
|
||
</munderover>
|
||
</mstyle>
|
||
</mrow>
|
||
<annotation encoding="application/x-tex">
|
||
\\displaystyle\\sum_a^b
|
||
</annotation>
|
||
</semantics>
|
||
</math>
|
||
|
||
`;
|