* Stop throwing ParseError when throwOnError is false
`render`, `renderToString`, etc. now catch ParseError and render it to the
raw LaTeX (with proper escaping) and a hover title with the error.
Along the way:
* Use new `katex.__renderToDomTree` in katex-spec's `_getBuilt`.
(This was necessary to get the new error handling in `_getBuilt`.)
* Fix jest results which must always be functions, not strings.
* fix lint
* Fix flow error
Leave error type unspecified, as we check it with instanceof.
* Update katex-spec.js
* \textasciitilde and fix ~ in \verb
* Add support for `\textasciitilde` which reproduces tilde character
in text mode.
* Make `~` render as tilde instead of space within `\verb`,
by manually mapping that character to `\textasciitilde`.
This seems to be the only character that needs such manual mapping
to reproduce LaTeX's `\verb` behavior.
* Add `, -, ', ~ to Verb screenshot test
* Support some Unicode Mathematical Alphanumeric Symbols
This PR adds support for some of the characters in Unicode range U+1D400 to U+1D7FF, [Mathematical Alphanumeric Symbols](https://www.unicode.org/charts/PDF/U1D400.pdf). Specifically, it adds support for:
* A-Z a-z bold
* A-Z a-z bold italic
* A-Z a-z Fractur
* A-Z a-z sans-serif
* A-Z double struck
• A-Z script
Addresses issue #1215 and parts of #260.
* Fix lint error
* Fix MathML, and pick up review comments
* Fix lint error
* Add text mode. Remove sans-serif.
* Fix lint error
* Fixed \mathrm, added screenshotter test
* Change screenshotter test to an array
* Add screenshots
* Picked up review comments. Add characters
* Fix \underset
This PR modifies `\underset` and `\overset` to align with LaTeX behavior when a superscript is applied after the `\underset`. Fixes issue #1275.
I also changed the spacing from KaTeX `mop` to KaTeX `rmel`. The result seems to be a closer visual match to LaTeX.
* Update screenshots
Alternative to #1283 and #1284 implementing Latin-looking capital Greek
letters via symbols instead of macros, which interacts with fonts more
correctly.
* Expose defineSymbol in the main KaTeX object
* More Unicode letters (#1260)
This PR serves as a complement to PR #1232 by supporting some letters that are omitted from the Unicode range 1D400–1D7FF.
* Include Bold-Italic fonts for \boldsymbol (#1257)
* Include Bold-Italic fonts for \boldsymbol
Fix#1228
* Update screenshots
* README: Add size badge (#1253)
* README: Add size badge
Add a size badge showing size of gzipped katex.min.js
* update-sri: Add code to replace size badge in readme
* Change to use badge from shields.io instead
My bad for assuming that badgesize.io supports https. Change to use the
badge from shields.io which supports https.
* More Unicode letters (#1260)
This PR serves as a complement to PR #1232 by supporting some letters that are omitted from the Unicode range 1D400–1D7FF.
* Include Bold-Italic fonts for \boldsymbol (#1257)
* Include Bold-Italic fonts for \boldsymbol
Fix#1228
* Update screenshots
* README: Add size badge
Add a size badge showing size of gzipped katex.min.js
* update-sri: Add code to replace size badge in readme
* Change to use badge from shields.io instead
My bad for assuming that badgesize.io supports https. Change to use the
badge from shields.io which supports https.
* Use badgesize.io with https
* Fix space width in \texttt (#1261)
* Fix space width in \texttt
Fix#1255 via https://github.com/KaTeX/katex-fonts/pull/41.
Also fix width metrics via https://github.com/KaTeX/katex-fonts/pull/42.
* Improve test
* Update screenshots
* README: Add size badge
Add a size badge showing size of gzipped katex.min.js
* update-sri: Add code to replace size badge in readme
* Change to use badge from shields.io instead
My bad for assuming that badgesize.io supports https. Change to use the
badge from shields.io which supports https.
* More Unicode letters (#1260)
This PR serves as a complement to PR #1232 by supporting some letters that are omitted from the Unicode range 1D400–1D7FF.
* Include Bold-Italic fonts for \boldsymbol (#1257)
* Include Bold-Italic fonts for \boldsymbol
Fix#1228
* Update screenshots
* README: Add size badge
Add a size badge showing size of gzipped katex.min.js
* update-sri: Add code to replace size badge in readme
* Change to use badge from shields.io instead
My bad for assuming that badgesize.io supports https. Change to use the
badge from shields.io which supports https.
* Use badgesize.io with https
* Specify height for SVG elements
I ran into an issue where a low-specificity CSS rule elsewhere on the page was overriding the KaTeX SVG height, rendering fraction lines invisible. Does this seem like a reasonable addition to the style sheet?
* Inherit instead of 100%.
* Type correction to allow documentFragment to be children of span.
This is necessary because documentFragments are put in spans in some cases --
e.g. src/functions/sqrt.js. Not sure why this wasn't caught by the type system.
It's possible that it might be happening in buildHTML as well -- it is not yet
been typed and thus violations of the existing types haven't yet had a change to
be caught.
* Fix anchor.toMarkup
* Add space between `a`(tag name) and `href`(attribute name)
* Remove `this.href` appended to `markup` in the template literal
* Add regression test on #1245
* Treat svg-wrapping spans differently from DOM-wrapping spans.
In preparation for the conversion of buildHTML to @flow, separate the two
different uses of domTree.span -- one to wrap a single SVG and one to wrap
arbitrary DOM nodes. This separation is to help avoid type issues that pop up
due to buildHTML methods accessing the .children field of spans as if they are
DOM elements and not SVG ones.
* Simplify the domTree DOM definitions based on separation of two span types.
* Fix#1212 by supporting `\(...\)` in addition to `$...$` inline math nested inside `\text`. This turned out to be harder than one would think because of the way `$` was being handled specially, while `\(` needed to be handled as a function, which immediately consumed the `\(` token, which meant that the first following token got consumed in text mode instead of math mode (unlike `$` where we could switch the mode before consumption).
* Added new `consumeMode` setting for functions which tells the parser to switch modes just for the consumption of the command token.
* Now that we're working with functions, move all the `$` handling code into `functions/math.js`. Somewhat bizarrely, we can define `$` as a function (nearly identical to `\(`) and it all works (just like we can have single-character macros). This move removed a lot of messy stuff from `Parser.js`: `ParsedDollar`, `ParsedFuncOrArgOrDollar`, `newDollar`, `assertFuncOrArg`, and at least three explicit checks for `if (... === "$")`.
* Moved the `consume()` for the command token from `parseSymbol` to `parseGivenFunction`. This ended up not being strictly necessary, but seems conceptually cleaner.
* Partially address #1027 by setting `consumeMode: "text"` for `\text` commands. As a result, `\text` now instantly switches the mode to `"text"`, so even an unbraced macro argument will properly detect text mode. I added a test for this, which is a slightly weaker form of #1027.
* Format buildHTML groupType definitions in preparation for adding types.
1) Collapse groupType definitions (a bunch of functions all of the same type
defined on the groupType object) into a single object in preparation for
putting types only on the base object.
2) Do minor reformatting to account for the +4 indent above which pushes some
lines past 80 characters.
3) Do other minor formatting changes for readability, taking advantage of ES6.
* Review fixes.
* Support Unicode delimiters
This PR adds support for the Unicode versions of \lfloor, \rfloor, \lceil, \rceil, \lgroup, \rgroup, \lmoustache, \rmoustache, \ulcorner, \urcorner, \llcorner, and \lrcorner.
All the mappings agree with `unicode math`
* Change tests from Parse to Build
Fix#1204 by adding `\yen` support to text mode.
More generally, I checked all the text+mode symbols supported by
[amsfonts](http://mirrors.ctan.org/fonts/amsfonts/doc/amsfonts.pdf)
(see Section 6), and found that `\yen` is the only one lacking text-mode
support.
* Add display/displayMode toggle on test page
* Fix#1035
* Refactor query parsing code to promote re-use
* Also add support for (unescaped) single-character macros
* Rewrite to use query-string
* Restore modes on package*json
* Fix \nobreakspace, refactor "regular space" checking
Fix#1199 by adding \nobreakspace to the list of commands/symbols that
behave like a regular space character. Refactor to put that list in one
place, and use an object so it checks instantly instead of sequentially.
* Copy test from #1201
* Work around negative space bug in Chrome
Fix#984
The screenshot test is still somewhat defective, showing a space before
the "post" text (a period). This seems limited to the screenshotter, however,
as it works fine in the tester via
http://localhost:7936/?text=%5Cfbox%7B%5C%241%2C%5C!000%2C%5C!000%7D%5CKaTeX&display=0&after=.
* Update screenshots
* Switch to inherited `width: min-content`
* Add CircleCI config for online screenshot verification/generation
* Remove `Checkout unicode fonts` step
Unicode-fonts are now a submodule, which is checked out in `Checkout submodule` step.
* Always generate new screenshots
`makeVList` sets depth with an empty span for which it defines a height. But Chrome, in contenteditable mode only, treats that span as if it contains some text. The resulting `min-height` can over ride our desired depth.
So we insert an empty span inside the `depthStrut` span.
* unicodeTextInMathMode setting
* When `unicodeTextInMathMode` is `true`, accented letters from
`unicodeSymbols.js`, and CJK and other supported languages,
get added support in math mode (as requested in #895).
* When `unicodeTextInMathMode` is `false, all of these stop working in
math mode, and are only supported in text mode (matching XeTeX behavior).
Note that this is a backwards incompatibility with some 0.9.0 alpha/betas.
* Fix handling of Unicode characters ð, Å, å
* Fix double handling of ð (math maps to \eth, not special Unicode character)
* Remove Åå special math handling, thanks to #1125
* Forbid extraLatin when unicodeTextInMathMode is false
* Padding over \sqrt and Paths for frac-line
This replaces two earlier PRs.
* Restore reaction arrows
* regenerate screenshots
* Set line padding in a constant
* Update with latest master
* Fix lint error
* update screenshots