Accessibility Features

MathJax’s mission is to provide the best tools for mathematics on the web. Naturally, this means for everyone, and thus accessibility is an important concern for us.

MathJax User Interface

The MathJax user interface currently consists of the MathJax Menu and the various MathJax messages, such as syntax error messages from the TeX input processor.

The MathJax Menu follows WCAG 2.0 guidelines. Each expression typeset by MathJax is included in the tab order by default (though this can be disabled via a menu option). When an expression is focused, the menu can be triggered via the space or menu key and navigation in the menu is possible using the arrow keys. A menu selection can be made using the Enter or Return key, and the menu can be close without making a selection using the Escape or Esc key.

Note

The user interface for version 2 was localized to over 20 languages and many more partial localizations thanks to the fantastic support of the community at TranslateWiki.net. Localization is not yet available in version 3, but is on the roadmap for a future version.

MathJax Accessibility Extensions

The MathJax accessibility extensions provide several tools and features that enable universal rendering of mathematics on the web. They enhance rendering both visually and aurally. In particular, they provide:

  • An innovative responsive rendering of mathematical content through collapsing and exploration of subexpressions.

  • An aural rendering tool providing on-the-fly speech-text for mathematical content and its subexpressions using several user-selectable rule sets.

  • Tactile rendering enabling Nemeth or Euro Braille output on a connected Braille display.

  • An exploration tool, allowing for meaningful exploration of mathematical content including multiple highlighting features, magnification, and synchronized aural rendering.

The accessibility extensions attempt to support the widest selection of browsers, operating systems, and assistive technologies, as they only require the use of well-supported web standards such as WAI-ARIA, in particular, the aria-label and aria-braillelabel attributes, among others. We test the assistive tools on 13 different browser/os/screen-reader combinations to ensure that the user experience is an seamless as possible.

In version 4, the extensions for generating speech and exploring expressions are included an enabled in all the combined components so that your pages should be accessible to users with screen or Braille readers automatically in that case. (In version 3, the user had to activate the accessibility features to turn them on.)

If you are making a custom configuration, you can include ui/menu to enable the contextual menu, or you can include any of the a11y extensions explicitly. In particular, the a11y/explorer component makes expression exploration possible, and it loads the a11y/speech component automatically.

See the Accessibility Extensions Options section for details about how to configure the extensions.

Note

In v3, the a11y/assistive-mml was included and enabled in the combined components. That is no longer the case in v4, which now uses the speech and explorer components instead. Users can still use the MathJax contextual menu to turn on the hidden MathML and turn off the semantic enrichment that underlies the speech and explorer components if they want to have a similar experience to the one from v3.

Screen Reader Support

Screen reader support in Mathjax v3 was based on the a11y/assistive-mml component, which embedded a MathML representation of each expression that was visually hidden, but available to screen readers, in addition to its typeset version that was visible for sighted users, but hidden from screen readers. The quality of MathML support in screenreaders varies greatly, with different levels of MathML feature support, different speech rule sets, and different voicing technologies.

This approach only worked with those screen readers that understand MathML, and even then, the experience was different depending on the screen reader and browser that was being used. As screen-reader and browser versions changed, they sometimes failed to work properly with the hidden MathML, and it was difficult to maintain this feature.

In version 4, screen reader support is now being handled through the a11y/explorer and a11y/speech components of MathJax. These tools generate speech strings from the math expressions in the page and inserts them via aria-label and aria-braillelabel attributes so that screen readers will be able to voice the mathematics regardless of whether they understand MathML or not. The a11y/semantic-enrich component analyses the expression and improves the internal representation to make screen reading and line breaking more accurate.

The explorer component then makes it possible to investigate an expression interactively by allow the user to descend into the expression and read it term by term rather than all at once. The code that handles the exploration has been rewritten in v4 to make it more compliant with the ARIA standards, and to make it work more reliably across browsers, operating systems, and screen readers so that everyone should have an effective experience.

The explorer is designed to:

  • Work across the major browser/OS/screen-reader combinations.

  • Properly read the full expression when reading the whole page or stepping through the page sentence-by-sentence (or by other units).

  • Automatically enter “focus mode” when the expression is focused via tabbing or clicking, in screen readers that have separate focus/browser modes.

  • Allow control over the description of the math (e.g., “clickable math”) used during reading and focusing (via a menu option).

  • Voice the phrase “press H for help” when the math is first focused (but this can be turned off by a menu preference).