|
|
<link href="resultTable.css" rel="stylesheet"></link>
|
|
|
|
|
|
# MathML Support in Browsers and MathML output Jax
|
|
|
|
|
|
## Introduction
|
|
|
|
|
|
This page describes MathML support in browsers and how well they display the
|
|
|
code generated by MathJax. Compared to MathJax the browser's MathML rendering
|
|
|
engines are generally faster but of lower quality.
|
|
|
|
|
|
It is intended to serve as a help for people who
|
|
|
have plan to use mathematical formulas in their applications or Web content
|
|
|
and are trying to find the best solution between a MathML output or other
|
|
|
[output formats provided by MathJax](http://www.mathjax.org/docs/2.0/output.html#mathjax-output-formats).
|
|
|
It is also a way for the MathJax team to decide on which browser the MathML
|
|
|
output processor should be enabled by default and for the users to determine
|
|
|
which rendering mode to choose. This document may eventually encourage browser
|
|
|
vendors to improve their MathML layout engines by suggesting them to focus on
|
|
|
MathJax's needs.
|
|
|
|
|
|
## General remarks
|
|
|
|
|
|
## Internet Explorer
|
|
|
|
|
|
Internet Explorer does not support MathML and there are no apparent plans to
|
|
|
add such support, although other of their products like Microsoft Word have
|
|
|
long been able to handle this language.
|
|
|
|
|
|
To remedy this situation, Design Science provides the MathPlayer plug-in which
|
|
|
gives a good MathML support to Internet Explorer. The Design Science and MathJax
|
|
|
teams collaborate to ensure that MathPlayer works well with MathJax and keep
|
|
|
MathPlayer's layout engine the default renderer for Internet Explorer.
|
|
|
|
|
|
MathJax works with MathPlayer to make math accessible to screen readers, to
|
|
|
screen magnifiers, and to learning disability software. See
|
|
|
[Accessible Pages with MathJax](http://www.mathjax.org/resources/articles-and-presentations/accessible-pages-with-mathjax/) for details.
|
|
|
|
|
|
## Firefox
|
|
|
|
|
|
Firefox has a good MathML support and should work well with the code generated
|
|
|
by MathJax in most situation provided you
|
|
|
[install mathematical fonts](https://developer.mozilla.org/en/Mozilla_MathML_Project/Fonts). However because of some rendering issues, the MathJax team
|
|
|
[decided to disable Firefox's native MathML by default](http://www.mathjax.org/2012/03/02/news/mathjax-2-0-and-the-default-rendering-in-firefox/). In particular
|
|
|
we do not recommend to use this rendering if you plan to make heavy use of
|
|
|
equation labelling or formula linebreaking.
|
|
|
|
|
|
## Webkit
|
|
|
|
|
|
Webkit has an experimental MathML implementation which is enabled in Safari but
|
|
|
the support is still limited and the rendering quality not very high. This
|
|
|
implementation has not passed Google's security review and so is not integrated
|
|
|
yet in Chrome.
|
|
|
|
|
|
## Opera
|
|
|
|
|
|
Opera has a support for a subset of MathML implemented using a
|
|
|
[CSS stylesheet](http://www.w3.org/TR/mathml-for-css/). This implementation
|
|
|
design implies [several issues](http://www.w3.org/TR/mathml-for-css/#d2e165),
|
|
|
including a bad quality. This may be acceptable for elementary mathematical
|
|
|
notations but is not recommended for complex formulas or in cases where the
|
|
|
rendering quality is an essential point.
|
|
|
|
|
|
# Supported input commands and MathML elements
|
|
|
|
|
|
We give tables indicating support for various MathJax input commands provided
|
|
|
by the TeX and AsciiMath processors and mention potential issues. In theory,
|
|
|
one can use the MathML input processor to enter arbitrary input allowed by the
|
|
|
MathML 3 recommendation. We give a general overview for elements, attributes or
|
|
|
general MathML features supported by MathJax. For details, please read the
|
|
|
browser vendors documentation.
|
|
|
|
|
|
## TeX input processor
|
|
|
|
|
|
<table>
|
|
|
|
|
|
<tr>
|
|
|
<th>Command</th>
|
|
|
<th>MathPlayer</th>
|
|
|
<th>Firefox</th>
|
|
|
<th>Webkit</th>
|
|
|
<th>Opera</th>
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
<td>`\sqrt`</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
</tr>
|
|
|
|
|
|
</table>
|
|
|
|
|
|
## AsciiMath input processor
|
|
|
|
|
|
<table>
|
|
|
|
|
|
<tr>
|
|
|
<th>Command</th>
|
|
|
<th>MathPlayer</th>
|
|
|
<th>Firefox</th>
|
|
|
<th>Webkit</th>
|
|
|
<th>Opera</th>
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
<td>sqrt</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
</tr>
|
|
|
|
|
|
</table>
|
|
|
|
|
|
## MathML input processor
|
|
|
|
|
|
<table>
|
|
|
|
|
|
<tr>
|
|
|
<th>Command</th>
|
|
|
<th>MathPlayer</th>
|
|
|
<th>Firefox</th>
|
|
|
<th>Webkit</th>
|
|
|
<th>Opera</th>
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
<td>`<msqrt>`</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
<td>Operator Stretching</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Partial</td>
|
|
|
<td class="no">No</td>
|
|
|
</tr>
|
|
|
|
|
|
<tr>
|
|
|
<td>Embellished Operators</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">Yes</td>
|
|
|
<td class="yes">No</td>
|
|
|
<td class="no">No</td>
|
|
|
</tr>
|
|
|
|
|
|
</table> |