You are currently viewing a snapshot of www.mozilla.org taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to www.mozilla.org, please file a bug.



Implementation of MathML in Mozilla:
Status report of each tag

Page under construction
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... 
 %att-common
 %att-font-info
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<mn    -- number
>>Demo... 
 %att-common
 %att-font-info
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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... 
 %att-common
 %att-font-info
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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... 
 %att-common
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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... 
 %att-common
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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... 
 %att-common
 %att-subscriptshift
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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... 
 %att-common
 %att-accentunder
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<mover    -- attach an overscript to a base
>>Demo... 
 %att-common
 %att-accent
>                           
       
Compatibility:  MathML 1.x, MathML 2.0
Status:  Implemented
Issues: 
<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>