Commit Graph

603 Commits

Author SHA1 Message Date
Future Formula
35ff5ac223 fix: add namespace for svg, making output XHTML+SVG+MathML compatible (#2725)
* fix: add namespace for svg
* Remove unneeded xmlns:xlink

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
Co-authored-by: Erik Demaine <edemaine@mit.edu>
2021-07-21 16:47:49 +00:00
Kelly Littlepage
910e523633 fix: Correct invalid box-sizing property, adjusting spacing of \angl (#3053)
* fix: Correct invalid box-sizing property

Closes #3052

* Add Safari screenshot

Co-authored-by: Erik Demaine <edemaine@mit.edu>
2021-07-21 10:50:11 -04:00
Erik Demaine
f779bac684 fix: matrix environment with zero or inconsistent columns (#3018)
Previously, the matrix family of environments assumed that the number of
columns was given by the number of columns in the first row.  This
didn't work when there were zero rows, and it didn't handle the case
where future rows have more columns than the first (which is visible
when using an alignment other than `c`, such as `\begin{matrix*}[r]`).

Fixes #3017

Co-authored-by: ylemkimon <y@ylem.kim>
2021-05-14 21:11:44 +00:00
Erik Demaine
0e9acce9be feat: Allow text-mode accents in math mode, except in strict mode (#3009)
* feat: Allow text-mode accents in math mode, except in strict mode

LaTeX only issues a warning when using e.g. `\r` in math mode.
KaTeX will now do the same with the default `strict` setting of `warn`.

Fixes #2983

* Fix accent mode

Co-authored-by: ylemkimon <y@ylem.kim>
2021-05-14 21:08:39 +00:00
Ron Kok
9b4acc971c fix: Correct for negative margin in integrand lower limits (#2987)
* fix: Correct for negative margin in integrand lower limits.

* Adjust for width limit.

* Update screenshots.

* Update Safari screenshot.

* Catch null subGroup.

* Remove redundant code.
2021-05-11 21:26:35 -04:00
Nfer Zhuang
1cb62799c6 fix: MathML for stretchy accents. #2990 (#2991)
* fix #2990

fix make stretchycode to textNode bug.

* fix: fix stretchy.js@mathMLnode line too long

* chore(screenshotter): update stretchy snapshots

* fix: remove dup '\' in cdrightarrow cdleftarrow and cdlongequal

* test: add stretchy MathML builder test case

Co-authored-by: nferzhuang <nferzhuang@tencent.com>
Co-authored-by: Ron Kok <ronkok@comcast.net>
2021-05-06 20:31:52 -07:00
Erik Demaine
e9b751b72d feat: \operatornamewithlimits (and clean up \operatorname support) (#2984)
* feat: \operatornamewithlimits (and clean up \operatorname support)

Add support for `\operatornamewithlimits` (an alias to `\operatorname*`
defined in `amsmath/amsopn.sty`), and use KaTeX's existing `\@ifstar`
macro to define `\operatorname` instead of a special lexing rule
(simplifying the lexer).

* Pick up one comment

* Actually fix docs this time

Co-authored-by: Ron Kok <ronkok@comcast.net>
2021-05-06 14:49:34 -07:00
Ron Kok
980b004023 fix: binom delimiter size in scriptscriptstyle. (#2976)
Co-authored-by: Erik Demaine <edemaine@mit.edu>
2021-05-06 18:27:10 +00:00
Erik Demaine
c85250d14e fix: Correctly parse \ followed by whitespace (#2877)
* fix: Correctly parse \ followed by whitespace

LaTeX parses `\` followed by whitespace including up to one newline
as equivalent to `\ `.  (With multiple newlines, you get paragraph
breaks.)

Fix #2860.

* Improve comments

* Avoid second RegExp match in control words

* Document capturing groups

Co-authored-by: Ron Kok <ronkok@comcast.net>
2021-05-05 18:54:41 -07:00
Ron Kok
3f7163daf5 fix: Support \S and \P in math mode (#2977)
Co-authored-by: Erik Demaine <edemaine@mit.edu>
2021-05-02 15:57:39 -04:00
Ron Kok
fbda0b1136 fix: Avoid crash when \operatorname has \limits (#2979) 2021-05-02 15:47:22 -04:00
Erik Demaine
01ae7f8eef fix: Respect catcode in macro expansion and set ~'s catcode correctly (#2949)
Support single characters having a catcode of 13 (active) or 12 (other),
and expand a macro defined for the character only if it's active.
This enables defining `~` as a macro, but avoiding expansion in URLs.

Fix #2924

Co-authored-by: ylemkimon <y@ylem.kim>
2021-04-24 19:33:01 +00:00
Erik Demaine
24332e053c fix(array): Keep single empty row in AMS environments (#2947)
* fix(array): Keep single empty row in AMS environments

In particular prevents empty equation-numbered environment (e.g. `{align}`)
from crashing.

Fix #2944

* Add tests

Co-authored-by: ylemkimon <y@ylem.kim>
2021-04-24 19:28:16 +00:00
Nathan Wang
2f62c0d8ee fix: Protect fraction bars from CSS border-color (#2870)
* fix: Protect fraction bars from CSS border-color

`border-color` is not inheritable, so the previous fix did not work.

* Fix lint

Co-authored-by: Erik Demaine <edemaine@mit.edu>
2021-04-05 17:12:47 +00:00
ylemkimon
266fcb046c build: move font generation to the main repo (#2837)
* build: move font generation to the main repo

* Update fonts

* chore: remove submodules

* Update paths

* Update fonts.yml

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2021-03-30 03:21:59 +09:00
renovate[bot]
f4f236efeb chore(deps): update dependency less to v4 [skip netlify] (#2695)
* chore(deps): update dependency less to v4 [skip netlify]

* Update katex.less

* Update katex.less

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: ylemkimon <y@ylem.kim>
2021-03-12 05:06:08 +09:00
Ron Kok
84981da3bf fix: Remove topEnv parameter. (#2712)
* fix: Remove topEnv parameter.

* Set test to default strictness

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2021-01-11 10:00:03 -08:00
Erik Demaine
6b4e80bfbb fix(builder): combine characters together in all expressions (#2080)
* Combine characters together in all expressions

Call `tryCombineChars` in `buildExpression`

* update screenshots, exclude 'coverage' from lint

* update MathML snapshots

* don't combine two 'mbin's or two 'mord's

* update screenshots

* update screenshots

Co-authored-by: ylemkimon <y@ylem.kim>
Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2020-12-30 10:34:01 -05:00
Ron Kok
1f509a3b75 feat: Support \underbar (#2713)
* feat: Support \underbar

* Update screenshots
2020-12-30 10:15:17 -05:00
Ron Kok
cd9ee27ac6 fix: Prevent global group from adversely affecting color. (#2703)
Co-authored-by: ylemkimon <y@ylem.kim>
2020-12-29 14:52:41 -05:00
Ron Kok
4a8a6a38ce fix: Use SVGs to avoid gaps in tall delimiters. (#2698)
* fix: Use SVGs to avoid gaps in tall delimiters.

* Add \vert and \Vert

* Update screenshots

* Define verts array outside of function.

* Revert height-finding logic.

* Update screenshots

* Pick up review comments.

* Update CD screen shots
2020-12-28 16:50:09 -05:00
Ron Kok
75a3af9725 feat: Support {CD} (#2396)
* Support {CD}

* Edit screenshotter test to fit on one page

* Update screenshots

* Remove bogus Safari screenshot

* Edit documentation to avoid tag conflicts and explain delimiters

* Add type annotations

* Add bogus safari screenshot

* Update with real Safari screenshot

* Set label vertical alignment

* Revise call to parseExpression() per PR 2085 changes to macro parsing

* Update Firefox screenshot

* Pick up review comments

* Add unit tests and snapshot.

* Tighten up label collection.

* Better loop index

* remove extra space

* Picked up comments. Added a parse check. Added a test.

Co-authored-by: ylemkimon <y@ylem.kim>
Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
Co-authored-by: Kevin Barabash <kevinb7@gmail.com>
2020-12-27 13:45:31 -05:00
Ron Kok
ef09291288 fix: Improve MathML for math operators with subscripts (#2596)
* Improve MathML for math operators with subscripts

* Add TODO re: MathML spacing

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2020-12-18 18:14:12 -05:00
Ron Kok
753c82f360 fix: Support Armenian characters (#2618)
* Support Armenian characters

* Update docs

Co-authored-by: ylemkimon <y@ylem.kim>
2020-11-15 05:44:31 +09:00
Ron Kok
60aecbdfe2 feat: Support \vcenter and \hbox (#2452)
* Support \vcenter, \raise, \lower, and \hbox

* Update screenshots

* Edit docs for strict and hbox to

* Fix typo for \hbox to

* Update Safari screenshot

* Augment docs for \vcentcolon

* Edit vcenter MathML comment.

* Remove pointless class from vcenter MathML

* Withdraw \raise and \lower

* Updatae Chrome and Firefox screenshots

* Update Safari screenshot

* Delete allowedInArgument setting

Co-authored-by: ylemkimon <y@ylem.kim>

* Update Chrome and Firefox screenshots

* Update Chrome and Firefox screenshots take 2

* Update screenshot

Co-authored-by: ylemkimon <y@ylem.kim>
2020-11-14 18:45:14 +09:00
Ron Kok
c8042ccb55 fix: MathML \lim\limits in Safari (#2556)
Co-authored-by: ylemkimon <y@ylem.kim>
2020-10-03 21:11:24 +09:00
renovate[bot]
16a34c3b35 chore(deps): update dependency flow-bin to v0.134.0 [skip netlify] (#2533)
* chore(deps): update dependency flow-bin to v0.134.0 [skip netlify]

* Fix flow errors

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Young Min Kin <mail@ylem.kim>
2020-09-26 12:19:42 +09:00
renovate[bot]
c1dfdd8556 chore(deps): lock file maintenance (#2507)
* chore(deps): lock file maintenance

[skip netlify]

* chore(deps): lock file maintenance

* style: fix stylelint errors

Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: ylemkimon <mail@ylem.kim>
2020-09-12 12:40:56 +09:00
ylemkimon
5a90558116 feat(function): add allowedInArgument instead of greediness property (#2134)
* Remove `greediness` property

Use boolean `grouped` property instead, which is more consistent with 
LaTeX.

BREAKING CHANGE: \cfrac, \color, \textcolor, \colorbox, \fcolorbox are 
no longer grouped.

* Rename grouped to allowedInArgument

* Reenable tests

* Update documentation

* Fix typo

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2020-09-07 13:38:17 +09:00
Ron Kok
37990cc5b3 feat: Support matrix*, pmatrix*, bmatrix*, Bmatrix*, vmatrix*, and Vmatrix*. (#2488)
* Support matrix*, pmatrix*, bmatrix*, Bmatrix*, vmatrix*, and Vmatrix*

* Add tests and docs

* Delete screeshotter tests

* Fix column alignment and add bogus screenshot files

* Update real Chrome and Firefox screenshots.

* Update Safari screenshot

* Dedupe code in array.js

* Edit payload in array.js

* Edit again, correctly this time.
2020-09-06 09:56:09 -07:00
ylemkimon
dc5f97aaa2 feat(macro): improve argument parsing (#2085)
* Improve macro argument parsing

* Make \above a primitive command

* Fix screenshotter data

* Normalize argument where necessary

* Improve argument location info

* Update comments

* Minor refactor

* Modularize group parsers

* Allow braced and blank size argument

for non-strict mode and \genfrac, respectively.

* Minor refactor & update comments

* Remove raw option in parseStringGroup

* Update tests

* Fix { delimited parameter

* Update tests

* Update tests

* Normalize argument in \genfrac

* Update tests

* Consume space before scanning an optional argument

* Fix \\, \newline, and \cr behavior

* Fix flow error

* Update comments

* Remove unnecessary mode switching

Parser mode affects neither fetch nor consume.

* Allow single (active) character macro

* Add function property `primitive`

* Set \mathchoice and \*style primitive

* Separate size-related improvements out to #2139

* Fix flow error

* Update screenshots

* Update demo example

* Add a migration guide

* Fix capitalization

* Make a primitive function unexpandable

* Update screenshots

* Update screenshots

* Revert "Document \def doesn't support delimiters (#2288) (#2289)"

This reverts commit f96fba6f7f.

* Update comments, errors, and tests

* Update screenshots
2020-09-06 12:56:13 +09:00
dependabot[bot]
730732fddb build(deps-dev): bump flow-bin from 0.131.0 to 0.132.0 (#2453) 2020-08-31 18:53:45 +09:00
Ron Kok
010b267dd6 fix: Support MathML \oiint and \oiiint (#2461)
* fix: Support MathML \oiint and \oiiint

* Update direct input section of docs
2020-08-30 15:44:34 -07:00
Ron Kok
ae90dbb78e refactor: Delete obsolete comment re: mn elements (#2472) 2020-08-30 15:33:39 -04:00
Ron Kok
8f26a65847 refactor: Delete obsolete comment re: limsup (#2464) 2020-08-27 11:43:01 -04:00
Ron Kok
b22b69c3a8 fix: \injlim typo (#2459)
* Fix typo in \injlim

* Just to satisfy Semantic Pull Request
2020-08-26 09:14:18 -07:00
Ron Kok
794dc7a213 feat: support AMS log-like symbols (#2429)
* Support AMS log-like symbols

* Update documentation

* Update \limits info in documentation
2020-08-18 05:28:42 +09:00
Ron Kok
b59ca67530 feat: support Unicode ◯, U+25EF (#2430)
* Support Unicode U+25EF \bigcirc

* Update documentation
2020-08-17 20:35:24 +09:00
Ron Kok
42cc5e507e feat: Support \phase (#2406)
* Support \phase

* Update screenshots

* Update documentation

* Add a11y test

* Edit MathML notation to phasorangle

* Move code to enclose.js

Co-authored-by: Kevin Barabash <kevinb@khanacademy.org>
2020-08-13 00:08:36 -04:00
Ron Kok
26e0a05221 feat: Support \mathstrut (#2416)
* feat: Support \mathstrut

* Update screenshots
2020-08-12 23:45:33 -04:00
Ron Kok
ab5936a6e7 feat: support {equation}, {equation*}, and {split} (#2369)
* Support {equation}, {equation*}, and {split}

* Update screenshots

* Allow {split} at top level

* Move equation column number check to to ParseArray

* Add token to ParseError

* Sharpen parameters passed to parseArray

* Add token information

* Update an {array} spec in screenshotter

* Adjust {array} screenshotter spec

* Make a non-strict error call when {array} argument specifies too few columns.

* Move context checks to a helper function.
2020-08-04 01:35:41 +09:00
ylemkimon
591bc7b4be feat(css): use postcss-preset-env (#2313)
* Use postcss-preset-env

Closes #1946.

* Remove CSS prefixes

They are added by autoprefixer, if necessary.
2020-08-03 13:19:09 +09:00
Ron Kok
2f37dc9104 feat: support {align}, {align*}, {alignat}, and {alignat*} (#2341)
* Support {align}, {align*}, {alignat}, and {alignat*}

* Specify display mode for screenshots

* Add bogus screenshots

* Some screenshotter progress

* Update screenshots
2020-07-29 00:02:08 +09:00
Ron Kok
80b0e3dc20 Support {gather} and {gather*} (#2183)
* Support `gather` and `gather*`

* Add bogus screenshots

* Add correct screenshots

* Fix typo

* Update screenshots

* Improve error handling

* Scope styles inside .katex{}

* Revert console.log to console.error
2020-07-27 06:56:39 -07:00
Ron Kok
05d1e7caf1 feat: support MathML \big, \bigg, \Big, and \Bigg (#2332)
* Support MathML \big, \bigg, etc

* Add stretchy attribute

* Update mathml-spec.js.snap

Co-authored-by: ylemkimon <y@ylem.kim>
2020-07-26 04:26:00 +09:00
ylemkimon
8a24907518 build(deps): update dependencies (#2301)
* Bump flow version

* Bump jest version

* Bump eslint version

* Bump rollup version

* Bump webpack version

* Bump misc dependencies and update lockfile

* Update lockfile

* Bump commander version

* Bump misc dependencies

* Bump istanbul version

* Bump docusaurus version

* Update lockfile

* Explicitly declare dependencies

* Bump caniuse-lite version

* Update lockfile

* Bump commander version

* Bump webpack and css-loader version

* Bump flow version
2020-07-25 11:38:29 -07:00
Ron Kok
e76857ec03 feat: support \angl and \angln (#2334)
* Support \angl and \angln

* Update screenshots

* Update documentation
2020-07-25 22:53:11 +09:00
Ron Kok
611fe6b698 Support \origof and \imageof (#2283)
* Support \origof and \imageof

* Fix documentation table

Co-authored-by: ylemkimon <mail@ylem.kim>
2020-07-17 17:20:23 +09:00
Ron Kok
2c5a3b8fdc Set MathML of \boldsymbol{textord} to bold, not bold-italic (#2299)
* Set \boldsymbol{textord} to bold, not bold-italic

* Finish adding files.
2020-07-11 21:10:11 -04:00
ylemkimon
d1c0468ef8 Reorganize some glyphs, simplify font selection, break \mathcal{123} (#2156)
* Reorganize some glyphs

* Remove mathdefault

Numerals are textord and it was never reachable.

* Use PUA for \imath and \jmath

* Update katex-fonts

* Update tests

* Update src/buildCommon.js

* Update screenshots

* Add comment regarding usage of PUA in \imath and \jmath

* Update fonts

Co-authored-by: Erik Demaine <edemaine@mit.edu>
2020-07-11 14:54:28 -04:00