Skip to content

Mathjax backlog

pkra edited this page Sep 5, 2014 · 4 revisions

We collect potential future features. Note: This is not a discussion area but a presentation area for review.

Completing MathML 3 support

  • implement the elementary math elements (mlongdiv, mstack etc)
  • implement missing mtable attributes
    • rowspan, colspan
  • allow HTML5 foreign content
    • tolerate HTML in mtext
    • switch to HTML parser
  • implement right-to-left support
  • improve linebreaking support
    • align@id
    • linebreaking characters
    • linebreaking in token elements
    • inline math linebreaking support
  • improve annotation-xml support
    • embed annotations in a more HTML5 way (OA, ARIA etc)
    • use specific annotations as preview (image, TeX etc)
  • implement in-table alignments

Seamless MathJax

Use ShadowDOM/webcomponents to make MathJax appear as a seamless polyfill.

  • Hide output in ShadowDOM
  • leave (author preferred) source in the LightDOM
  • use mutation observers to pickup rendering
  • CSS inheritance
    • getComputedStyle
    • remapping to SVG

Improved loading & typesetting behavior

  • lazy typesetting extension
    • typeset the viewport first, followed by rest of page
  • linebreaking for responsive design extension
    • lazy typesetting after viewport size changes (tablet rotation etc)
    • leveraging server-side preprocessing: using MathJax-node to produce MathML line-broken for desired viewport sizes, pick up viewport size before rendering, render the fitting equation
  • pre-loading extension
    • prefetch remaining MathJax components after typesetting is complete
  • tiny fetcher script to check for math in the page and load MathJax
  • improve build tools
    • evaluate switching to JS tools (grunt, gulp etc)
    • simplify combined configuration building
    • enable single-file builds
    • investigate webservice for building combined configurations
  • investigate local storage

Accessibility and UI

See also Accessibility goals, this user group discussion

  • Improve UI (MathJax Menu) accessibility
    • enable call of menu from keyboard navigation
    • use modern ARIA
  • finalize discovery-mode of the UI
    • haze
    • marker
      • switch to hamburger icon? generic math symbol? (like sections on docs or github markdown)
    • smoother menu interaction (roll under/over etc)
    • optional permanent marker
  • speech-text extension
    • collaborating with other open source solutions from Benetech or Google ChromeVox
  • embedding alternative source formats of math (TeX, MathML, OpenMath, computer algebra notation)
  • Add APIs for accessibility tools (AT) to interact with MathJax rendering as if it was native MathML. This includes
    • handing MathML over to AT
    • enable user navigation
    • enable synchronized highlighting
    • embed speech-text generation from AT
    • interact with accessibility preferences coming from AT
    • compatibility with user style sheets
  • Investigate ShadowDOM / web components potential for accessibility
  • improve copy&paste
    • share mechanisms (webintents, mathproc://)
    • microdata support (rdfa, schema.org)
    • copy&paste with web components
  • menu extensions
    • search menu (enabling math search engines such as symbolab, wolfram alpha, Springer LaTeX search etc)
  • Globally placed menu (incl. an accessibility menu for options such as "present speech-text" vs "present source" etc)

Speed Improvements

  • Use local storage to reduce need for re-rendering content.
  • collaborate with browser developers to improve MathJax speed

Font improvements

  • switch to CSS Font Loading Module Level 3 on Chrome 35+
  • supplementing character coverage
  • if the selected font does not cover a Unicode character, load a second font to provide it.
  • enable dev-tools to produce such "mixed" fontdata (e.g., "combine Font X with fallbacks from STIX-MathJax").
  • allow font mixing
    • switch fonts within document (e.g., some equations use STIX, others Neo Euler perhaps depending on the CSS of their context (e.g., textbook problems vs solutions))
  • generic font support in HTML output
    • Support for ubiquitous commercial fonts (local installation only)
      • Lucida Sans, Apple symbol fonts, Arial unicode

Input improvements

  • Create jqmath input jax
  • Improve asciimath input
    • Improve asciimath to MathML converter
    • Create asciimath to TeX converter
  • Create MathJax-TeX-to-Content-MathML generator

Output improvements

  • improve our “tweaked” native MathML output that works around browser implementation deficiencies.
  • investigating new output formats
    • canvas

integrate graphical component

  • expand internal format (e.g., with SVG)
  • move beyond MathML 3
    • diagrams, graphs, etc.
    • visualizations
    • dynamic graphics (e.g., commutative diagram being drawn)
    • enable manipulation of diagrammatic content (e.g. allow reader to rearrange nodes of a graph)

Extensions

  • list of requested extensions / ideas / potential user contributions
    • LaTeX packages
      • braket
      • siunitx
      • bordermatrix (needs colspan/rowspan?; requested on various SE sites)
      • algorithms, listings
      • babel macros (e.g., Russian (see 6.4) via twitter)
      • fontpackages (stmaryd, wasysym etc) via unicode
      • Q-circuit (via xyjax) see [this discussionhttps://groups.google.com/forum/?fromgroups#!searchin/mathjax-users/macros/mathjax-users/ORLZ3Fm1qIs/8kNkSYz_XWgJ
    • mathapedia (pstricks)
    • SageTeX
    • chemfig
    • Feynman diagrams (cf. http://photino.github.io/jquery-feyn/index.html)
    • chemdoodle, kitware (chemistry)
    • LaTeX macros for MathML constructs (mtable)
      • options for TeX packages to benefit from things that are easier in MathML, e.g, equalcolumns/rows

Documentation

Internal Testing

  • improve fuzz testing
  • integrating MathJax testing into other testing environments

Outreach activities

  • MathJax workshop / conference
  • MathJax community meetups
  • Math accessibility workshop (AIM)
  • MathJax in education (web literacy, authoring, annotation)
  • MathJax in authoring tool chains for research and publishing
  • Native browser MathML development in Gecko and WebKit
  • Develop a long term project that would allow for Gecko/Firefox and WebKit/Safari development.
Clone this wiki locally