Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

katex

KaTeX5.2mMIT0.16.21TypeScript support: included

Fast math typesetting for the web.

readme

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://katex.org/img/katex-logo.svg"> KaTeX </picture>

npm semantic-release CI codecov Discussions jsDelivr katex.min.js size Gitpod ready-to-code Financial Contributors on Open Collective

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 is compatible with all major browsers, including Chrome, Safari, Firefox, Opera, Edge, and IE 11.

KaTeX supports much (but not all) of LaTeX and many LaTeX packages. See the list of supported functions.

Try out KaTeX on the demo page!

Getting started

Starter template

<!DOCTYPE html>
<!-- KaTeX requires the use of the HTML5 doctype. Without it, KaTeX may not render properly -->
<html>
  <head>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib" crossorigin="anonymous">

    <!-- The loading of KaTeX is deferred to speed up page rendering -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js" integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh" crossorigin="anonymous"></script>

    <!-- To automatically render math in text elements, include the auto-render extension: -->
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"
        onload="renderMathInElement(document.body);"></script>
  </head>
  ...
</html>

You can also download KaTeX and host it yourself.

For details on how to configure auto-render extension, refer to the documentation.

API

Call katex.render to render a TeX expression directly into a DOM element. For example:

katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, {
    throwOnError: false
});

Call katex.renderToString to generate an HTML string of the rendered math, e.g., for server-side rendering. For example:

var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}", {
    throwOnError: false
});
// '<span class="katex">...</span>'

Make sure to include the CSS and font files in both cases. If you are doing all rendering on the server, there is no need to include the JavaScript on the client.

The examples above use the throwOnError: false option, which renders invalid inputs as the TeX source code in red (by default), with the error message as hover text. For other available options, see the API documentation, options documentation, and handling errors documentation.

Demo and Documentation

Learn more about using KaTeX on the website!

Contributors

Code Contributors

This project exists thanks to all the people who contribute code. If you'd like to help, see our guide to contributing code. Code contributors

Financial Contributors

Become a financial contributor and help us sustain our community.

Individuals

Contribute on Open Collective

Organizations

Support this project with your organization. Your logo will show up here with a link to your website.

Organization 1 Organization 2 Organization 3 Organization 4 Organization 5 Organization 6 Organization 7 Organization 8 Organization 9 Organization 10

License

KaTeX is licensed under the MIT License.

changelog

Changelog

All notable changes to this project will be documented in this file. This CHANGELOG roughly follows the guidelines from www.keepachangelog.com.

0.16.21 (2025-01-17)

Bug Fixes

  • escape \htmlData attribute name (57914ad)

0.16.20 (2025-01-12)

Bug Fixes

0.16.19 (2024-12-29)

Bug Fixes

0.16.18 (2024-12-18)

Bug Fixes

  • Actually publish TypeScript type definitions (#4008) (629b873)

0.16.17 (2024-12-17)

Bug Fixes

  • MathML combines multidigit numbers with sup/subscript, comma separators, and multicharacter text when outputting to DOM (#3999) (7d79e22), closes #3995

0.16.16 (2024-12-17)

Features

0.16.15 (2024-12-09)

Features

  • italic sans-serif in math mode via \mathsfit command (#3998) (2218901)

0.16.14 (2024-12-08)

Features

0.16.13 (2024-12-08)

Bug Fixes

0.16.12 (2024-12-08)

Features

  • css: configurable margin for display math (#3638) (3405001)

0.16.11 (2024-07-02)

Features

0.16.10 (2024-03-24)

Bug Fixes

0.16.9 (2023-10-02)

Features

0.16.8 (2023-06-24)

Features

  • expose error length and raw error message on ParseError (#3820) (710774a)

0.16.7 (2023-04-28)

Bug Fixes

  • docs/support_table.md: delete redundant "varPsi" (#3814) (33a1b98)

0.16.6 (2023-04-17)

Bug Fixes

0.16.5 (2023-04-17)

Features

  • __defineFunction API exposing internal defineFunction (#3805) (c7b1f84), closes #3756

0.16.4 (2022-12-07)

Bug Fixes

0.16.3 (2022-10-22)

Bug Fixes

0.16.2 (2022-08-29)

Bug Fixes

  • auto-render: concatenate content of successive text nodes (#3422) (4d3fdd8)
  • Implement \pmb via CSS text-shadow (#3505) (176552a)

0.16.1 (2022-08-28)

Bug Fixes

0.16.0 (2022-06-06)

Bug Fixes

  • copy-tex: Use JS (instead of CSS) to select full equation, solving display glitches (#3586) (8c2d852)

BREAKING CHANGES

  • copy-tex: copy-tex extension no longer has (or requires) a CSS file.

0.15.6 (2022-05-20)

Features

0.15.5 (2022-05-20)

Bug Fixes

0.15.4 (2022-05-20)

Features

  • Support Unicode (sub|super)script characters (#3633) (d8fc35e)

0.15.3 (2022-03-13)

Bug Fixes

  • Apply operator spacing to Unicode ∙ ∘ ∖ (#3584) (b362fc0)

0.15.2 (2022-01-12)

Bug Fixes

0.15.1 (2021-10-31)

Features

0.15.0 (2021-10-31)

Features

BREAKING CHANGES

  • \relax is now implemented as a function. It'll stop expansions and parsing, so the behavior around \relax may change. For example, \kern2\relax em will no longer work.

0.14.1 (2021-10-30)

Bug Fixes

0.14.0 (2021-10-30)

Features

BREAKING CHANGES

  • With module loaders that support conditional exports and ECMAScript modules, import katex from 'katex'; will import the ECMAScript module.

You can now use: |Before |After | |------------------------------------------|----------------------------------| |require('katex/dist/contrib/[name].js') | require('katex/contrib/[name]')| |import katex from 'katex/dist/katex.mjs'| import katex from 'katex' | |import 'katex/dist/contrib/[name].mjs' | import 'katex/contrib/[name]' |

0.13.24 (2021-10-30)

Bug Fixes

0.13.23 (2021-10-30)

Bug Fixes

  • fonts: correct width of \cong glyph, fix \boldsymbol{\cong} (#3206) (35db4ff), closes #2199

0.13.22 (2021-10-30)

Bug Fixes

  • deps: update dependency commander to v8 [skip netlify] (#3374) (4df1922)

0.13.21 (2021-10-29)

Bug Fixes

  • fonts: fix the timestamp of fonts to the epoch (#3370) (dde05db)

0.13.20 (2021-10-26)

Performance Improvements

0.13.19 (2021-10-26)

Features

0.13.18 (2021-09-02)

Features

0.13.17 (2021-09-01)

Bug Fixes

0.13.16 (2021-08-28)

Bug Fixes

0.13.15 (2021-08-28)

Features

0.13.14 (2021-08-28)

Bug Fixes

0.13.13 (2021-07-21)

Bug Fixes

  • add namespace for svg, making output XHTML+SVG+MathML compatible (#2725) (35ff5ac)

0.13.12 (2021-07-21)

Bug Fixes

  • Correct invalid box-sizing property, adjusting spacing of \angl (#3053) (910e523), closes #3052

0.13.11 (2021-05-14)

Bug Fixes

  • matrix environment with zero or inconsistent columns (#3018) (f779bac), closes #3017

Features

  • Allow text-mode accents in math mode, except in strict mode (#3009) (0e9acce), closes #2983

0.13.10 (2021-05-12)

Bug Fixes

  • Correct for negative margin in integrand lower limits (#2987) (9b4acc9)

0.13.9 (2021-05-07)

Bug Fixes

0.13.8 (2021-05-06)

Features

  • \operatornamewithlimits (and clean up \operatorname support) (#2984) (e9b751b)

0.13.7 (2021-05-06)

Bug Fixes

  • binom delimiter size in scriptscriptstyle. (#2976) (980b004)

0.13.6 (2021-05-06)

Bug Fixes

0.13.5 (2021-05-02)

Bug Fixes

0.13.4 (2021-05-02)

Bug Fixes

  • Avoid crash when \operatorname has \limits (#2979) (fbda0b1)

0.13.3 (2021-04-24)

Bug Fixes

  • Respect catcode in macro expansion and set ~'s catcode correctly (#2949) (01ae7f8), closes #2924
  • array: Keep single empty row in AMS environments (#2947) (24332e0), closes #2944

0.13.2 (2021-04-06)

Bug Fixes

  • update version and SRI in dist/README.md (#2905) (319c52d)

0.13.1 (2021-04-05)

Bug Fixes

  • Protect fraction bars from CSS border-color (#2870) (2f62c0d)

[v0.13.0]

See https://github.com/KaTeX/KaTeX/issues/2490 for breaking changes and migration guide!

Bug Fixes

  • fix: Remove topEnv parameter. (#2712)
  • fix(builder): combine characters together in all expressions (#2080)
  • fix: Prevent global group from adversely affecting color. (#2703)
  • fix: Use SVGs to avoid gaps in tall delimiters. (#2698)
  • fix: rewrite of splitAtDelimiters.js -- new fix for #2523 (#2679)
  • fix: Improve MathML for math operators with subscripts (#2596)
  • fix: Remove premature CD screenshotter images (#2641)
  • fix: Support Armenian characters (#2618)
  • fix: MathML \lim\limits in Safari (#2556)
  • fix: Support MathML \oiint and \oiiint (#2461)
  • fix: \injlim typo (#2459)

Features

  • feat: Support \underbar (#2713)
  • feat: Add {CD} to auto-render. (#2710)
  • feat: Set Auto-render to recognize AMS environments without $$…$$ delimiters. (#2701)
  • feat: Support {CD} (#2396)
  • feat: Support \vcenter and \hbox (#2452)
  • feat(function): add allowedInArgument instead of greediness property (#2134)
  • feat: Support matrix, pmatrix, bmatrix, Bmatrix, vmatrix, and Vmatrix. (#2488)
  • feat(macro): improve argument parsing (#2085)
  • feat: support AMS log-like symbols (#2429)
  • feat: support Unicode ◯, U+25EF (#2430)
  • feat: Support \phase (#2406)
  • feat: Support \mathstrut (#2416)
  • feat: support {equation}, {equation*}, and {split} (#2369)
  • feat(css): use postcss-preset-env (#2313)
  • feat: support {align}, {align}, {alignat}, and {alignat} (#2341)
  • Support {gather} and {gather*} (#2183)
  • feat: support MathML \big, \bigg, \Big, and \Bigg (#2332)
  • feat: support \angl and \angln (#2334)
  • Support \origof and \imageof (#2283)

Documentation

  • docs: Add TiddlyWiki to list of users (#2765)
  • docs: Fix fallback CSS classes (#2809)
  • docs: Rearrange environment documentation. (#2700)
  • docs: Explain how to make macros persist. (#2702)
  • docs: Revise placement of colonequals in Relations table (#2704)
  • docs: delete stray backtick (#2680)
  • docs: Add colonequals functions to docs (#2651)
  • docs: add new user link (#2597)
  • fix: typo in example on homepage (#2577)
  • docs: Add \char to support_table. (#2620)
  • docs: Update \operatorname in supported_table.md 0.12.0 (#2571)
  • docs: Fix documentation typo in operatorname* (#2570)
  • docs: add warning re:defer to mhchem documentation (#2485)
  • docs: update Gatsby logo and link (#2481)
  • docs: add MonsterWriter to the users page (#2478)
  • docs: add comment re: \arrowvert (#2449)
  • docs: add link to Discussions (#2405)
  • Update \color documentation (#2370)
  • docs: add Marker as a KaTeX user (#2329)

Other Changes

  • ci: run screenshotter in container (#2644)
  • ci: setup CodeQL code scanning (#2645)
  • fix(browserslist): remove Chrome 49, Samsung 4, and Node (#2591)
  • chore: add devcontainer.json (#2545)
  • Configure Renovate (#2493)
  • ci: don't persist credentials and run scripts (#2450)
  • build: upgrade Yarn to 2.2.0 (#2477)
  • build: make vscode work with PnP (#2444)
  • refactor: Delete obsolete comment re: mn elements (#2472)
  • test: lint all js files and inline scripts in workflow (#2442)
  • refactor: Delete obsolete comment re: limsup (#2464)
  • ci: migrate to GitHub Actions from CircleCI, allow running Browserstack on forked repo via label (#2417)
  • ci: enable Dependabot for website, submodules, and GitHub Actions (#2424)
  • test: add missing screenshots for safari (#2423)
  • ci: fix Dependabot autofix (#2400)
  • chore: don't include dist in the release commit (#2385)
  • ci: autofix Dependabot commits (#2394)
  • chore(screenshotter): support Browserstack and test on Safari 13.1 (#2306)
  • chore: enable Gitpod (#2335)
  • chore: migrate to Yarn 2 (#2316)
  • test: mock console implementation (#2363)
  • Update LICENSE year (#2374)
  • test(screenshotter): move coverage to Jest (#2324)
  • Fix test/symgroups.js (#2314)
  • Use base revision provided by CircleCI (#2309)
  • Delete bower.json (#2372)
  • Enable a MathML option in the KaTeX demo. (#2371)
  • Create dependabot.yml (#2311)
  • Run screenshotter using Chrome 83 and Firefox 76 (#2304)

[v0.12.0]

Added

  • globalGroup option to place definitions in global scope (#2091)
  • \cal (#2116)
  • {rcases} and {drcases} (#2149)
  • HTML extension (#2082)
    • HTML extension can be enabled using strict and trust setting. See https://katex.org/docs/options.html for more details. Please review its security implication before enabling the extension.
  • \message, \errmessage, and \show for debugging (#2135)
  • bra-ket notation (#2162)
  • \expandafter, \noexpand, \edef, \let, and \long (#2122)
  • Support MathML display mode (#2220)
  • \minuso (#2213)

Changed

  • Update documentation (#2086, #2108, #2107, #2106, #2143, #2178, #2195, #2231, #2239, #2263, #2279, #2289, #2280. #2269, #2294, #2296, #2297)
  • mathtex-script: Use html 'defer' attribute (#2069)
  • auto-render: do not touch text nodes w/o formulas (#2154)
  • Move \global and \def to functions (#2138)
  • Cleanup font build scripts & font updates (#2155, #2171, #2156)
    • BREAKING CHANGE: old-style numerals are now available via \mathnormal instead of \mathcal
  • Upgrade minimum development Node version to v10 (#2177)

Removed

  • BREAKING CHANGE: IE 9/10 support (#2136)

Fixed

  • Set border-collapse: collapse in vlist, fix misalignment in table (#2103)
  • \@ifnextchar consumes spaces (#2118)
  • Add spacing on left of fleqn display math (#2127)
  • Fix \boxed inherited color (#2130)
  • Fix laps having visible width in Safari (#1919)
  • Improve MathML for corners (#1922)
  • auto-render: ignore "option" tags (#2180)
  • Fix delimiter error message (#2186)
  • Fix under accent depth (#2252)
  • Enable empty environment (#2258)
  • Enable an empty \substack (#2278)
  • Fix jagged parentheses (#2234)
  • \boldsymbol not italic for textords such as Greek (#2290, #2299)
  • Protect fraction bars from CSS border-color (#2292)
  • Reset to leftmost spacing mode after newline (#1841)
  • Fix missing metrics for space (0x20) and no-break space (0xa0) (#2298)

[v0.11.1]

Changed

  • [Security] Bump mixin-deep from 1.3.1 to 1.3.2 (#2090)
  • [Security] Bump eslint-utils from 1.3.1 to 1.4.2 (#2089)

Fixed

  • Fix parse timing by separating consume() into fetch() and consume() (#2054)
  • Use current font for accents (#2066)
  • Fix \gray's macro definition (#2075)

[v0.11.0]

Added

  • BREAKING CHANGE: trust setting to indicate whether input text is trusted (#1794)
    • \href and \url will break without adjusting the trust setting
  • Add test for double square brackets to katex-spec (#1956)
  • Add option to render only MathML so that its visible (#1966)
  • Support {smallmatrix}, {subarray}, and \substack (#1969)
  • Enable minRuleThickness in rendering options (#1964)
  • Add \plim (#1952)
  • Support Unicode \digamma (#2010)
  • Support \operatorname* (#1899)
  • Support \includegraphics, with appropriate trust setting (#2053)
  • Add render-a11y-string add-on (#2062)

Changed

  • DOC: Fix path to built file (#1976)
  • Remove unclosed TODO comment (#1979)
  • Add "Tutti Quanti Shelf" app to users page (#1997)
  • Document mhchem \cf not supported (use \ce instead) (#2008)
  • Replace greenkeeper badge with dependabot badge (#2022)
  • Add Unicode digamma to documentation (#2045)
  • Add katex-expression to libs page (#2049)
  • Suggest <!DOCTYPE html> in documentation (#2052)
  • Unicode characters in math render in text mode (#2040)

Fixed

  • Improve output of fonts in MathML (#1965)
  • Fix \pmb (#1924)
  • \color affects following \right, put array cells in their own groups (#1845)
  • Improve MathML for classes (#1929)
  • Prevent gaps in tall delimiters (#1986)
  • Fix \sqrt SVG path (#2009)
  • Do not force sizing groups to display inline-block (#2044)
  • Fix font choice in operators like \log (e.g. \boldsymbol{\log}) (#2041)
  • Fix argument font sizing in \fbox and \raisebox, fix font sizing in \TeX, \LaTeX, \KaTeX (#1787)

[v0.10.2]

Added

  • Approximate font metrics only when metrics don't exist (#1898)
  • Add KaTeX version to stylesheet and troubleshooting guide (#1893)
  • Add symbol double square brackets (#1947, #1954)
  • Support double-square curly braces (#1953)

Changed

  • Upgrade minimum development Node version to v8 (#1861)
  • Disable @babel/env debug (#1874)
  • Add issue templates (#1862)
  • Added 'katex-element' (#1905)
  • Fix Users' logo and url (#1896)
  • Load fonts before running screenshotter (#1891)
  • Add Browserstack logo (#1879)
  • Added Android library (#1943)
  • Move custom colors used by Khan into macros.js (#1933)
  • Test for duplicate symbols/macros (#1955)
  • Include extensions mhchem & copy-tex in home-page (#1932)

Fixed

  • Fix \Rho (#1870)
  • Fix nested \dfrac (#1825)
  • Improve MathML accents (#1877)
  • Improve MathML for \overset, \stackrel, and \underset (#1886)
  • Fix \not (U+E020) RBearing (width) (#1878)
  • Fix ApplyFunction character (#1890)
  • Improve MathML for \limits (#1897)
  • Improve MathML for \hphantom and \vphantom (#1883)
  • Improve MathML for \coloneqq, \dblcolon, \eqcolon, and \eqqcolon (#1889)
  • Improve MathML for \brace (#1884)
  • Fix \middle spacing (#1906)
  • Get a tall \middle\vert from MathML (#1911)
  • Improve more coloneq (#1902)
  • Make \smallint small in \displaystyle (#1907)
  • Improve MathML for characters in Unicode private use area (#1908)
  • Improve MathML for extensible arrows (#1901)
  • Improve MathML for \rule (#1912)
  • Improve MathML for fractions (#1882)
  • Improve MathML for \tag (#1915)
  • Improve MathML for \colorbox and \fcolorbox (#1914)
  • Improve MathML for environments (#1910)
  • Improve MathML for \genfrac barline (#1925)
  • Support \textup and \textmd (#1921)
  • Improve MathML for \not (#1923)
  • Improve MathML for \Bbbk (#1930)
  • Prevent inadvertent tall delims (#1948)

Removed

  • Re-added code for \includegraphics but disabled the function until trust settings is merged (#1951)

[v0.10.1]

Added

  • ECMAScript module for contrib (#1624)
  • mhchem extension (#1436)
  • auto-render: optional pre-process callback (#1784)
  • \argmax and \argmin (#1820)
  • \textbackslash and \textasciicircum (#1839)
  • leqno and fleqn support (#1814)

Changed

  • Include only necessary fonts for target environment specified by Browserslist (#1674)

Fixed

  • Support blackboard bold in text mode (#1757)
  • Fix spacings in semisimple groups (#1706)
  • Fix parsing comments (#1789)
  • Fix \ and \newline after operator (#1796)
  • Fix \hphantom width (#1809)
  • Remove double encoding in MathML (#1813)
  • Fix Unicode bigcup (#1836)
  • Fix \genfrac w/ empty delimiter arguments (#1816)
  • \fbox inherits default color (#1847)
  • Fix \not and \neq on Chrome 72 (#1852)

[v0.10.0]

Added

  • Unicode: °, delimiters, 1D400-1D7FF, \ll, \lll, ≘≙≚≛≝≞≟, Unicode Mathematical Alphanumeric Symbols, ⟂ ¬ ⊨ ‼ ∌ ≲ ⩽ ⪅ ≶ ⋚ ⪋, corner, ⟦⟧ (#1203, #1207, #1260, #1273, #1274, #1232, #1377, #1389, #1459, #1750)
  • \yen support on text mode (#1208)
  • \( (#1213)
  • Add defineSymbol to the main katex object (#1263)
  • Capital Greek letters (#1283, #1285)
  • Add version to katex object (#1279, #1475)
  • \copyright, \textregistered, \textcircled (#1073)
  • Tilde \textasciitilde (#1286)
  • Line breaks for inline formulas (#1287)
  • \hline (#1306)
  • Top-level \newline and \\ in inline math (#1298)
  • Strict mode, unicode text in math mode (#1117, #1278)
  • Strict setting for \newline display-mode behavior (#1314)
  • Allow all Unicode symbols in nonstrict mode (#1217)
  • \tag, \tag*, and \gdef (#1309)
  • \def, \gdef, and \global\def (#1348, #1425)
  • Change default maxExpand limit to 1000 (#1383)
  • \cfrac (#1392)
  • \arraystretch as a macro definition (#1381)
  • Add ability to create a dashed vertical line in arrays, using ':' (#1395)
  • \widecheck (#1406)
  • \hdashline (#1407)
  • \newcommand, \renewcommand, \providecommand (#1382)
  • Add a utility function (setFontMetrics) to extend builtin fontMetrics (#1269)
  • \oiint and \oiiint (#1430)
  • Remove match-at dependency, use RegExp for lexer (#1447)
  • \brace and \brack (#1453)
  • Allow only allowed protocols in \href (#1440)
    • BREAKING CHANGE: Only "http", "https", "mailto", and relative URLs are allowed in \href and \url by default.
  • \genfrac and \above (#1455, #1458)
  • \char character escaping and nicer MathML via \html@mathml (#1454)
  • @binrel (#1487)
  • \pmb (#1418)
  • KaTeX website & documentation (#1484, #1515, #1518, #1514, #1526, #1516, #1519, #1527, #1564, #1566, #1584, #1571, #1642, #1680, #1683, #1688, #1631, #1727)
  • Improve supported functions documentation (#1511, #1517, #1532, #1533, #1576, #1556, #1580, #1602)
  • Alpha sorted function support page (#1536)
  • MediaWiki (texvc) (#1558)
  • Add ignore option for class names in auto-render (#1555)
  • ScrollSpy for table of contents in the documentation (#1557, #1567, #1568)
  • Build ECMAScript modules (#1479, #1622, #1653)
  • Enable environment variable USE_TTF to disable bundling TTF fonts (#1600)
  • List of KaTeX users (#1569, #1579)
  • Browserslist (#1662)
  • 6-digit color without # (#1690)
  • \mathnormal (#1700)
  • \lparen and \rparen (#1741)
  • \> (#1752)

Changed

  • Port to @flow: delimiter, spacingData, unicodeSymbols, buildHTML, buildMathML, parseNode, defineFunction, CssStyle (#1177, #1195, #1206, #1239, #1247, #1276, #1312, #1324, #1361, #1373, #1393, #1386, #1387, #1408, #1478, #1486, #1534, #1541, #1542, #1551, #1552, #1554, #1559, #1606, #1609, #1612, #1637, #1684)
  • Online screenshot diff/generation using CircleCI (#1187)
  • Add display/displayMode toggle on test page (#1193)
  • Change CDN links (#1243)
  • Changelog for KaTeX (#1322)
  • Move test helpers into common modules (#1318)
  • Move function handlers to functions/ (#1323, #1325, #1328, #1329, #1331, #1327, #1334, #1339, #1349, #1359, #1332, #1335)
  • Improve screenshotter (#1220, #1644, #1643)
  • Upgrade to webpack 4 (#1337, #1435)
  • Automatic submodule updating via husky tool (#1391)
  • Refactor test helpers (#1336)
  • Change build directory to dist and cleanup NPM scripts (#1500, #1610)
  • Switch from nomnom to commander (#1496)
  • Add test job to CircleCI (#1235, #1658)
  • Switch npm to Yarn (#1522, #1528)
  • Improve release script & enable versioning documentation (#1521, #1603, #1660, #1665)
  • Enable stylelint-config-standard, lint CSS files (#1575)
  • Rename Screenshotter -> screenshotter (#1573)
  • Refactor buildCommon (#1633, #1640)
  • Upgrade to Babel 7 (#1595)
  • Refactor Parser (#1711, #1723)

Fixed

  • Fix nested math mode in non-default text mode (#1111)
  • Fix contenteditable mode (#1179)
  • Work around negative space bug in Chrome (#1194)
  • Fix \nobreakspace (#1200)
  • Fix instant mode switching for $, (, \text (#1213)
  • Add metrics for \S and \P (#1224)
  • Fix anchor.toMarkup (#1246)
  • Specify height for SVG elements (#1252)
  • Include Bold-Italic fonts for \boldsymbol (#1257)
  • Fix space width in \texttt (#1261)
  • Fix \underset (#1277)
  • Remove special \verb space handling now that space is in Typewriter-Regular (#1258)
  • Switch makeGlue from .mord .rule to .mspace (#1295)
  • Fix ~ in \verb (#1286)
  • Stop throwing ParseError when throwOnError is false (#1169, #1302, #1308)
  • Fix extensible arrow sup vertical alignment (#1256)
  • Adjust \underset alignment and spacing (#1290)
  • Revert frac-lines and \rule to borders (min-height) (#1249, #1417, #1594)
  • Fix vertical alignment of \underbrace (#1304)
  • Use one strut instead of two (#1307)
  • Fix MacroExpander space handling (#1314)
  • Cleanup MathML <mrow>, <mtext>, <mn> (#1338)
  • Fix lap vertical alignment. (#1162)
  • Fix nested \tfrac (#1370)
  • Fix \coloneq etc (#1372)
  • Fix wide character spacing (#1371)
  • Fix auto-render \[…] bug (#1375)
  • Rewrite spacing commands as macros (#1156)
  • Enable output modules to be used in browser or Node (#1401)
  • Add vertical kern to \vdots (#1402)
  • Implement \neq and \notin via macros like LaTeX's (#1400, #1499)
  • Improve \cancel (#1398)
  • Fix ligatures vs. \tt (#1379)
  • Implement \colon as amsmath does (#1410)
  • Automatic mrel/mbin spacing for \boldsymbol (#1388)
  • Phantom text (#1449)
  • Fix arrowheads for mhchem <--> (#1451)
  • Set documentFragment.style to empty object (#1471)
  • Remove tree cloning before building HTML (#1470)
  • Fix \operatorname to support general math functions (#1461)
  • Use \not character without left side-bearing correction (#1267)
  • Remove codes that require expensive polyfill (#1469, #1563, #1591, #1597)
  • Fix \not vertical alignment (#1497)
  • Comments without terminating newlines, \href fixes, \url support (#1529)
  • Fix \textdaggerdbl (#1539)
  • Fix \neq (#1548, #1574)
  • Fix wide characters (#1549)
  • Fix \fbox (#1550)
  • Fix \Large roots (#1485)
  • index.html: replace font, make responsive, improve demo (#1547, #1577, #1615, #1601)
  • Remove duplicate defineFunction invocation for \mathop (#1701)
  • Fix tag positioning to live within katex-html parent (#1721)
  • Fix \mathit font and italic correction (#1700)

[v0.9.0] - 2018-02-18

Added

  • Italic Greek capital letters #1118
  • Added support for \mathring #1125
  • Added support for unicode angle brackets, single vertical bar, double vertical bar #1123
  • Added support for Reaction Arrows #1078
  • Added \nobreakspace #1145
  • Added support for Unicode colon equals ≔ #1151
  • Added support for \underline in text mode #1159

Changed

  • Enable spacing functions in text mode #1139

Fixed

  • Improved JS spacing #1103
  • Fixed handling of Unicode characters ð, Å, å #1157
  • Padding over \sqrt and Paths for frac-line #1143

[v0.9.0-beta1] - 2018-01-28

Added

  • Added support for \aa, \AA, \lq, \rq, \lbrack, \rbrack #1069
  • Added support for more scripts in \text{} environments such as Czech, Georgian, Hungarian, Turkish. #1076
  • add Main-BoldItalic font to allow nesting of \textit and \textbf
  • Added \S and \P #1110

Changed

  • Remove symlink to support devs using Windows #1090

Fixed

  • Do not inherit SVG style properties from the environment. #1089
  • Update fonts and metrics so that accents are positioned correctly #1094
  • Non-portable use of String method .includes. Fixed #1093
  • Use correct spacing with tight styles. See #1106 for more details.

[v0.9.0-beta] - 2018-01-14

Added

  • \kern fixed and support \hskip, \TeX, \LaTeX, \KaTeX. See #974
  • Supported Unicode middle dot and Unicode accents.
  • Added basic support for Indic scripts in addition to CJK. #1060
  • Added support for bold italic symbols. #1011
  • add \ae, \AE, \oe, \OE, \o, \O, \ss with unicode support for those characters in text mode. #1030
  • Added \i and \j for text mode. #1029
  • Added buildHTMLTree. #1022
  • Implemented \TextOrMath, @secondoftwo. #1024
  • Added a 'common issues' section to the README.md. #1034

Changed

  • Made a more working example in README.md. Fixed #1049 PR is #1050
  • Exposing the build tree. #1017
  • Changed \xLongequal to \xlongequal. #997

Fixed

  • Avoid negative space in \bmod. #984
  • Stacking text commands. #1009
  • Fixed \vec by replacing the combining font glyph with an SVG. #1018
  • Made accents zero width. #1033
  • Fixed frac-line. #1025
  • Implemented correct macros for liminf and limsup. Fixed #111
  • \kern generates right-margin instead of left-margin. Fixed #995

[v0.9.0-alpha2] - 2017-11-26

Added

  • Added Unicode Relations and Unicode Symbol support. Supports Unicode ∴, ∵, \mid, Arrows, Big Operators, Binary Operators, Negated Relations.
  • Implemented the alignedat environment for flexible math spacing. #930
  • Implemented \mathchoice command. #969
  • Implemented \href command. #923
  • \hspace*, \@ifstar, \@ifnextchar, \@firstoftwo (#975)
  • Added \notni character . #710
  • Added ng-katex link to README.md. #959

Changed

  • Single-character macros like active characters. #973
  • Re @flow:
    • Port buildTree, katex, mathMLTree, parseTree, stretchy to @flow.

Fixed

  • Fixed the spacing between columns in the {aligned} environment. #942
  • Fixed issue where the {aligned} environment skips the last line if the first column is empty. #949
  • Appended ApplyFunction to math functions in MathML. #960
  • Changed \undertilde to \utilde. #948
  • Changed frac-line from border to full span. #976

[v0.9.0-alpha1] - 2017-10-15

Changed

  • Edited link to Function Support page. #922
  • Re @flow:
    • Exported svgGeometry to @flow. #936
    • Ported utils to @flow. #935

Fixed

  • Fixed space handling. #912
  • Prevents disappearing fraction lines. #931

[v0.9.0-alpha] - 2017-10-05

Added

  • Added MathJax compatibility script. #680
  • Added a maxSize option to limit user-specified sizes. #803
  • Added \smash, laps, spaces, and phantoms. #833
  • Support for \raisebox, \operatorname, \And, \colorbox, \fcolorbox and \verb.
  • Added support for comments. Fixed #20
  • To @flow:
    • fontMetrics, fontMetricsData, Token, Lexer, MacroExpander, Options, ParseError, ParseNode, Settings, Style.

Removed

  • Removed the positions array computed by Parser's parseArguments(). #864

Changed

  • Advanced macro support and magic \dots. #794
  • Allow sizing commands inside optional groups. #885
  • Upgraded \sqrt zoom and width. #890
  • Refactored defineEnvironment to also accept HTML and MathML builders. #875
  • For @flow:
    • Ported environments.js, functions.js, symbol.js, unit.js.
  • Separated mandatory and optional arguments in parseArguments. #903

Breaking Changes

  • Require [text]color HTML colors to be well-formed. See #827
  • \llap and \rlap now render contents in math mode. Use \mathllap (new) and \mathrlap (new) if you need the previous behavior.

Fixed

  • Fixed exponential behavior in accent production. #834
  • Use mpadded for \raisebox MathML. #876
  • Array/Matrix environments do not trim newlines. Fixed #337. PR is #479.
  • For @flow:
    • Corrected @flow types. Refactor some Parser code for stricter typing. #896
    • Fixed match-at flow errors. #847

[v0.8.3] - 2017-08-27

Added

  • Added latin-1 letters as math symbols. See #796
  • Added support for \not. #140

Changed

  • Support CJK full-width punctuation + Unicode dots. See #814
  • Support for ' \` ^ ~ = \u . " \r \H \v text-mode accents. See #802
  • Modernized font creation. See #624

Fixed

  • Use inline SVG for stretchy elements. #807
  • Improve \sqrt. #810

[v0.8.2] - 2017-08-17

Added

  • Accepts all existing Greek letters using unicode characters in math mode. See #410

Fixed

  • Fixed MathML output for ' and large operators with limits. #788
  • Updated package.json to point 'main' at dist/katex.js. #791
  • Fixed color support for stretchy, strikethrough, and fbox. #792
  • Detect attachEvent() support correctly. See #771 and #772 for the issue and PR fix respectively.

[v0.8.1] - 2017-08-11

Fixed

  • Note: The v0.8.0 release did not include the SVG images which are necessary for rendering wide and stretchy accents as well as \overbrace and \underbrace. This release corrects that.

  • Note that if you're including copies of KaTeX in your web application, you should now include the dist/images directory in addition to the usual the dist/fonts directory.

[v0.8.0] - 2017-08-11

Added

  • Added some international operators. See #509
  • Old font command support: \rm, \sf, \tt, \bf, \it. #675
  • Builtin macros, macro arguments, \overset and \underset. #605
  • Added \iff, \implies, \impliedby support. #697
  • Support <, >, | and many \text... commands in text mode. #684
  • Implemented $...$ via styling node. #637
  • Added \jot lineskip to aligned environment, switch contents to displaystyle, and add gathered. #725
  • Support stretchy wide elements. #670
  • Set maxFontSize on rules. #744

Changes

  • Added support for Windows high-contrast mode. Fixed #716 #724 -Implemented \coloneqq, \colonequals, etc. based on mathtools and colonequals. #727
  • Added configurable error callback. #658
  • Added support for absolute TeX units. #732
  • Revert "Remove trailing commas for IE 9 compatibility". #622
  • Use utils.deflt for Settings. #649
  • Refactored and commented space splicing code. #699
  • Vertically center single-character \mathop. #745
  • Associate font metrics with Options, not Style. #743
  • Upgraded the source to use ES6 syntax including classes, import and static properties. #679
  • Use \displaystyle within \over/\underbrace. #765
  • Shrinkwrap vlists in table-like CSS. #768
  • Improve rule coding, including for \sqrt. #776

Breaking Changes

  • Implicit \color, explicitly grouped \textcolor. See #619

Fixed

  • Fixed high contrast mode better. #733
  • Fixed all AMS mathord symbols. #618
  • Fixed x'^2 #636
  • Fixed font typo math -> main. #678
  • Fixed spaces before \middle. #689
  • Fixed #711 issue with multiple superscripts. #718
  • Fixed interaction between styles and sizes. #719
  • Correct handling of unbraced kerns followed by spaces. #751
  • Corrected computation of TeX sizes. #755
  • Solved Safari rendering issues with font-size overrides. #780

[v0.7.1] - 2017-01-21

Fixed

  • Restored creation of dist directory during release process.

[v0.7.0] - 2017-01-08

Added

  • Added \atop, \bmod, \degree, \kern, \ldots, \maltese, \mathbin, \mathclose, \mathellipsis, \mathop, \mathopen, \mathord, \mathpunct, \mathrel, \middle, \mod, \pod, \pounds, \pmod, \stackre, \textbf, \textellipsis, \textit, \textnormal, \textrm, \textsf, \texttt, --, ---, ''', ', ​ and "".
  • Added \#, \&, \$, \%, \_, \{, and \} in text mode.

Changed

  • Allow specifying macros (without arguments) in the settings object.
  • Combine adjacent spans in text mode.

Fixed

  • Do not apply italic correction in text mode.
  • Fixed the MathML fence attribute on delimiters.
  • Fixed converting bins to ords.
  • Made \llap and \rlap produce ords.
  • Fixed spacing around \color, \mathbf, and in other places.
  • Added per-style font metrics.
  • Complain when trying to render a non-string.
  • Fixed subscript positioning with changed-font bases.
  • Fixed superscript/subscript centering in fractions.

[v0.6.0] - 2016-04-15

Added

  • Added \gt, \lt and \underline support.
  • Introduced the aligned environment.

Removed

  • Removed 3px border around rules.

Changed

  • Bundle CSS and fonts in npm package.

Fixed

  • Fixed sub- and super-scripts not being centered inside of math display.
  • Set the greediness of font functions to 2 so that e^\mathbf{x} will parse.

[v0.5.1] - 2015-09-01

Added

  • Added the font changing functions \mathrm, \mathit, \mathbf, \mathbb, \mathcal, \mathfrak, \mathscr, \mathsf, \mathtt, \Bbb, \bold, and \frak.
  • Added the \limits and \nolimits functions.
  • Added a throwOnError option to allow generating red error text when rendering invalid commands instead of throwing errors, and a corresponding errorColor option to decide the color of invalid commands.
  • Added support for | column delimiters in the array environment.
  • Added \lVert and \rVert symbols.

Changed

  • Allow \lvert, \rvert, \lVert, \rVert, \lgroup, \rgroup, \lmoustache, and \rmoustache in delimiters.

Fixed

  • Fix the spacing of the \ulcorner, \urcorner, \llcorner, \lrcorner, \barwedge, \veebar, \circledcirc, \boxdot, \uparrow, \Uparrow, \downarrow, \Downarrow, \updownarrow, \Updownarrow, and \ldots symbols.

[v0.5.0] - 2015-07-16

Added

  • Added the cases and Bmatrix environments.
  • Added \checkmark and \circledR symbols.

Changed

  • Ran ttfautohint on our fonts to produce better results at small font sizes.
  • Improved the spacing inside fractions.
  • Correctly set environments to the ord type.

[v0.4.3] - 2015-06-20

Fixed

  • Fixed bower.json to include a "main" entry

[v0.4.0] - 2015-06-18

Added

  • Added support for some \begin/\end environments, including support for array, matrix, pmatrix, bmatrix, vmatrix, and Vmatrix.
  • Added support for optional \sqrt arguments, e.g. \sqrt[3]{x}.
  • Bower package is now available: run bower install katex to download the built files.

Changed

  • Added a display mode flag to the cli.
  • Exposed an unstable __parse method for retrieving the parse tree.
  • Prevent elements from inheriting text-indent.

[v0.3.0] - 2015-04-01

Added

  • Added an auto-render extension for automatically rendering math on a page.
  • Added support for \phantom.
  • Added \#, \&.

Removed

  • Removed !important from MathML hiding rules, so they can be overridden.

Breaking Changes

  • The greediness of the \color function has changed to maintain compatibility with MathJax, so expressions like \color{red}\text{a} will no longer work and instead need to be rewritten as \color{red}{\text{a}}.

Fixed

  • Fixed spacing for \odot, \oplus, \otimes, \oslash, \bigtriangleup, \bigtriangledown, \dagger, \diamond, \star, \triangleleft, \triangleright.
  • Fixed MathML handling of text operators.

[v0.2.0] - 2015-03-02

Added

  • Added accessibility through the use of MathML.
  • Added the ability to render math in display mode, centered on a single line in display style.
  • Added support for new symbols: \aleph, \amalg, \approxeq, \ast, \asymp, \backepsilon, \backprime, \backsim, \backsimeq, \Bbbk, \because, \beth, \between, \bigcirc, \bigstar, \blacklozenge, \blacksquare, \blacktriangle, \blacktriangledown, \blacktriangleleft, \blacktriangleright, \bowtie, \Box, \boxminus, \boxplus, \boxtimes, \bullet, \bumpeq, \Bumpeq, \Cap, \cdotp, \centerdot, \circeq, \circlearrowleft, \circlearrowright, \circledast, \circleddash, \circledS, \clubsuit, \complement, \Cup, \curlyeqprec, \curlyeqsucc, \curlyvee, \curlywedge, \curvearrowleft, \curvearrowright, \dag, \daleth, \dashleftarrow, \dashrightarrow, \dashv, \ddag, \ddagger, \diagdown, \diagup, \Diamond, \diamondsuit, \digamma, \divideontimes, \doteq, \Doteq, \doteqdot, \dotplus, \doublebarwedge, \doublecap, \doublecup, \downdownarrows, \downharpoonleft, \downharpoonright, \ell, \eqcirc, \eqsim, \eqslantgtr, \eqslantless, \equiv, \eth,\exists, \fallingdotseq, \Finv, \flat, \forall, \frown, \Game, \geqq, \geqslant, \gg, \ggg, \gggtr, \gimel, \gnapprox, \gneq, \gneqq, \gnsim, \gtrapprox, \gtrdot, \gtreqless, \gtreqqless, \gtrless, \gtrsim, \gvertneqq, \hbar, \heartsuit, \hookleftarrow, \hookrightarrow, \hslash, \Im, \intercal, \Join, \ldotp, \leadsto, \Leftarrow, \leftarrowtail, \leftharpoondown, \leftharpoonup, \leftleftarrows, \leftrightarrow, \Leftrightarrow, \leftrightarrows, \leftrightharpoons, \leftrightsquigarrow, \leftthreetimes, \leqq, \leqslant, \lessapprox, \lessdot, \lesseqgtr, \lesseqqgtr, \lessgtr, \lesssim, \lgroup, \lhd, \ll, \llcorner, \Lleftarrow, \lll, \llless, \lmoustache, \lnapprox, \lneq, \lneqq, \lnsim, \longleftarrow, \Longleftarrow, \longleftrightarrow, \Longleftrightarrow, \longmapsto, \longrightarrow, \Longrightarrow, \looparrowleft, \looparrowright, \lozenge, \lrcorner, \Lsh, \ltimes, \lvertneqq, \mapsto, \measuredangle, \mho, \mid, \mp, \multimap, \nabla, \natural, \ncong, \nearrow, \nexists, \ngeqq, \ngeqslant, \ngtr, \ni, \nleftarrow, \nLeftarrow, \nleftrightarrow, \nLeftrightarrow, \nleqq, \nleqslant, \nless, \nmid, \nparallel, \nprec, \npreceq, \nrightarrow, \nRightarrow, \nshortmid, \nshortparallel, \nsim, \nsubseteqq, \nsucc, \nsucceq, \nsupseteqq, \ntriangleleft, \ntrianglelefteq, \ntriangleright, \ntrianglerighteq, \nvdash, \nvDash, \nVdash, \nVDash, \nwarrow, \ominus, \owns, \parallel, \perp, \pitchfork, \prec, \precapprox, \preccurlyeq, \preceq, \precnapprox, \precneqq, \precnsim, \precsim, \propto, \Re, \restriction, \rgroup, \rhd, \Rightarrow, \rightarrowtail, \rightharpoondown, \rightharpoonup, \rightleftarrows, \rightleftharpoons, \rightrightarrows, \rightsquigarrow, \rightthreetimes, \risingdotseq, \rmoustache, \Rrightarrow, \Rsh, \rtimes, \searrow, \sharp, \shortmid, \shortparallel, \sim, \simeq, \smallfrown, \smallsetminus, \smallsmile, \smile, \spadesuit, \sphericalangle, \sqcap, \sqcup, \sqsubset, \sqsubseteq, \sqsupset, \sqsupseteq, \square, \Subset, \subseteqq, \subsetneq, \subsetneqq, \succ, \succapprox, \succcurlyeq, \succeq, \succnapprox, \succneqq, \succnsim, \succsim, \Supset, \supseteqq, \supsetneq, \supsetneqq, \swarrow, \therefore, \thickapprox, \thicksim, \triangledown, \trianglelefteq, \triangleq, \trianglerighteq, \twoheadleftarrow, \twoheadrightarrow, \ulcorner, \unlhd, \unrhd, \upharpoonleft, \upharpoonright, \uplus, \upuparrows, \urcorner, \varkappa, \varpropto, \varsubsetneq, \varsubsetneqq, \varsupsetneq \varsupsetneqq, \vartriangle, \vartriangleleft, \vartriangleright, \vdash, \vDash, \Vdash, \Vvdash, \wp, \wr, \yen.

Removed

  • Removed unused greek fonts.

[v0.1.1] - 2014-10-15

Added

  • Added support for \binom
  • Added support for \over and \choose
  • Added \partial, \subset, \supset, \subseteq, \supseteq, \cap, \cup, \setminus, \neg, \lnot, \top, \bot, \emptyset, \varnothing, \land, \lor, \wedge, \vee, \notin, \nsubseteq, \nsupseteq, \models.
  • Added simple katex command-line binary to convert TeX to HTML on the server.
  • Added WOFF2 fonts for faster downloads in Chrome and Opera.

Changed

  • Correctly throws on \sqrt[3]{x} to indicate lack of support.
  • Warn when in quirks mode (i.e., missing a <!DOCTYPE html> declaration).
  • Built files now only use ASCII characters to avoid character encoding problems.

Fixed

  • Fixed spacing for \iint and \iiint.

[v0.1.0] - 2014-09-15

Initial Public Release