MathML Demo: <mtable> - tables and matrices

As a visual aid, the examples deliberately draw attention to the math axis and the baseline:
----------------------- this is the math axis
..................... this is the baseline

  1. External vertical align is center ---... 1 22 333 4444 x 55555 666666 a b c 7777777 11 ...--- , cols arg is "|r|c|l|", \hline's above and below. When align="center" or align="baseline", the middle of the table coincides with the baseline.
  2. External vertical align is axis ---... 1 22 333 4444 x 55555 lim n f-1 i=1 n Ai rowspan=2 here xn + yn n columnspan=2 here 7777777 11 ...--- , columnlines="solid", rowlines="dashed solid dashed". By default -- when the align attribute is not set, or when align="axis", the middle of the table coincides with the math axis.
  3. External vertical align is top ---... 1 22 333 4444 55555 x + 1 666666 a b c 7777777 11 cols arg is"r|c:l".
  4. External vertical align is bottom ---... 1 22 333 4444 55555 666666 x 2 a b c 7777777 11 cols arg is "r|cl". MathML doesn't specify how to only display certain sides of the table border, as in "|rcl", but these can be obtained in Mozilla using the 'border' property of CSS, e.g., "|rcl" can be achieved with the CSS declaration "mtable { border-left: solid thin }".
  5. Math axis test, using externally aligned arrays inside symmetric fences. ---... [ 1 666666 x 2 c axis ] [ 1 666666 x 2 c center ] + 1 55555 x + 1 c bottom + 1 4444 x c top + 1 4444 4444 4444 x center post text.
  6. Now for a display ---... 1 4444 4444 4444 x 7777777 text after displayed math. Do you see which vertical alignment is set on that table?
  7. Example of \begin{matrix} ---... 0 1 1 0 with 3 \hline's.
  8. Example of \begin{smallmatrix} ---... 1 2 3 4 5 obtained with scriptlevel="+1".
  9. Example of \begin{pmatrix} ---... ( 0 - i i 0 ) with an \hline after the first row.
  10. Example of \begin{bmatrix} ---... [ 1 0 0 - 1 ]
  11. Example of \begin{vmatrix} ---... | a b c d |
  12. Example of \begin{Vmatrix} ---... 0 1 0 11 0 111 0 1111 0
  13. Example of \begin{Bmatrix} ---... { 1 0 1 0 11 }
  14. A fenced matrix and the equivalent \begin{bmatrix} ---... [ a b b c c c d d d d ] [ a b b c c c d d d d ] .
  15. A table with align="axis2" to anchor the table externally w.r.t. the axis of the second row ---... ab α β abx yab γ δ ab ...--- , but this is subject to variances due to style changes, e.g., from the scriptlevel. ---... ab α β abx yab γ δ ab ...--- . Anyway, this is buggy in Mozilla because what you see above is a fallback to the rendering code used for the baseline case (see below).
  16. A table with align="baseline -1" to anchor the table externally w.r.t. the baseline of the last row ---... d+p ( α β γ δ ) ...--- , neat isn't it? This would be pretty hard to obtain otherwise. Contrast it with the following which has align="bottom" ---... d+p ( α β γ δ ) ...--- , and with this one which has align="center -1" ---... d+p ( α β γ δ ) ...--- , but note that setting the baseline relative to a particular row is meaningless if the row doesn't have at least one cell with "rowalign=baseline" where to anchor the baseline (in which case Mozilla will behave as if it was align="center#rownumber").
  17. These may sound like gimmicks until you want to get a damping effect such as this ---... ab ab ab ab ab ab , or perhaps the reverse ---... ab ab ab ab ab ab , modulo pixel roundoff errors. Here 'a' and 'b' can be other combinations of possibly irregular boxes.
  18. And making floating elements do a multiplication such as the following one which is anchored at a baseline is made simple by using align="baseline1" on both tables [ a b c d ] [ a b c d ]
  19. To multiply a matrix A by a vector x, each row of the matrix has to be multiplied to the vector. So at the i-th step, it proceeds thus: i-th row [ a11 a12 a13 a1n ai1 ai2 ai3 ain an1 an2 an3 a n n ] [ x1 x2 x3 xn ]