Commit Graph

3381 Commits

Author SHA1 Message Date
Davide P. Cervone
09aebdbf27 Refactor bounding box utility routines. 2015-03-04 12:51:09 -05:00
Davide P. Cervone
96e8ce8410 Maintain skew data in bbox. 2015-03-04 12:40:28 -05:00
Emily Eisenberg
278e4ae3c2 Upgrade katex to v0.2.0 2015-03-03 11:38:30 -08:00
Ben Alpert
c901083e59 Release 0.2.0 2015-03-01 18:44:07 -08:00
Emily Eisenberg
aaeab1200c Add MathML rendering to improve accessibility
Summary:
This adds support for rendering KaTeX to both HTML and MathML
with the intent of improving accessibility. To accomplish this, both
MathML and HTML are rendered, but with the MathML visually hidden and
the HTML spans aria-hidden. Hopefully, this should produce much better
accessibility for KaTeX.

Should fix/improve #38

Closes #189

Test Plan:
 - Ensure all the tests, and the new tests, still pass.
 - Ensure that for each of the group types in `buildHTML.js`, there is a
   corresponding one in `buildMathML.js`.
 - Ensure that the huxley screenshots didn't change (except for
   BinomTest, which changed because I fixed a bug in `buildHTML` where
   `genfrac` didn't have a `groupToType` mapping).
 - Run ChromeVox on the test page, render some math. (for example,
   `\sqrt{x^2}`)
   - Ensure that a mathy-sounding expression is read. (I hear "group
     square root of x squared math").
   - Ensure that nothing else is read (like no "x" or "2").
 - Ensure that MathML markup is generated correctly and is interpreted
   by the browser correctly by running
   `document.getElementById("math").innerHTML =
   katex.renderToString("\\sqrt{x^2}");` and seeing that the same speech
   is read.

Reviewers: john, alpert

Reviewed By: john, alpert

Subscribers: alpert, john

Differential Revision: https://phabricator.khanacademy.org/D16373
2015-03-01 18:33:20 -08:00
Ben Alpert
2349a1ed85 Merge pull request #127 from kevinb7/contrib_style_decls
Added rule to the style guide section for where to declare variables
2015-03-01 18:27:21 -08:00
Davide P. Cervone
625229566f Adjust merror CSS. 2015-03-01 18:12:45 -05:00
Davide P. Cervone
74e054397c Give mpadded elements the correct bbox. 2015-03-01 18:04:23 -05:00
Davide P. Cervone
8de643d619 Clear all useMMLspacing flags for mfenced. 2015-03-01 17:54:41 -05:00
Davide P. Cervone
f43f94a9e1 Update mpadded to work with new custom tags and line-height 2015-03-01 14:14:29 -05:00
Davide P. Cervone
c1402235ba Implement TeX fraction rules (still need to do bevelled fraction). 2015-03-01 12:56:17 -05:00
Davide P. Cervone
03ff8e5a25 Add TeX font parameters, and switch to TeX.axis_height rather than AXISHEIGHT. (Use in mtable will be fixed later.) 2015-03-01 10:48:53 -05:00
Davide P. Cervone
7b723003bf Fix up some CSS, and some other minor details. 2015-03-01 10:39:13 -05:00
Davide P. Cervone
6399338521 Preliminary change to custom tag names (for easier readability, and less chance of CSS bleed-through). 2015-02-27 10:55:43 -05:00
Davide P. Cervone
8f5677f2de Remove unwanted '+' from @font-face declaration. 2015-02-27 10:36:21 -05:00
Davide P. Cervone
a26b6426fe Make bounding boxes for character based on line-height:0 rather than line-height:normal (the other varried too much from browser to browser and failed to match the internal dimensions). The HFUZZ and DFUZZ may need to be adjusted, and may need to be made browser specific (argh), but that might be able to be done through CSS. 2015-02-27 10:35:06 -05:00
Davide P. Cervone
a05227995c Merge branch 'develop' into chtml. (Update to v2.5.1) 2015-02-25 18:44:54 -05:00
Davide P. Cervone
ad66602529 Merge remote-tracking branch 'dpvc/hotfix-2.5' into develop 2015-02-25 18:34:17 -05:00
Peter Krautzberger
574d4a3e96 Merge pull request #1065 from dpvc/hotfix-2.5
Release of v2.5.1
2015-02-25 17:39:43 +01:00
Davide P. Cervone
48b594afce Repack and recombine for v2.5.1 release. 2015-02-25 11:05:38 -05:00
Davide P. Cervone
960108c712 Fix version number of MathJax as a whole. 2015-02-25 10:59:15 -05:00
Davide P. Cervone
5f53a23e58 Force measurement of unknown characters, even when noReflows is active. 2015-02-25 10:59:01 -05:00
Davide P. Cervone
89d259dac4 Use line-height:0 to make alignments easier, and line-height:normal for character boxes. Add ascent/descent data to fonts, and use that to get correct bounding boxes for characters (requires fixing the fonts to get PC/Mac ascent/descent to be the same). 2015-02-25 10:36:53 -05:00
Davide P. Cervone
22a19a18e2 Use variables for LINEH and LINED values. 2015-02-23 14:31:08 -05:00
Davide P. Cervone
b9c5ff1d81 Get height and depth for ALL character boxes (so large ops, etc, have correct size, since line-height kills that) 2015-02-23 12:36:51 -05:00
Davide P. Cervone
8f0e833ba6 Remove integral hack that was needed for Times, and don't add TeX space to mspace elements. 2015-02-23 12:11:56 -05:00
Davide P. Cervone
adfa16e3ae Center large ops, and add preliminary italic correction support. 2015-02-23 12:01:48 -05:00
Davide P. Cervone
909140b314 Make axis height a variable. 2015-02-23 11:26:50 -05:00
Davide P. Cervone
13dff04736 Improve handling of <mo> elements: find correct large operator font (still need to handle centering); handle accent substitution (still need to fix munderover to get spacing right). 2015-02-23 11:19:37 -05:00
Davide P. Cervone
95c029ddd3 Add some missing caches, add some space characters (so they don't have to be special cased in the text handling), and fix up some variant chaining. 2015-02-23 11:15:57 -05:00
Davide P. Cervone
3c6dcf717b Clean up style formatting. 2015-02-23 10:02:14 -05:00
Davide P. Cervone
8e1e853346 Implement TeX spacing (as well as MathML spacing) 2015-02-23 09:55:37 -05:00
Davide P. Cervone
2837c5f114 Preliminary support for TeX fonts (currently only uses local fonts, and doesn't load data not already in the fontdata file. 2015-02-22 18:54:22 -05:00
Davide P. Cervone
b2f1a0f830 Better handling of scaling in fractions. Use a variable for the script scaling factor. Clean up some bounding box computations. 2015-02-22 18:51:21 -05:00
Davide P. Cervone
1763ac7188 Handle propagation of bounding box sizes better. 2015-02-22 10:59:35 -05:00
Davide P. Cervone
4ef56bb007 Better fraction layout (works in XHTML). 2015-02-22 10:54:33 -05:00
Davide P. Cervone
1cbf00d54d Better handling of scriptlevel 2015-02-22 10:46:10 -05:00
Davide P. Cervone
8623acf05a Support old-style background and color attributes 2015-02-22 10:41:13 -05:00
Davide P. Cervone
665f56aab1 Repack and recombine changes for v2.5.1 2015-02-20 09:50:28 -05:00
Davide P. Cervone
6286c63239 Fix var problems identified by YUI. 2015-02-20 09:47:47 -05:00
Davide P. Cervone
705f738228 Merge branch 'issue1053' into hotfix-2.5. Issue #1053. 2015-02-20 09:26:26 -05:00
Peter Krautzberger
627ab61df8 Update with recent fixes from @davidcarlisle
Fixes #1024
2015-02-20 09:23:05 -05:00
Emily Eisenberg
fd18f6979e Add an optional settings argument to render calls
Summary:
Add the ability to pass in options to the render calls which contain information about the parse. This information is passed around to the parser and builder, which parse and render differently depending on the options. Currently, this includes an option to render the math in display mode (i.e. centered, block level, and in displaystyle).

Also added some changes to make it easier to add new data to functions (now that new data doesn't need to be copied into the ParseFuncOrArg data structure, it is looked up when it is needed) and has more sane support for the `'original'` argType (as suggested by pull request #93).

Test Plan:
 - Make sure tests and lint pass
 - Make sure huxley screenshots didn't change, and new screenshot looks correct

Reviewers: alpert

Reviewed By: alpert

Differential Revision: https://phabricator.khanacademy.org/D13810
2015-02-19 15:26:57 -08:00
Davide P. Cervone
f87cb5cf42 Bump version numbers for updated files 2015-02-19 17:43:07 -05:00
Davide P. Cervone
81131da3fc Handle variant within handleText() rather than in handleToken(). 2015-02-19 09:28:47 -05:00
Davide P. Cervone
201b5d5987 Merge branch 'develop' into chtml 2015-02-19 09:01:10 -05:00
Davide P. Cervone
13ebde0937 Correct computation of TeX class for maction elements (handle embellished operators correctly). 2015-02-19 08:59:23 -05:00
Davide P. Cervone
3308957304 Fix some comments. 2015-02-19 08:58:01 -05:00
Emily Eisenberg
d61a04c80d Fix up small problems with #126
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
2015-02-18 16:28:05 -08:00
Emily Eisenberg
174af23734 Merge pull request #126 from jmeas/hi-symbols
The Big Symbols PR
2015-02-18 16:25:41 -08:00