Skip to content

Mathjax v2.3 potential features discussion

Peter Krautzberger edited this page Jul 2, 2014 · 1 revision

This page collects features that came out of a number of discussions on the mailing lists.

Accessibility

Localization

See MathJax v2.x potential feature: localization

Testing

Besides MathJax's own testing suite for our development, MathJax is being used in other environments.

To enable reliable use of MathJax, the ability to integrate MathJax testing into other environments is critical.

Test environment for content

A key MathJax goal is further the adoption of MathML in HTML. Content producers are still hesitant to output MathML in HTML and prefer images despite using an internal XML/MathML workflow.

Creating a test environment for authors to test their content will allow users to reliably switch to MathML output.

Additionally, content testing could allow content producers to find optimal configurations.

See Test environment for content

Speed testing

MathJax doesn't have any performance tests which makes it hard to track down misconfigurations and other speed related issues.

peter: Sean Hogan's code has some tests -- can we do something with it?

  • Provide basic statistics on what speed to expect
  • Create optimized configurations that are designed specifically for the content, loading all components that will be needed on the page right away
    • this would also be great for local installations where perceived speed issues are really only the inital load -- could we load all of MathJax on load? Could we optimize calculations given the browser context e.g. on a mobile device?

Internal testing

  • functional testing
  • regression testing
  • Fuzz-testing
  • jasmine, mocha

Using MathJax outside the DOM

In its current model, it depends on the DOM. This is a serious restriction for certain testing scenarios.

  • Simplify integration into javascript runners (Rhino, node.js etc)
  • Create sample scripts that pipe different pieces together.
    • Examples to build on
    • well documented
  • For example,
    • TeX2MathML
    • hooking MathJax into text/math editors
    • PDF output
    • epub output
    • png/SVG fallbacks via noscript tags
      • could even be helpful for kindle kf8 generation

TeX input enhancements

One of MathJax's core goals is emulation of (parts of) LaTeX. Currently, the basic TeX and LaTeX math-mode commands are supported.

User Interface

MathJax provides an interface to the mathematical content. This is key part to its accessibility goals but also goes beyond this to giving users better ways to find and interact with mathematical content.

  • optional effects to indicate MathJax content & abilities ("discoverability")
    • Functionality is already in place (move over etc) TODO Example link
    • Design Questions/Scenarios:
      • how to improve "visibility" of MathJax content, i.e., indicate those parts rendered with MathJax
      • create configurations for mobile, desktop, app scenarios to improve interaction (zoom, copy&paste, screen readers)

Latest Browser Versions and their bugs

MathJax is designed to support all modern browsers equally. One challenge is to deal with bugs in browsers. While we aim to solve them upstream, we have to deal with them downstream when necessary.

See Browser Bugs

Typesetting/Rendering

MathJax is, at its core, a MathML rendering engine. One of the key goals of MathJax is to enable users to get the same typesetting experience they would expect from a native browser implementation.

Fonts & Characters

Font and character support is a basic (and endless) problem of typesetting. MathJax currently supports its own fonts (based on Computer Modern) as both locally installed and in various webfont formats. STIX fonts are supported when locally installed. MathJax needs to know the metrics of the fonts involved to correctly calculate the CSS for the HTML-CSS output. This makes it hard to add more font options. MathJax also lacks a certain basic typesetting abilities that we were not yet able to implement.

  • Ability to extend coverage to additional characters
  • Make font switching easier (sansserif, different fonts, cf. mailing group requests)
  • font detection can always be improved...
  • STIX fonts future -- should we fork? Make svg outlines, woff on our own?
  • Browser extensions with WOFF fonts to speed up Mathjax. Can be easier to install than local fonts, especially on mobile platforms. (see this discussion)
  • Update some glyphs from the MathJax fonts used to stretch operators (see this issue and this dicussion)
  • Possible font additions to MathJax: stmary, asana, stix, dejavu
    • have correct utf 10 plane for math (not 11 like most e.g cambria math) hence accessible for browser
    • Easy: assuming local installations, just generate the metric data
    • Hard: make webfonts -- break them up, add special MJtest characters to every file -- could even remap utf planes so that fonts work in browsers
  • Investigate font mixing/switching, using document font for alpha-numeric characters.
  • Investigate Deja Vu fonts (planned "MathML 2.0" support).

MathML support

One of the key goals of MathJax is to enable MathML3 support in all modern browsers. We currently support almost all Presentation MathML and no Content MathML.

Missing MathML features.

Content Mathml. We should investigate David Carlisle's javascript based solution using his xslt.

Yet another David-Carlisle-based feature would be to use this for MathML to TeX output.

CSS

MathJax faces several issues with CSS interaction and support.

  • problem: Internet explorer has a limitation of 32 stylesheets. (See issue #60)
    • This is a problem on some content management systems that already use many stylesheets themselves
    • Possible solution: combine MathJax CSS into one
  • Could MathJax's SVG-CSS adapt to the page's HTML-based CSS?
  • Could MathJax's HTML-CSS adapt to the page's MathML-based CSS?

Plugins

MathJax is designed in a modular fashion, allowing both input and output plugins.

Additionally, other software with plugin models (such as CMS, LMS etc) have the need to incorporate MathJax into their systems as easily as possible.

PlugIN (x-into-MathJax)

  • Should we have a formal submission process, review process, repository?
  • Should we have a macro repository like TeX packages (cf. texvc)? Do we want to offer some macros on the CDN?
  • Should we host user contributed configurations on the CDN? For example, sponsors might find it useful, but also other interesting configurations could be of general interest.

PlugOUT (MathJax-into-y) and Helpers

  • check CHM compatibility (cf. mailing list)
  • Create minimal inline javascript to reduce load for pages with low/no math. The script should check the page for math, then load MathJax if needed.
  • Create ready-to-use releases // kits
    • Goal: kit ready to be integrated into apps
    • Example: for Readium Davide created a slim version that offered all functionality but had a small footprint
    • Mozilla/gecko & webkit specific.
    • could also be in the form of a small shell script, asking questions about what to remove from the full release
Clone this wiki locally