\kern fixes, \hskip support, \TeX, \LaTeX, \KaTeX (#974)
* Refactor \kern, proper \mkern support, add \hskip * Move \kern, \mkern into functions directory * Add \hskip, \mskip support (but without supporting plus/minus) * Properly separate \kern, \hskip from \mkern, \mskip. (The former work in both modes, and don't support mu units. The latter work only in math mode and only support mu units.) * Render \kern etc. using MathML <mspace> * Implement \TeX macro * Implement \LaTeX * New KaTeX logo \katex * Rename hskip.js -> kern.js * Tweak katex \kern to 0.16em * \katex kern -.17em * Compute A raise height in \LaTeX and \katex * Switch mu unit errors to warnings * LaTeX screenshot test * Replace \KaTeX with macro definition * Update screenshots with \KaTeX in them * Fix font selection for \*TeX macros
@@ -1046,7 +1046,7 @@ describe("A rule parser", function() {
|
||||
describe("A kern parser", function() {
|
||||
const emKern = "\\kern{1em}";
|
||||
const exKern = "\\kern{1ex}";
|
||||
const muKern = "\\kern{1mu}";
|
||||
const muKern = "\\mkern{1mu}";
|
||||
const abKern = "a\\kern{1em}b";
|
||||
const badUnitRule = "\\kern{1au}";
|
||||
const noNumberRule = "\\kern{em}";
|
||||
@@ -1082,10 +1082,10 @@ describe("A kern parser", function() {
|
||||
describe("A non-braced kern parser", function() {
|
||||
const emKern = "\\kern1em";
|
||||
const exKern = "\\kern 1 ex";
|
||||
const muKern = "\\kern 1mu";
|
||||
const muKern = "\\mkern 1mu";
|
||||
const abKern1 = "a\\mkern1mub";
|
||||
const abKern2 = "a\\kern-1mub";
|
||||
const abKern3 = "a\\kern-1mu b";
|
||||
const abKern2 = "a\\mkern-1mub";
|
||||
const abKern3 = "a\\mkern-1mu b";
|
||||
const badUnitRule = "\\kern1au";
|
||||
const noNumberRule = "\\kern em";
|
||||
|
||||
@@ -1137,7 +1137,7 @@ describe("A non-braced kern parser", function() {
|
||||
});
|
||||
|
||||
it("should handle whitespace", function() {
|
||||
const abKern = "a\\kern\t-\r1 \n mu\nb";
|
||||
const abKern = "a\\mkern\t-\r1 \n mu\nb";
|
||||
const abParse = getParsed(abKern);
|
||||
|
||||
expect(abParse.length).toEqual(3);
|
||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
test/screenshotter/images/LaTeX-chrome.png
Normal file
After Width: | Height: | Size: 7.1 KiB |
BIN
test/screenshotter/images/LaTeX-firefox.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@@ -119,12 +119,15 @@ GroupMacros:
|
||||
\endExp: \egroup
|
||||
tex: \startExp a+b\endExp
|
||||
HorizontalBraces: \overbrace{\displaystyle{\oint_S{\vec E\cdot\hat n\,\mathrm d a}}}^\text{emf} = \underbrace{\frac{q_{\text{enc}}}{\varepsilon_0}}_{\text{charge}}
|
||||
KaTeX: \KaTeX
|
||||
KaTeX:
|
||||
tex: \KaTeX
|
||||
nolatex: \KaTeX not supported by LaTeX
|
||||
Kern:
|
||||
tex: \frac{a\kern{1em}b}{c}a\kern{1em}b\kern{1ex}c\kern{-0.25em}d
|
||||
nolatex: LaTeX fails to typeset this, “Missing number, treated as zero.”
|
||||
Lap: ab\mathllap{f}cd\mathrlap{g}hij\mathclap{k}lm \; ab\llap{f}cd\rlap{g}hij\clap{k}lm
|
||||
LargeRuleNumerator: \frac{\textcolor{blue}{\rule{1em}{2em}}}{x}
|
||||
LaTeX: \text{\LaTeX}, \text{\TeX}
|
||||
LeftRight: \left( x^2 \right) \left\{ x^{x^{x^{x^x}}} \right.
|
||||
LeftRightListStyling: a+\left(x+y\right)-x
|
||||
LeftRightMiddle: \left( x^2 \middle/ \right) \left\{ x^{x^{x^{x^x}}} \middle/ y \right.\left(x\middle|y\,\middle|\,z\right)
|
||||
|