Implementation of MathML in Mozilla:
Status report of each tag
Page under construction
Todo: Live demos.
(Not all demo links below are working yet.)
Todo: Live demos.
(Not all demo links below are working yet.)
Contents
- Top-level <math> Element
- Token Elements
- General Layout Schemata
- Scripts and Limits
- Tables and Matrices
- Enlivening Expressions
- Extras (technology demos)
Notes:
- In general you can get additional stylistic effects by using CSS rules in the <style>...</style> element in the standard CSS way.
- You can also use the <script>...</script> element in the usual (X)HTML way to perform dynamic operations in the document, including the math content (see for example the interactive sizing in the demo of mspace).
Working demos so far:
mfrac,
mo,
mtable,
mspace,
mmultiscripts,
msqrt-mroot
Top-level Element
<math
-- top-level element
>>Demo...
%att-common %att-top-info %att-macros %att-display %att-mode - deprecated >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented by building upon the CSS block and inline box model code.
As a benefit of this, linebreaking is supported between children of
the <math> element.
Issues:
Some limitations exist due to the specifities of MathML. To prevent
expressions from breaking in a non-math aware manner and to ensure that
the stretching of stretchy operators is performed adequately, you may
need to wisely group related children using
<mrow>.
Token Elements
<mi
-- identifier
>>Demo...
<mn
-- number
>>Demo...
<mo
-- operator, fence, separator, or accent
>>Demo...
%att-common %att-font-info %att-operator-info >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<mtext
-- text
>>Demo...
<ms
-- string literal
>>Demo...
%att-common %att-font-info %att-lquote %att-rquote >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<mspace
-- space
>>Demo...
%att-common %att-size-info %att-linebreak />
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented as per MathML 1.x
Issues:
<mglyph
-- access arbitrary character glyph within a font
%att-alt %att-fontfamily %att-index />
Compatibility:
MathML 2.0
Status:
Not yet implemented in Mozilla.
Issues:
Can have portability problems because certain fonts may not necessarily
be identical across platforms and encoding types (e.g., TrueType vs. Type 1).
General Layout Schemata
<mrow
-- horizontally group sub-expressions
>>Demo...
%att-common >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
Mozilla doesn't linebreak within <mrow>.
Be sure to group your expressions wisely.
<mfrac
-- fractions
>>Demo...
%att-common %att-linethickness %att-numalign %att-denomalign %att-bevelled >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<msqrt
-- radicals
>>Demo...
%att-common > <mroot %att-common >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<mstyle
-- style change
>>Demo...
%att-common %att-font-info %att-operator-info %att-lquote %att-rquote %att-linethickness %att-scriptlevel %att-scriptsizemultiplier %att-scriptminsize %att-background %att-veryverythinmathspace %att-verythinmathspace %att-thinmathspace %att-mediummathspace %att-thickmathspace %att-verythickmathspace %att-veryverythickmathspace %att-open %att-close %att-separators %att-subscriptshift %att-superscriptshift %att-accentunder %att-table-info %att-rowspan %att-columnspan %att-edge %att-actiontype %att-selection >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
The scriptsizemultiplier attribute as well as the other non-supported
attributes have no effect.
<merror
-- error message
>>Demo...
<mpadded
-- adjust space around content
>>Demo...
%att-common %att-size-info %att-lspace >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<mphantom
-- make content invisible but preserve its size
>>Demo...
<mfenced
-- surround content with fences and possible separators between children
>>Demo...
%att-common %att-open %att-close %att-separators >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<menclose
-- enclose expression inside notation
%att-common %att-notation >
Compatibility:
MathML 2.0
Status:
Not yet implemented in Mozilla
Issues:
Scripts and Limits
<msub
-- attach a subscript to a base
>>Demo...
<msup
-- attach a superscript to a base
>>Demo...
%att-common %att-superscriptshift >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<msubsup
-- attach a subscript-superscript pair to a base
>>Demo...
%att-common %att-subscriptshift %att-superscriptshift >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<munder
-- attach an underscript to a base
>>Demo...
<mover
-- attach an overscript to a base
>>Demo...
<munderover
-- attach an underscript-overscript pair to a base
>>Demo...
%att-common %att-accent %att-accentunder >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
<mmultiscripts
-- attach prescripts and tensor indices to a base
>>Demo...
%att-common %att-subscriptshift %att-superscriptshift > <mprescripts/> <none/>
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
Tables and Matrices
<mtable
-- table or matrix
>>Demo...
%att-common %att-table-info >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented by leveraging on the CSS2 table model code
Issues:
Some limitations exist due to the specifities of MathML
<mtr
-- row in table or matrix
>>Demo...
%att-common %att-rowalign %att-columnalign %att-groupalign >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented by leveraging on the CSS2 table model code
Issues:
Some limitations exist due to the specifities of MathML
<mlabeledtr
-- labeled row in table or matrix
%att-common %att-rowalign %att-columnalign %att-groupalign >
Compatibility:
MathML 2.0
Status:
Not yet implemented in Mozilla
Issues:
<mtd
-- cell entry in table or matrix
>>Demo...
%att-common %att-rowalign %att-columnalign %att-groupalign %att-rowspan %att-columnspan >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented by leveraging on the CSS2 table model code
Issues:
- Some limitations exist due to the specifities of MathML
- The interpretation of rowspan and columnspan is meant to correspond with the similar attributes for HTML 4.01 tables. In particular columnspan="0" (resp. rowspan="0") means that that the cell spans all columns (resp. rows) from the current column (resp. row) to the last column (resp. row) of the table.
<malignmark
-- alignment markers
%att-common %att-edge /> <maligngroup %att-common %att-groupalign />
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Not yet implemented in Mozilla
Issues:
Enlivening Expressions
<maction
-- bind action to sub-expression
>>Demo...
%att-common %att-actiontype %att-selection >
Compatibility:
MathML 1.x,
MathML 2.0
Status:
Implemented
Issues:
Tips:
You can achieve more powerful dynamic effects in Mozilla by instead using the
combined breadth and depth of JavaScript and the Document Object Model down to
any individual MathML tag as demonstrated on this
JavaScripted MathML editor.
Extras (technology demonstration, non-portable)
>>Demo...
- title attribute as a tooltip (from XHTML)
- mixing MathML with other markups, e.g., <img>, <form>
- and more.
Roger B. Sidje <rbs@maths.uq.edu.au >