Commit Graph

134 Commits

Author SHA1 Message Date
Alex Lopatin
50c1242147 Added \! (negative thin space)
Test Plan: Parses and renders locally. \!\, and \,\! are now no-ops.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D6395
2014-01-28 16:20:14 -08:00
Ben Alpert
fb58ceaea0 Shrink space, make exponents look more reasonable
Test Plan:
$x' x^2$
2014-01-13 22:57:50 -08:00
Ben Alpert
538beaf737 Add hacky left margin to superscripts
Auditors: emily, eater
2014-01-13 19:09:35 -08:00
Ben Alpert
1dee172e5d Add parens to mixins to avoid including in .css
Auditors: emily
2014-01-13 19:09:31 -08:00
Ben Alpert
20994d7351 Prevent line breaks immediately after math
For whatever reason, `<inline-block/>,` allows a break in between the block and the comma. `<nobr><inline-block/></nobr>,` doesn't.

Auditors: emily
2013-12-16 05:46:04 -08:00
Emily Eisenberg
8a8a9505cb Fix sizing
Make sizing blocks inline-block

Auditors: alpert
2013-08-22 17:14:55 -07:00
Emily Eisenberg
387c159a8e Add sizing functions (like \small)
Summary:
Right now, when the size gets bigger, this still doesn't work, so there's a
check to prevent that. However, functions that go smaller (like `\small`,
`\tiny`, etc) do work. Also, we can't seem to use the sizing functions inside
of fractions (so something like `\dfrac{\small\frac{x}{y}}{z}` doesn't work).
However, the most prominent use case is `\small` as the outer-most object, so
this is still helpful. This commit has the parsing and stuff to handle all of
it, but it'll throw an error if you try to do something that doesn't work. (For
the record, "doesn't work" means "looks bad", not "throws an unexpected
error").

Test Plan:
Make sure things like `\small x` work, and things like `\Huge x` and
`\frac{\small x}{y}` don't.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3619
2013-08-21 20:22:24 -07:00
Emily Eisenberg
f58f582aa5 Don't import fonts.css
Otherwise, when we copy into the main repo, it messes things up.

Auditors: alpert
2013-08-15 12:07:16 -07:00
Emily Eisenberg
920dd0bef9 Add some AMS characters
Summary:
\nleq and \ngeq are AMS characters, so add support for parsing and
showing those. Also, add font metrics from the ams_regular font.

Test Plan:
View `\ngeq \geq`, make sure that they look the same but with a
slash through `\ngeq`. View `a \ngeq b`, make sure there's the right spacing
for a rel.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3547
2013-08-14 17:39:24 -07:00
Emily Eisenberg
0a3a2271f4 Add ability to calculate heights/depths
Summary:
This diff does a couple different things:

 - There is now a metrics/ folder, which contains the property files describing
   the metrics if the fonts, as well as a script for reading and printing the
   metrics in javascript.
 - Fractions and superscripts/subscripts are now rendered in slightly different
   ways now (notably, no use of inline-table). This allows for much more precise
   positioning of the superscripts, subscripts, numerators, and denominators,
   while still having an appropriate baseline. Also, there is no longer a
   sup/sub/supsub distinction, there are only supsubs with null sup/sub.
 - Using the new font metrics and by implementing the formulas found in The TeX
   Book, Appendix G, the heights and depths of all of the sub-expressions in a
   formula are now calculated. These are currently used to:
    - Correctly position superscripts, subscripts, numerators, and denominators
    - Adjust the height and depth of the overall expression so it takes up the
      appropriate space
 - Because we have to add attributes (height and depth) to every attribute, I
   have changed the way DOM nodes are assembled. Now, instead of assembling the
   DOM elements inline (which is a problem because we need to track
   height/depth, and we shouldn't (and can't in IE 8) attach raw attributes to DOM
   nodes), we assemble a pseudo-DOM structure with the extra information, and
   then actually assemble it at the very end.

The main page also now has an updated expression to show off and test the new
and improved parsing.

Test Plan:
View the main page, make sure that the expression renders. Make sure
that the tests pass. Make sure that expressions have the correct calculated
height (this is most easily tested by viewing them on the main page and making
sure that the top of the expression lines up with the bottom of the input box).

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3442
2013-08-13 18:16:43 -07:00
Emily Eisenberg
7e5e6a90d3 Add the \KaTeX command
Summary:
Add a command to print out a TeX-style logo for KaTeX. I think the
code is okay, but suggestions for the design of the logo are most welcome (I'll
post screenshots soon).

Test Plan: Make sure \KaTeX renders, and the tests still succeed.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3443
2013-08-09 20:51:05 -07:00
Ben Alpert
60ddb2d903 Apply nowrap to .katex
Fixes T1243.

Auditors: emily
2013-08-04 12:55:29 -07:00
Emily Eisenberg
62b4e68a1c Make safari only break on fractions
Summary: Also, make errors on the initial parse not prevent further
parses.

Auditors: alpert
2013-07-25 19:15:16 -07:00
Emily Eisenberg
138facd785 Add new fonts, with correct font face names
Auditors: alpert
2013-07-23 16:30:14 -07:00
Emily Eisenberg
383ca01434 Sync with Khan-exercises
Summary:
Add some things in to make this more useful to khan-exercises.
Notably, make KaTeX.process create and clean up its own .katex node, and rename
.mathmathmath -> .katex.

Test Plan: Make test, make sure the main page still renders stuff

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3061
2013-07-17 15:43:55 -07:00
Ben Alpert
ed9d62d98c Inherit fraction bar color from surrounding text
Test Plan: Fractions look okay in Chrome, Firefox, IE.

Reviewers: emily

Reviewed By: emily

Differential Revision: http://phabricator.khanacademy.org/D3051
2013-07-14 22:41:03 -07:00
Ben Alpert
e29fe0c683 Grosser color support for prettier results
Test Plan: `\orange{x}\blue{-4}`, `\orange{x-}\blue{-4}` look the same after desaturation as `x-4` and `x--4`. In addition, `\orange{x}\blue{{-4}}` looks appropriately atrocious (i.e., has no space whatsoever).

Reviewers: emily

Reviewed By: emily

Differential Revision: http://phabricator.khanacademy.org/D3050
2013-07-14 21:34:05 -07:00
Ben Alpert
e472b0ba9d Add TeX style support
Test Plan:
`\blue\frac12 + \frac{2(y-z)}{2+\frac1{7+\frac31}} \div \orange{\arctan x^{2+\frac43}_{2}} * 2^{2^{2^2}}` looks reasonable, as does
`\blue\frac12 + \dfrac{2(y-z)}{2+\frac1{7+\frac31}} \div \orange{\arctan x^{2+\frac43}_{2}} * 2^{2^{2^2}}`.

Reviewers: emily

Reviewed By: emily

Differential Revision: http://phabricator.khanacademy.org/D3047
2013-07-14 16:55:46 -07:00
Emily Eisenberg
a831e94a51 Remove dependency on underscore
Summary:
Remove all uses of underscore. For the things we actually need, make a
"util" file and put them in there.

Test Plan:
Make sure the test still succeed, and that the main page still
works.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3043
2013-07-13 20:42:19 -07:00
Emily Eisenberg
4122fa2b99 Rewrite the parser
Summary:
Make our own parser that doesn't use jison, so that we can handle
funny TeX syntax, and to make it smaller.

Test Plan: Make sure the tests pass with the new parser.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3029
2013-07-12 23:16:30 -07:00
Emily Eisenberg
adb8b5d671 Rename everything to KaTeX
Summary: Rename all instances of mjlite -> katex

Test Plan: Run the local server, make sure things still work.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D2977
2013-07-10 14:08:50 -07:00
Emily Eisenberg
42cc8b1a12 Add ops
Summary: Add named functions like \sin, \cos, etc.

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D51
2013-07-09 22:04:33 -07:00
Emily Eisenberg
29fde5d364 Correctly style fracs as inners
Summary:
Turn fracs into inners like they should be, instead of using the
previous dumb hack.

Test Plan: Make sure \dfrac still works

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D50
2013-07-09 21:05:14 -07:00
Emily Eisenberg
a0eff74be3 Add punctuation
Summary: Add punctuation, like ",", ";", and "\colon"

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D49
2013-07-09 21:01:04 -07:00
Emily Eisenberg
66a43f551d Add llap and rlap
Summary:
By the powers of Greyskull (and maybe css) we have vanquished the
great and powerful llap! All hail!

Test Plan: Add some \llap and \rlap. Make sure it's positioned correctly.

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D48
2013-07-09 16:02:44 -07:00
Emily Eisenberg
b016015d4e Sync styles with khan-exercises
Summary:
Get the styles into a form that they can be directly copied over to
khan-exercises, with no changes. Mostly just changing #math to .mathmathmath
and adding a font style and size.

Test Plan: Make sure that the local test still works.

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D47
2013-07-09 15:53:35 -07:00
Emily Eisenberg
2478a385ae Add spacing functions
Summary: Add \qquad, \quad, \;, etc. Fixes T7

Test Plan:
Add some spacings. Make sure that they look reasonable widths.
Especially, if you add a space (`\space`), make sure that it doesn't disappear
because the spacing disappears.

Reviewers: spicyj

Reviewed By: spicyj

Maniphest Tasks: T7

Differential Revision: http://phabricator.benalpert.com/D46
2013-07-09 15:32:54 -07:00
Emily Eisenberg
a30a39247f Add a thin space around fractions
Auditors: spicyj
2013-07-09 15:31:09 -07:00
Emily Eisenberg
8d85aa464e Add rels
Summary: Add a bunch of rels, and their css and stuff.

Test Plan: Add some rels. Rejoice.

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D45
2013-07-09 00:57:03 -07:00
Ben Alpert
d5c2a6fb38 Make things sort of work in IE8
Summary:
Uploaded the OTFs from eab3322d to fontsquirrel with the following config:

```
{"mode":"expert","formats":["ttf","woff","eotz"],"tt_instructor":"default","fix_vertical_metrics":"Y","fix_gasp":"xy","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"none","subset_custom":"","subset_custom_range":"","css_stylesheet":"stylesheet.css","filename_suffix":"","emsquare":"2048","spacing_adjustment":"0"}
```

Now we have this beauty in IE8:

{F213}

and it looks similar in Chrome. Now I guess we just need square roots so we can stop disseminating the wrong quadratic formula.

Reviewers: xymostech

Reviewed By: xymostech

Differential Revision: http://phabricator.benalpert.com/D43
2013-07-08 22:48:14 -07:00
Emily Eisenberg
2c067161df Add color support
Summary: Not true `\color`, but `\blue`, `\red`, etc.

Test Plan:
Add `\blue`, etc around stuff, see that it makes pretty colors
appear.

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D44
2013-07-08 15:48:56 -07:00
Emily Eisenberg
f97aad13b7 Make large fractions actually work
Summary:
Also, rename it to '\dfrac', because it's more like a display fraction

Auditors: spicyj
2013-07-07 22:43:16 -07:00
Emily Eisenberg
eab3322db3 Use our own local (awesome) fonts
Summary: Build or own fonts from MathJax's repo, and use those instead.

Test Plan: Use the new fonts, enjoy!

Reviewers: spicyj

Reviewed By: spicyj

Differential Revision: http://phabricator.benalpert.com/D41
2013-07-07 21:20:22 -07:00
Ben Alpert
4bc599966f Create node server to replace 'make watch'
Reviewers: xymostech

Reviewed By: xymostech

Differential Revision: http://phabricator.benalpert.com/D38
2013-07-05 22:55:10 -07:00