Fast math typesetting for the web.
![]() 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 |
||
---|---|---|
build | ||
dockers | ||
metrics | ||
src | ||
static | ||
test | ||
.arcconfig | ||
.gitignore | ||
.jshintrc | ||
.travis.yml | ||
cli.js | ||
CONTRIBUTING.md | ||
katex.js | ||
LICENSE.txt | ||
lint_blacklist.txt | ||
Makefile | ||
package.json | ||
README.md | ||
server.js |
KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web.
- Fast: KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in this speed test.
- Print quality: KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting.
- Self contained: KaTeX has no dependencies and can easily be bundled with your website resources.
- Server side rendering: KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and IE 8 - IE 11.
Usage
You can download KaTeX and host it on your server or include the katex.min.js
and katex.min.css
files on your page directly from a CDN:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min.js"></script>
Call katex.render
with a TeX expression and a DOM element to render into:
katex.render("c = \\pm\\sqrt{a^2 + b^2}", element);
To generate HTML on the server, you can use katex.renderToString
:
var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}");
// '<span class="katex">...</span>'
Make sure to include the CSS and font files, but there is no need to include the JavaScript.
These APIs default to inline math typesetting; for display math you can prepend \displaystyle
(#66):
katex.render("\\displaystyle {" + formula + "}", element);
// OR
var html = katex.renderToString("\\displaystyle {" + formula + "}");
Contributing
See CONTRIBUTING.md
License
KaTeX is licensed under the MIT License.