* Support Unicode middle dot
This PR adds support for Unicode characters U+00B7 MIDDLE DOT and U+22C5 DOT OPERATOR.
* Use escapes for tests. Edit macro comment.
* Support Unicode Symbols
This is the third in a series of PRs to give KaTeX the ability to recognize Unicode character input. This one supports some but not all letter-like symbols and some other symbols. All the characters in this PR will produce `textord` atoms in `math` mode.
The list is not comprehensive. It’s a bit eclectic. Some of these characters are important. Others were just easy to include. A few important characters are omitted because it wasn’t clear to me which is the best way to implement them. I’ll address those characters in future PRs.
* Add comments. Remove RegEx.
* Fix omitted parens
* Support Unicode Arrows
This is the second in a series of PRs to give KaTeX the ability to recognize Unicode character input.
All the characters in this PR will produce `rel` atoms.
* Support Unicode Negated Relations
This is the fifth in a series of PRs to give KaTeX the ability to recognize Unicode character input.
All the characters in this PR will produce `rel` atoms.
* Add parse tests
* Fix AMS functions
Fix a brain cramp.
* Add internal aliases to code comments
This is the fourth in a series of PRs to give KaTeX the ability to recognize Unicode character input.
All the characters in this PR will produce `bin` atoms.
* Support Unicode relations
This is the first in a series of PRs to give KaTeX the ability to recognize Unicode character input. The code in this PR follows the style of PR #410.
All the characters in this PR will produce rel atoms. I’ll submit PRs for other atom types later.
* Fix lint error.
* Correct mapping errors
This commit fixes a brain cramp of mine.
* Advanced macro support and magic \dots
* Fix \relax behavior
* Use \DOTSB in \iff, \implies, \impliedby
* Add multiple expansion test
* Implement some of @kevinbarash's comments
* More @kevinbarabash comments
* Token moved from merge
* Add type to defineMacro
* @flow
* Support for \' \` \^ \~ \= \u \. \" \r \H \v text-mode accents
* bug fix
* Possible Safari fix
* Forbid text accents in math mode
* Switch to noncombining characters for most accents. Revert Safari change.
* Add tests
* Found non-combining diaresis accent too
Add long-form aliases for various text symbols
* \textgreater is an alias for > in text mode
* \textless is an alias for < in text mode
* \textbar is an alias for | in text mode
* \textdollar is an alias for \$ in text mode
* \textunderscore is an alias for \_ in text mode
* \textbraceleft is an alias for \{ in text mode
* \textbraceright is an alias for \} in text mode
* \textless is an alias for < in text mode
* \textgreater is an alias for > in text mode
* \textbar is an alias for | in text mode
* \textbardbl is an alias for \| in text mode
* \textendash is an alias for -- in text mode
* \textemdash is an alias for --- in text mode
* \textquoteleft is an alias for ` in text mode
* \textquoteright is an alias for ' in text mode
* \textquotedblleft is an alias for `` in text mode
* \textquotedblright is an alias for '' in text mode
* \textdagger is an alias for \dag in text mode
* \textdaggerdbl is an alias for \ddag in text mode
* \textsterling is an alias for \pounds in text mode
* \dag, \ddag work in text mode
* \circledR, \checkmark, \pounds work in text mode too
* Extend Symbols1 test to test \pounds and \textdollar in \text
* Add note about \pounds in text vs. math mode
This reverts commit 4d2e46e7f6.
Having trailing commans makes diffs easier to read as it avoids modifying a
line just to add a trailing comma if there is another item to add at the end
of a list. There are plans to switch to ES6 notation and to translate that
to ES5 as part of the build process. Since that translation would remove
trailing commas, the IE9 problems that originally motivated the commit
should vanish soon.
Summary: IE 9 doesn't like trailing commas. When we introduced eslint, we added
a bunch of trailing commas, which makes IE 9 sad.
Test Plan:
- `make lint`
- Visit http://localhost:7936/ using IE 9 on browserstack.
- See that the math loads, and there are no errors in the F12 developer tools.
@kevinb
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