Files
KaTeX/test/__snapshots__/mathml-spec.js.snap
Erik Demaine 484d44ee70 Unicode accents (#992)
* 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
2017-12-28 23:32:45 -07:00

508 lines
8.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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&#x27;
</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">
limsup
</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">
limsup
</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>
`;