Summary:
This diff provides support for Latin-1, Cyrillic, and CJK characters
inside \text{} groups. For Latin-1 and Cyrillic characters we use
glyph metrics from a glyph from Basic Latin that has roughly the same
bounding box. We use the metrics for a capital 'M' to approximate the
full-width CJK characters. Half-width characters are not supported yet.
Test Plan:
- make test
- make screenshots
Reviewers: emily
This adds support for the following input sequences:
-- --- ` ' `` '' \degree \pounds \maltese
resulting in – — ‘ ’ “ ” ° £ ✠ symbols already present in our fonts.
As part of this modification, the recognition of multiple dashes was moved
from the lexer to the parser.
This is neccessary since in math mode a sequence of hyphens is just a
sequence of minus signs. Just like a pair of apostrophes in math mode is a
double prime not a right double quotation mark.
To make this easier, parseGroup and parseOptionalGroup have been merged.
Summary:
Alpert alerted me to the fact that \centerdot and \cdot are
not the same despite what MathJax thinks.
Test Plan:
- make serve
- load http://localhost:7936/
- see the `a \centerdot b` produces a small, bottom-aligned square
Auditors: alpert emily
Summary:
Update the symbol definition for \centerdot so that it does
the same thing as \cdot.
Fixes https://github.com/Khan/KaTeX/issues/421.
Test Plan:
- make serve
- open http://localhost:7936/
- verify that `a \centerdot b` looks the same as `a \cdot b`
Auditors: emily
Summary
We'd like contributors to use the same linter and lint rules that we use
internally. This diff swaps out eslint for jshint and fixes all lint failures
except for the max-len failures in the test suites.
Test Plan:
- ka-lint src
- make lint
- make test
Reviewers: emily
Using function calls instead of one big object literal for the symbols makes
the notation far more concise and readable. Having the actual symbol name
in the last position helps aligning the preceding columns, making the list
easier to read.
Another benefit is that all symbol definitions now pass through a single
function, where additional processing (e.g. for Unicode input) might take
place in a future commit.
This adds \lgroup, \rgroup, \lmoustache and \rmoustache,
provides \lVert and \rVert with the correct type for each,
and makes \lvert, \rvert, \lVert and \rVert available
through \left...\right.
Summary:
- Some of the symbols were of the wrong type (I wrote some scripts to
search the TeX source for the correct types for the symbols; I should
put these somewhere for future reference)
- Some of the symbols had the incorrect unicode replacement value. I
copied what MathJax used for the ones that were wrong. In one case,
something had the wrong font, so I used the one MathJax used.
- Some symbols were duplicates of existing symbols, those were removed.
- Some symbols are text symbols that aren't usable in math mode (maybe
they should be text symbols?) (`\aa`, `\AA`, etc.)
- Some symbols didn't seem to work/I couldn't figure out how to make
them work. For example, `\imath` and `\jmath` require an italic font
in KaTeX_Main, but we don't have the ability to do that yet. `\dots`
was removed because it's not an ordinary symbol. `\*vert` were
removed because I don't understand what they're for, nor what they
should look like.
- Some symbols weren't actually in the KaTeX fonts; to make sure they
don't fall back to something weird, I removed them. (`\S`, `\pounds`,
etc.)
Test plan:
- `make test`
- See that all of the symbols in: `\equiv \prec \succ \sim \perp
\preceq \succeq \simeq \mid \ll \gg \asymp \parallel \bowtie \smile
\sqsubseteq \sqsupseteq \doteq \frown \ni \propto \vdash \dashv \owns
\ldotp \cdotp \aleph \forall \hbar \exists \nabla \flat \ell \natural
\clubsuit \wp \sharp \diamondsuit \Re \heartsuit \Im \spadesuit
\rmoustache \lmoustache \rgroup \lgroup \mp \ominus \uplus \sqcap
\ast \sqcup \bigcirc \bullet \ddagger \wr \amalg \longleftarrow
\Leftarrow \Longleftarrow \longrightarrow \Rightarrow \Longrightarrow
\leftrightarrow \longleftrightarrow \Leftrightarrow
\Longleftrightarrow \mapsto \longmapsto \nearrow \hookleftarrow
\hookrightarrow \searrow \leftharpoonup \rightharpoonup \swarrow
\leftharpoondown \rightharpoondown \nwarrow \rightleftharpoons \nless
\nleqslant \nleqq \lneq \lneqq \lvertneqq \lnsim \lnapprox \nprec
\npreceq \precnsim \precnapprox \nsim \nshortmid \nmid \nvdash
\nvDash \ntriangleleft \ntrianglelefteq \subsetneq \varsubsetneq
\subsetneqq \varsubsetneqq \ngtr \ngeqslant \ngeqq \gneq \gneqq
\gvertneqq \gnsim \gnapprox \nsucc \nsucceq \succnsim \succnapprox
\ncong \nshortparallel \nparallel \nVDash \ntriangleright
\ntrianglerighteq \nsupseteqq \supsetneq \varsupsetneq \supsetneqq
\varsupsetneqq \nVdash \precneqq \succneqq \nsubseteqq \unlhd \unrhd
\nleftarrow \nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
\nLeftrightarrow \vartriangle \hslash \triangledown \lozenge
\circledS \measuredangle \nexists \mho \Finv \Game \Bbbk \backprime
\blacktriangle \blacktriangledown \blacksquare \blacklozenge \bigstar
\sphericalangle \complement \eth \diagup \diagdown \square \Box
\Diamond \beth \daleth \gimel \digamma \varkappa \ulcorner \urcorner
\llcorner \lrcorner \leqq \leqslant \eqslantless \lesssim \lessapprox
\approxeq \lessdot \lll \lessgtr \lesseqgtr \lesseqqgtr \doteqdot
\risingdotseq \fallingdotseq \backsim \backsimeq \subseteqq \Subset
\sqsubset \preccurlyeq \curlyeqprec \precsim \precapprox
\vartriangleleft \trianglelefteq \vDash \Vvdash \smallsmile
\smallfrown \bumpeq \Bumpeq \geqq \geqslant \eqslantgtr \gtrsim
\gtrapprox \gtrdot \ggg \gtrless \gtreqless \gtreqqless \eqcirc
\circeq \triangleq \thicksim \thickapprox \supseteqq \Supset
\sqsupset \succcurlyeq \curlyeqsucc \succsim \succapprox
\vartriangleright \trianglerighteq \Vdash \shortmid \shortparallel
\between \pitchfork \varpropto \blacktriangleleft \therefore
\backepsilon \blacktriangleright \because \llless \gggtr \lhd \rhd
\eqsim \Join \Doteq \dotplus \smallsetminus \Cap \Cup \doublebarwedge
\boxminus \boxplus \divideontimes \ltimes \rtimes \leftthreetimes
\rightthreetimes \curlywedge \curlyvee \circleddash \circledast
\centerdot \intercal \doublecap \doublecup \boxtimes \dashrightarrow
\dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
\twoheadleftarrow \leftarrowtail \looparrowleft \leftrightharpoons
\curvearrowleft \circlearrowleft \Lsh \upuparrows \upharpoonleft
\downharpoonleft \multimap \leftrightsquigarrow \rightrightarrows
\rightleftarrows \twoheadrightarrow \rightarrowtail \looparrowright
\curvearrowright \circlearrowright \Rsh \downdownarrows
\upharpoonright \downharpoonright \rightsquigarrow \leadsto
\Rrightarrow \restriction \yen \dag \ddag` look the same as they do
in LaTeX and don't print any warnings about unknown font metrics.
Auditors: alpert