]> MathToWeb - What's New (Information on the Latest Releases and Bug-fixes)
 MathToWeb .com Home|Support

What's New information on new releases

• August 14, 2013:  Release of MathToWeb Version 4.0.0.
[ released Aug 14, 2013 | revised Aug 24, 2013 | revised Sept 06, 2013 |
final revisions Jan 16, 2014 ]
Note:   Version 4.0.0 was revised extensively in the months following its initial release in August 2013 - due to user feedback. The final revisions were published Jan 16, 2014. If you downloaded MathToWeb ver 4.0.0 before this date, we advise you to download again, as a relatively large number of important corrections were written after the initial release.
This version has been in development so long, it's hard to know where to start. Its release is at least a year and a half behind schedule, its development has been fraught with delays, revisions, and several re-writes of the source code. However, it is my sincere hope that the advancments it contains will have been worth the wait. This is a major release. It is, without a doubt, the most important release of this program to date. For this version, almost all of the problems that characterized previous releases have been corrected, and a whole host of new improvements have been added to the program's repertoire.
There have been several highly significant contributors to this version, and in fact, the advancments that characterize it simply would not have come about without them. This release is dedicated to them and all the people who have helped by sending us feedback, reporting bugs and contributing new ideas. Their contributions are documented here, as well as in the souce code itself.
This program has been an extremely difficult one to write, but with version 4.0.0, I feel we've finally 'arrived' at what was envisioned at the outset of this program's development back in 2007, a vision that took so many years to get right. Not to say that we can't move forward from here. In fact, new ideas continue to come in, which means the program will continue to advance.
The list of the changes made for this version follow:
( Only the main changes to the program are described here. Hundreds of other small alterations were made for version 4.0.0, these are, for the most part, documented in the source code. )

The first important issue that was dealt with for version 4.0.0 was the correction of concurrency issues that were present when the program was being run in a server environment under load.
Many thanks to Bryan HendersonBYU Division of Continuing Education ) and the team at BYU for helping us through the re-write of the source code required to overcome this issue.

Performance issues, particularly with long equations, have finally been resolved for version 4.0.0.
For version 4.0.0, detailed time profiling was put in place in order to identify locations (in the source code) causing performance bottlenecks. This was a fruitful exercise. It led to the development of a new algorithm for skipping code that is of 'no interest' to the present conversion algorithm. This new algorithm worked extremely well and was written into every conversion function making up the program. Consequently, speed increases of up to one-hundred-fold were seen in some types of conversions. In general, the program performs its conversion far more quickly than ever before.
Performance issues were first identified by Nashi Power in the early days of the program's development, and brought to my attention again (for version 4.0.0) by Srinivasan Santhanam (April 30, 2013). I must give special thanks to Nashi Power who sent me a file called tough1.xml back in 2010. It contained a particularly long and difficult LaTeX equation. This file has been used as a benchmark test ever since, it has been immensely useful.

Massimiliano Margaronewww.smartlandproject.com ) at the smartlandproject was instrumental in suggesting the HTML numbering scheme, used prior to version 4.0.0, be replace with a pure XML one.
This affects math environments such as $$...$$, and in fact, all the dispaly environments. As of this version, the MathML output generated by MathToWeb is pure XML (i.e. pure MathML), every bit of the HTML has been removed.

Automatic equation numbering has been implemented for this version. Prior to this \tag{1.3} commands had to be added to display environments in order to number them as desired. This is no longer the case, the program will number display environments automatically. In addition, many of the LaTeX commands used to modify the numbering scheme (things such as, \numberwithin{equation}{section} and \setcounter{equation}{0}) are also fully functional in this release.

These are all explained in detail in the following section of the User's Guide, Equation Numbering.

As of this version (ver 4.0.0) mathtoweb.jar is a pure command-line program, all the references to GUI-related packages have been removed.

This was done because installations of mathtoweb.jar on servers with no windowing system were generating the error, "No X11 DISPLAY variable was set, but this program performed an operation which requires it.". This occurred because the command-line program still imported the javax.swing.* and java.awt.* packages, though it didn't actually use them in command mode.

A couple of people noted this problem, and my thanks goes out to them for suggesting it be corrected. Massimiliano Margarone (www.smartlandproject.com - Genova, Italy) and Zachary Hanson-Hart () were the influential people here.

Related to the above alteration, the online applet has been retired and replaced with an XHTML/Javascript/AJAX application that exchanges data with a new dedicated server to perform the required LaTeX to MathML conversions. This works really quite well. You can try it out here: MathToWeb Online.

(There are plans, in the near future, to have this run behind a secure socket layer - SSL.)

This was done because, at this time, the applet could not be run entirely on Open Source software, to which MathToWeb is fully dedicated.

The scripts for this have been included in the source code, for those that might be interested. If you are planning to run mathtoweb.jar in a server environment, you may want to look at,  Extras/mathtoweb_online_converter.pl.

There is a new package designation for ver. 4.0.0  (prior to this, the default package was used).

If you look at the source code, you'll see:

package mathtoweb.engine;

All the files for MathToWeb are now found in directory .../mathtoweb/engine  (  in our case, .../Source/mathtoweb/engine ).

To compile ( from the Source/ dir ):   javac ./mathtoweb/engine/*.java

To run ( from the Source/ dir ):   java mathtoweb.engine.MathToWeb -unicode -stdout ./bugs/example_latex.xhtm

Note:  This new package designation has no effect on the running of mathtoweb.jar, it is still something similar to the following,
java -jar mathtoweb.jar  -unicode -vf   <your text file>.

This was suggested by Massimiliano Margarone (www.smartlandproject.com - Genova, Italy), April 2012.

Colour can now be added to any equation (or part thereof) using the LaTeX command
{\color{html-color} some LaTeX math }
MathToWeb implements this in a slightly different manner than LaTex by allowing any HTML-acceptable color to be used as its argument. Particularly, the 141 color names as defined in the HTML and CSS color specification will all work nicely, and are supported by all modern browsers. There is a list of these, along with more information on adding colour to your equations in the User's Guide Adding color to your equations.

If you prefer to use
\textcolor{html-color}{some LaTeX math},
it is also supported.

The command
\colorbox{html-color}{some LaTeX math}
has also been implemented as a way to produce coloured backgrounds for equations (or parts thereof).
Note:   If you're partial to the colour spelling (as opposed to the American variant, color), MathToWeb supports this for the three commands decribed above:

{\colour{html-colour} some LaTeX math }
\textcolour{html-colour}{some LaTeX math}
\colourbox{html-colour}{some LaTeX math}

(The magenta colour signifies that this is non-standard LaTeX - specific to MathToWeb.)
Below are a few examples:
 ${\color{red}A + B}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $A+B$
Or equivalently,  $\textcolor{red}{A + B}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $A+B$
 ${\color{red} \left( \frac{\color{green}A^2}{b_n} \right) }$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\left(\genfrac{}{}{0.1ex}{}{{A}^{2}}{{b}_{n}}\right)$
 $\colorbox{yellow}{A} + \colorbox{LightGreen}{B}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $A+B$
 $\epsilon_{ \alpha \colorbox{yellow}{\beta} \colorbox{LightGreen}{\gamma} } A_{ \colorbox{yellow}{\beta} } B_{ \colorbox{LightGreen}{\gamma} }$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ ${\epsilon }_{\alpha \beta \gamma }{A}_{\beta }{B}_{\gamma }$
  \begin{equation*} \begin{pmatrix} {\color{red} a_{11}} & {\color{green} b_{12}} & c_{13} \\ {\color{orange} d_{21}} & {\color{blue} e_{22}} & f_{23} \\ g_{31} & h_{32} & i_{33} \\ \end{pmatrix} \end{equation*}  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}\left(\begin{array}{ccc}{a}_{11}& {b}_{12}& {c}_{13}\\ {d}_{21}& {e}_{22}& {f}_{23}\\ {g}_{31}& {h}_{32}& {i}_{33}\end{array}\right)\hfill \end{array}$

Strikethrough is now supported using the LaTeX command
\cancel{LaTeX math to be struck out}
It was implemented using the MathML,  <menclose notation="updiagonalstrike"> .. </menclose>
( To see this, right-click on any of the examples below; choose View MathML Source from the menu.
trick:  if you are having problems getting the View MathML Source (right-click) menu item to appear, left-click the equation first. )
This was suggested by Livio Bernasconi, March 2013.
A few examples are below:
 strikethrough through 123544 $\cancel{123544}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123544}$
 strikethrough through 123544 - theentire expression will render inthe colour red. ${\color{red}\cancel{123544}}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123544}$
 strikethrough through 123544 - the strikethrough will be red; thenumber will green. ${\color{red}\cancel{\color{green}123544}}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{){123544}}$

A new MathToWeb-specific LaTeX command has been introduced for this version,
\mphantom{ math to be enclosed }
(The magenta colour signifies that this is non-standard LaTeX - specific to MathToWeb.)

For example, \mphantom{3} will convert to <mphantom><mn>3</mn></mphantom>

This new command has its uses. See the section below on \menclose, here it is used in a US-style long division similar to the example below. Note that the two columns of the array are right-aligned and the \mphantom{3} acts to create proper spacing at the right margin.
  $\begin{array} {rr} & 10 \\ 131 & \menclose[longdiv]{1413} \\ & \underline{131} \mphantom{3} \\ & 103 \end{array}$ 

MathToWeb now supports "invisible" operators through the following MathToWeb-specific LaTeX commands:
\it ( "invisible times" )
\af ( "apply function" )
\ic ( "invisible comma" )
(See the section on "Invisible operators" in the following article: https://cs.fit.edu/~wds/math/chap3_2.html.)
These are used primarily by audio rendering systems, but may also convey useful information to visual rendering systems.
Note: \it is also LaTeX declaration used to switch to an italic font, e.g. {\it some text}. MathToWeb has this specific command disabled in favour of its use for "invisible times". Use \mathit{A} in place of \it.
 \it $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ 
 \af $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ 
 \ic $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ 
Thanks to Nashi Power (http://nashi.podzone.org/) for suggesting these.
A couple examples are below:
 $f \af (x \it y)$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$  f ( x y ) [/itex]  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $f\left(xy\right)$ This may be audio rendered as "f of x times y".
 $a_{1 \ic 2}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$  a 1 2 [/itex]  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ ${a}_{1⁣2}$ This may be audio rendered as "a sub one two" ( more appropriate if these arearray indices, as opposed to "a sub twelve" ).

MathToWeb now offers full support for the array environment,
\begin{array}{lcr} ... \end{array}
The alignment flags (i.e. the {lcr} above) can be used to customize the alignment of each of the array's columns individually. The alignment can be one of left (l), centre (c) or right (r). Specify one of these alignments for each column of your array. If you leave one or more out, the column(s) will default to left alignment.
See http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Matrices.html for a good discussion on this LaTeX environment.
( The first three examples below are from this article - of course, the ones here are rendered in MathML.)
Thank you to Ivan Oseledets for suggesting support for this LaTeX environment.
  $\chi(\lambda) = \left| \begin{array}{ccc} \lambda - a & -b & -c \\ -d & ambda - e & -f \\ -g & -h & \lambda - i \end{array} \right|$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}\chi \left(\lambda \right)=|\begin{array}{ccc}\hfill \lambda -a\hfill & \hfill -b\hfill & \hfill -c\hfill \\ \hfill -d\hfill & \hfill \lambda -e\hfill & \hfill -f\hfill \\ \hfill -g\hfill & \hfill -h\hfill & \hfill \lambda -i\hfill \end{array}|\hfill \end{array}$
  $\begin{array}{lcr} \mbox{First number} & x & 8 \\ \mbox{Second number} & y & 15 \\ \mbox{Sum} & x + y & 23 \\ \mbox{Difference} & x - y & -7 \\ \mbox{Product} & xy & 120 \end{array}$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}\begin{array}{ccc}\text{First number}\hfill & \hfill x\hfill & \hfill 8\\ \text{Second number}\hfill & \hfill y\hfill & \hfill 15\\ \text{Sum}\hfill & \hfill x+y\hfill & \hfill 23\\ \text{Difference}\hfill & \hfill x-y\hfill & \hfill -7\\ \text{Product}\hfill & \hfill xy\hfill & \hfill 120\end{array}\hfill \end{array}$
  $|x| = \left\{ \begin{array}{ll} x & \mbox{if x \geq 0};\\ -x & \mbox{if x < 0}.\end{array} \right.$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}|x|=\left\{\begin{array}{cc}x\hfill & \text{if x≥0};\hfill \\ -x\hfill & \text{if x<0}.\hfill \end{array}\phantom{\right\}}\hfill \end{array}$
Matrix environments, like the array environment, can be nested (one inside the other). A couple examples are below:
  $\operatorname{cof} A = \left[ \begin{array}{ccc} +\left| \begin{array}{cc} 2 & 1 \\ 0 & 2 \end{array} \right| & -\left| \begin{array}{cc} 0 & 1 \\ 3 & 2 \end{array} \right| & +\left| \begin{array}{cc} 0 & 2 \\ 3 & 0 \end{array} \right| \\ -\left| \begin{array}{cc} 1 & 0 \\ 0 & 2 \end{array} \right| & +\left| \begin{array}{cc} 2 & 0 \\ 3 & 2 \end{array} \right| & +\left| \begin{array}{cc} 2 & 1 \\ 3 & 0 \end{array} \right| \\ +\left| \begin{array}{cc} 1 & 0 \\ 2 & 1 \end{array} \right| & -\left| \begin{array}{cc} 2 & 0 \\ 0 & 1 \end{array} \right| & +\left| \begin{array}{cc} 2 & 1 \\ 0 & 2 \end{array} \right| \end{array} \right]$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}cofA=\left[\begin{array}{ccc}\hfill +|\begin{array}{cc}\hfill 2\hfill & \hfill 1\hfill \\ \hfill 0\hfill & \hfill 2\hfill \end{array}|\hfill & \hfill -|\begin{array}{cc}\hfill 0\hfill & \hfill 1\hfill \\ \hfill 3\hfill & \hfill 2\hfill \end{array}|\hfill & \hfill +|\begin{array}{cc}\hfill 0\hfill & \hfill 2\hfill \\ \hfill 3\hfill & \hfill 0\hfill \end{array}|\hfill \\ \hfill -|\begin{array}{cc}\hfill 1\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 2\hfill \end{array}|\hfill & \hfill +|\begin{array}{cc}\hfill 2\hfill & \hfill 0\hfill \\ \hfill 3\hfill & \hfill 2\hfill \end{array}|\hfill & \hfill +|\begin{array}{cc}\hfill 2\hfill & \hfill 1\hfill \\ \hfill 3\hfill & \hfill 0\hfill \end{array}|\hfill \\ \hfill +|\begin{array}{cc}\hfill 1\hfill & \hfill 0\hfill \\ \hfill 2\hfill & \hfill 1\hfill \end{array}|\hfill & \hfill -|\begin{array}{cc}\hfill 2\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 1\hfill \end{array}|\hfill & \hfill +|\begin{array}{cc}\hfill 2\hfill & \hfill 1\hfill \\ \hfill 0\hfill & \hfill 2\hfill \end{array}|\hfill \end{array}\right]\hfill \end{array}$
An equally effective method to achieve this reault would be to use the AMS-LaTeX bmatrix for the square brackets, and vmatrix for the vertical ones. Like this:
  \begin{equation*} \operatorname{cof} A = \begin{bmatrix} + \begin{vmatrix} 2 & 1 \\ 0 & 2 \end{vmatrix} & - \begin{vmatrix} 0 & 1 \\ 3 & 2 \end{vmatrix} & +\begin{vmatrix} 0 & 2 \\ 3 & 0 \end{vmatrix} \\ - \begin{vmatrix} 1 & 0 \\ 0 & 2 \end{vmatrix} & + \begin{vmatrix} 2 & 0 \\ 3 & 2 \end{vmatrix} & -\begin{vmatrix} 2 & 1 \\ 3 & 0 \end{vmatrix} \\ + \begin{vmatrix} 1 & 0 \\ 2 & 1 \end{vmatrix} & - \begin{vmatrix} 2 & 0 \\ 0 & 1 \end{vmatrix} & +\begin{vmatrix} 2 & 1 \\ 0 & 2 \end{vmatrix} \end{bmatrix} \end{equation*} 
This gives the exact same result as above.

MathToWeb now offers support for the command
\ensuremath{LaTeX to ensure is in a math environment}
Thank you to Ed Leaver for suggesting this (http://www.edleaver.com/).
In addition, Ed contributed several valuable suggestions as to improvements to the program for version 4.0.0. He also identified some significant bugs in the various pre-releases leading to its release. These led to some extensive re-writes of certain sections of the source code, for which the MathToWeb community will be most grateful.
In practice, \ensuremath{..} is used almost entirely inside \newcommand definitions.
\newcommand{\mycurl}{\boldsymbol{\nabla} \times \mathbf{A}}
which you might do if you wanted use $\mathbf{\nabla }×\mathbf{A}$ in multiple locations in your document, you might write
\newcommand{\mycurl}{ \ensuremath{ \boldsymbol{\nabla} \times \mathbf{A} } }.
This way, if you inadvertently forget to place your 'new command', \mycurl, inside some sort of mathematics environment (for example, $\mycurl$ or $$\mycurl$$,  if it was desirable to have the equation 'inline'), MathToWeb will make the assumption that it should indeed be inline, and will place it within $$...$$. On the other hand, if you place \mycurl inside a proper math environment, either 'inline' or 'display', MathToWeb will do nothing, since the correct LaTeX is already in place.
Incidentally, remember that in MathToWeb, \newcommand.. definitions should be placed inside HTML/XML-typle comments. The example above would be placed inside a document thus:
<-- \newcommand{\mycurl}{ \ensuremath{\boldsymbol{\nabla} \times \mathbf{A}} } -->

( In MathToWeb, you can also include \newcommand.. definitions inside external files. See the command-line flag, -ncf <file name>, from:
java -jar mathtoweb.jar -help )
See LaTeX macros for mathematics for a good article on this command.

This is related to strikethrough which is implemented above using the MathML element menclose: <menclose notation="updiagonalstrike"> ... </menclose>. This element is more versatile than just this, having quite a few possible 'notation' attributes available. See W3C Recommendation for Presentation Markup (menclose) for the related discussion. The following is a quotation from this article: "The menclose element renders its content inside the enclosing notation specified by its notation attribute". The W3C recommendation encourages renderers to handle the following list of 'notation' attributes:
 longdiv | actuarial | radical | box | roundedbox | circle | left | right | top | bottom | updiagonalstrike | downdiagonalstrike | verticalstrike | horizontalstrike 
 For example, 123 $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
The following MathToWeb-specific LaTeX can be used to produce the same MathML markup for this element:
(Recall, the magenta colour signifies that this is non-standard LaTeX - specific to MathToWeb.)
 $\menclose[longdiv]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
In general, MathToWeb can handle any of the 'notation' attributes in the above list:
\menclose[notation]{math to be enclosed}
Examples of all of them are displayed in the table below:
 $\menclose[longdiv]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[actuarial]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{123\hspace{.2em}|}$
 $\menclose[radical]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\sqrt{123}$
 $\menclose[box]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[roundedbox]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[circle]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[left]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[right]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[top]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[bottom]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[updiagonalstrike]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[downdiagonalstrike]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[verticalstrike]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
 $\menclose[horizontalstrike]{123}$ $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{4444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\overline{)123}$
The example that follows was adapted from W3C Recommendation for Presentation Markup (menclose), section "3.3.9.3 Examples". (It demonstrates the MathML markup for an elementary US-style long division problem.)  Below is the MathToWeb markup that can be used to achieve the same result.
  $\begin{array} {rr} & 10 \\ 131 & \menclose[longdiv]{1413} \\ & \underline{131} \mphantom{3} \\ & 103 \end{array}$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{cc}\hfill & \hfill 10\\ \hfill 131& \hfill \overline{)1413}\\ \hfill & \hfill \underset{_}{131}\phantom{3}\\ \hfill & \hfill 103\end{array}$

A number of new command-line flags were added for version 4.0.0. A list is below.  -remove_mphantoms * Remove .. pairs and their contents, from the final MathML. Some mathematical programs do not handle these tags. (Note: These act generally to produce correct spacing in MathML output; however, if need be, they can be removed. This was suggested by Massimiliano Margarone. -nodiffs * Do not insert differential operators for 'd' characters that act as such operators. This has the effect of generating "d" in in place of "ⅆ", the latter being a differential operator. -mt * Set the top margin for mathematical, display environments. Example: -mt 4em. The units used will always be 'em', regardless of whether they are specifically included or not. (The default top margin is 1.0em.) -mb * Set the bottom margin for mathematical, display environments. Example: -mb 4em. The units used will always be 'em', regardless of whether they are specifically included or not. " + (The default bottom margin is 2.0em.) -ml * Set the left margin inset for mathematical, display environments. Example: -ml 4em This inset is relative to the page margin. The units used will always be 'em', regardless of whether they are specifically included or not. (The default left margin is 6.0em.) -mr * Set the right margin inset for mathematical, display environments. Example: -mr 4em This inset is relative to the page margin. The units used will always be 'em', regardless of whether they are specifically included or not. (The default right margin is 6.0em.) -stdoutf * Send the newly generated MathML to the stdout and to a file. -vf * When the conversion to MathML is is complete, and without errors, open the output file in Firefox (the browser). If you prefer another browser try: -vc (for chrome), -va (for amaya), -vs (for safari), -vm (for mac), -vw (for windows), or, see -vb below to open in any other browser. -vb * When the conversion to MathML is is complete, open the output file in (some browser). -nocomm * Normally, LaTeX comments found inside a document are commented-out using XML ones. For example, "% some comment" will be converted to "". Setting this flag will stop this action - meaning that LaTeX comments will be left in place. This only applies to LaTeX comments not found inside LaTeX math environments. Those that are, will be removed completely when the conversion to MathML is performed. However they do appear in the "(your LaTeX)" section preceding each converted math environment in your output file.

Setting up actions using \begin{maction}..\end{maction}, new for for version 4.0.0.
(Recall, the magenta colour signifies that this is non-standard LaTeX - specific to MathToWeb.)
This MathToWeb-specific LaTeX will be converted to The MathML <maction> ...</maction> element and its close (both shown here).
A good discussion of this element is on the Mozilla Developer Network, see Mozilla Developer Network - maction
Many thanks to Dustin Wehr for suggesting this.
  \begin{maction}\actiontype{toggle}\selection{1} (expression 1) \\ (expression 2) \\ ... (expression n) \end{maction}  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$  (expression 1) (expression 2) ... (expression n)  When actiontype="toggle" each subexpression is displayed in turn, as the user clicks on the successive expressions.
\actiontype{..} can contain one of:  toggle, statusline, tooltip, highlight, menu .
( Of these, only toggle appears to be functional at the moment - Oct 2013 )
\selection{..} must contain some positive integer, 1, 2, 3, ...n.
These arguments are independently optional - you can use one, and not the other, or, neither. Any argument missing a user-entered value will default to actiontype->toggle  and selection->1.
A couple examples follow. Left-click on the rendered equations (the 6/8, in the first example) to trigger the action
(actiontype equals toggle is used in both cases here)
  $\begin{maction}\actiontype{toggle}\selection{1} \frac{6}{8} \\ \frac{3}{4} \end{maction}$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}\genfrac{}{}{0.1ex}{}{6}{8}\genfrac{}{}{0.1ex}{}{3}{4}\hfill \end{array}$
  $\begin{maction}\actiontype{toggle}\selection{1} \begin{array}{lc} A = \left[ \begin{array}{cc} 2 & 1 \\ 4 & 3 \\ 6 & 1 \end{array} \right] & \qquad \text{What is A^T ?} \qquad \end{array} \\ \begin{array}{lcr} A = \left[ \begin{array}{cc} 2 & 1 \\ 4 & 3 \\ 6 & 1 \end{array} \right] & \qquad \text{What is A^T ?} \qquad & A^T = \left[ \begin{array}{ccc} 2 & 4 & 6 \\ 1 & 3 & 1 \end{array} \right] \end{array} \end{maction}$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{c}\begin{array}{cc}A=\left[\begin{array}{cc}\hfill 2\hfill & \hfill 1\hfill \\ \hfill 4\hfill & \hfill 3\hfill \\ \hfill 6\hfill & \hfill 1\hfill \end{array}\right]\hfill & \hfill \phantom{\rule{2.00em}{0ex}}\text{What is AT ?}\phantom{\rule{2.00em}{0ex}}\hfill \end{array}\begin{array}{ccc}A=\left[\begin{array}{cc}\hfill 2\hfill & \hfill 1\hfill \\ \hfill 4\hfill & \hfill 3\hfill \\ \hfill 6\hfill & \hfill 1\hfill \end{array}\right]\hfill & \hfill \phantom{\rule{2.00em}{0ex}}\text{What is AT ?}\phantom{\rule{2.00em}{0ex}}\hfill & \hfill {A}^{T}=\left[\begin{array}{ccc}\hfill 2\hfill & \hfill 4\hfill & \hfill 6\hfill \\ \hfill 1\hfill & \hfill 3\hfill & \hfill 1\hfill \end{array}\right]\end{array}\hfill \end{array}$

Coding for \newcommand has been a challenge from the early days of MathToWeb's delelopment.
In November 2011, Myles English ( Involved in the development of OpenOffice - the relevant thread being, http://comments.gmane.org/gmane.emacs.orgmode/48709 )
kindly informed me that the code for handling these commands contained serious flaws in situations where they were nested (one inside the other), which is commonly done.
Here's an example (courtesy of Myles):
( The problem has now been corrected, so the ouput here is correct )
  $$\caypillarypressure = 0$$  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{cc}{p}_{c}=0\hfill & \hfill \text{(1)}\end{array}$
Recall that \newcommand declarations can be placed into a document in one of two ways:
1)  They can be inserted into a separate file (let's call this file mystyle.sty) and called thus:

> java -jar mathtoweb.jar -ncf ./mystyle.sty myLatexFile.xhtm

2)  They can be inserted directly into the document, placed between XML/HTML comments, as the following example deomonstrates.
(This is the method used in the example above.):

<-- \newcommand{ \mycommand }{ A_i + B_j } -->
In September 2013, I got a letter from James R. Hopgood ( Institute for Digital Communications
Signals & Systems Group: www.see.ed.ac.uk/research/IDCOM/sasg.html ), this time, kindly informing me that the \newcommand code was not handling optional default arguments correctly. Here's an example (courtesy of James):
( The problem has now been corrected, so the ouput here is correct )
See http://tex.loria.fr/ctan-doc/macros/latex/doc/html/usrguide/node18.html for an explanation of the commands below:

\newcommand {>cmd<} [>num<] [>default<] {>definition<}
\renewcommand {>cmd<} [>num<] [>default<] {>definition<}
  \begin{align} \cpdf{\dt{X_c}{\omega}}{d\omega} &= \int_{-\infty}^{\infty} \ct{H}{t}\,e^{-at}\,e^{-j\omega t}\,dt \\ &= \int_0^{\infty} e^{-(a+j\omega)t}\,dt = \left[-\frac{e^{-(a + j\omega)t}}{a + j\omega}\right]_0^{\infty} \end{align}  $\underset{\mathrm{ }\phantom{3}\mathrm{ }}{\overset{\mathrm{ }\phantom{\rule{1.00em}{0ex}}\phantom{44444444}\phantom{\rule{1.00em}{0ex}}\mathrm{ }}{⟶}}$ $\begin{array}{cc}\begin{array}{cc}\hfill p\left(\phantom{|}{X}_{c}\left[\omega \right]\phantom{\rule{0.167em}{0ex}}|\phantom{\rule{0.167em}{0ex}}d\omega \right)& =\underset{-\infty }{\overset{\infty }{\int }}H\left(t\right)\phantom{\rule{0.167em}{0ex}}{e}^{-at}\phantom{\rule{0.167em}{0ex}}{e}^{-j\omega t}\phantom{\rule{0.167em}{0ex}}dt\hfill \\ \hfill & =\underset{0}{\overset{\infty }{\int }}{e}^{-\left(a+j\omega \right)t}\phantom{\rule{0.167em}{0ex}}dt={\left[-\genfrac{}{}{0.1ex}{}{{e}^{-\left(a+j\omega \right)t}}{a+j\omega }\right]}_{0}^{\infty }\hfill \end{array}\hfill & \hfill \text{(1)}\\ \hfill \text{(2)}\end{array}$
A great deal of work was done for version 4.0.0 to eliminate the problems associated with \newcommand, and due to some extremely valuable feedback from users, and a good deal of thorough testing, I think we can finally say that MathToWeb can tackle this command with confidence.

What's in store for the next version - support for theorem environments
Finally, we want to remark on what's in store for the next version (4.1.0). Most of the developmental work for this version will be aimed at providing full support for theorem environments.

End: version 4.0.0.
• September 27, 2011:  Release of MathToWeb Version 3.0.2.

I'm grateful to Bryan HendersonBYU Division of Continuing Education ) who identified several bugs that were introduced inadvertently in the previous version (3.0.1). He also kindly contributed a suggestion that a Java utility function be made available in MathToWeb.java (the main source file) with a straightforward string-in / string-out architecture, so as to provide LaTeX to MathML conversion capabilities inside other Java programs (in which the MathToWeb source files have been compiled). This new function would be benificial to Java programmers who require these kinds of capabilities - more on this below.
Bryan's organization uses MathToWeb to convert LaTeX equations to MathML for PrinceXML ( [X]HTML to PDF converter: http://princexml.com ). Specifically, they use MathToWeb as a Java component in (Adobe) ColdFusion to convert equations from LaTeX to MathML. A more detailed explanation of how they have done this has been posted to the Tips on Usage page.
The following bugs have been corrected for this version (ver 3.0.2):
• Invalid <mo> tags were being inserted into the token tag <mtext>:
Example:
LaTeX: $\mbox{, solve for}$
MathToWeb result: <mtext><mo>,</mo> solve for</mtext>( the <mo> tags inside the <mtext> were not correct )
Correct result: <mtext>, solve for</mtext>
• Invalid <mo> tags were being inserted around decimal place characters within numbers:
Convert $2.8$
MathToWeb result: <mn>2<mo>.</mo>8</mn> ( the <mo> tags inside the <mn> were not correct )
Correct result: <mn>2.8</mn>
• Commas as decimal places (used in Germany, for example) were not converting correctly.
This issue has been resolved for this version. For example, $2,8$ will now be correctly converted to <mn>2,8</mn>
Other things implemented for this version include:

• -stdout: This command-line flag has been added to allow the MathToWeb output to be directed to the stdout, instead of to a file. This is useful if you are testing a single equation (or a small number of them) and want to see the output right away.
The following example demonstrates the use of this flag. Always remember to place your MathToWeb flags to the right of 'mathtoweb.jar', as follows:
>java -jar mathtoweb.jar -stdout inputLatex.xml
(To get information on all the command-line options:  >java -jar mathtoweb.jar -help)
• As stated above, a new Java utility function has been added to MathToWeb.java (the main source file). Programmers can compile the MathToWeb source code into their own projects and use the new function, called convertLatexToMathMLUtility(..), to implement conversions of LaTeX to MathML. In essence, the function takes a string (containing LaTeX) as an argument, and returns a string (containing MathML) upon completion.

The new function is simple to implement, as described below:

 MathToWeb mtw = new MathToWeb("conversion_utility"); String[] sArrayReturn = new String[3]; sArrayReturn = mtw.convertLatexToMathMLUtility(sLatexInput, sCommandLineArgs); // This is the new function. String sSuccessOrFailure = = sArrayReturn[0]; String sConversionLog = sArrayReturn[1]; String sMathMLOutput = sArrayReturn[2]; 

#### Input

The first argument to convertLatexToMathMLUtility(..), the String sLatexInput, is just the text (containing LaTeX) that is to be converted to MathML. A very simple example might be:   "...and the following integral, $\int_a^b f(x) \, dx$ gives rise to a ....".

The second argument, the String sCommandLineArgs, allows the program to be called with any of the command flags available in the command-line variant. An example might be:  "-unicode -line -ie UTF8 -rep".

#### Output

The first returned String, sSuccessOrFailure, will contain either "Success" or "Failure". Note that "Failure" is reported if there is a LaTeX syntax error, or some other problem that makes it impossible to convert the input string.

The second returned String, sConversionLog, gives useful output related to the conversion process just run, like syntax errors etc. (more or less, the same output as seen in the command-line or Applet/GUI variants).

The third returned String, sMathMLOutput, contains the result of the conversion (i.e. the MathML, converted from LaTeX).

• August 08, 2010:   I want to thank Michael Vaiana of rootmath.org for his insights. Michael runs a math tutorial site, dedicated to free, universal education.

Our recent correspondence helped me realize that a new section should be added to this website outlining how to display MathML from php pages, as well as information on tricks to display MathML from normal HTML pages using iframes. This new section will be added in the near future.
• April 12, 2010:  Release of MathToWeb Version 3.0.1.

Many thanks to Nashi Power who identified the following bugs, all of which have been repaired for this version:
• Expressions like $\dot{x}^i$ (if not written as ${\dot{x}}^i$), for any accent or prime , were not being interpreted correctly. The dot{x} was not being taken as the whole base of the exponent.
• Expressions like $widehat{abc}$ if converted using the -unicode command (for example, java -jar mathtoweb.jar -unicode test3.xml) were retaining the MathML named entity &Hat; instead of exchanging it for the equivalent Unicode character (which is &#x0005e;).
• The second \left of ${\left.a\right{|}}_{\left(b\right)}$ was being retained in the MathML.
• March 09, 2010:  Release of MathToWeb Version 3.0.0 (this is a major release)

This version owes its existence to Nashi Power who worked with me on source-code modifications over these past weeks in order to have MathToWeb (command-line variant) fully capable of working within a DocBook XML toolchain (details on this have been posted to the Tips on Usage page).

The inspiration for this version is summed up well by Nashi Power's first letter to me, part of which is reproduced below:

I currently use mathml within my DocBook xml documents. However, writing mathml is quite laborious. I am looking for a solution that will allow me to use latex instead and that will convert equations to mathml automatically as part of a toolchain. Since I use java as part of the toolchain anyway your command line script looks like it could be the ideal solution.

Collaborative work, aiming to achieve the goal spelled out above, led to the discovery of several bottlenecks in the MathToWeb source code - where the program was slowing down to unacceptable speeds when converting files of fairly large size (~400KB). These were identified and removed, and consequently, the program is now capable of converting files of any practical size (from a few bytes to several megabytes). This is a major step forward for MathToWeb (hence the decision to christen this 3.0.0 - from 2.0.5) and marks the first version actually capable of converting large documents without becoming mired in slow source code.
• March 01, 2010:  Addition of three new commands (command-line variant, version 2.0.5)

The following changes were implemented in order to make it easier to integrate the command-line variant of MathToWeb into a DocBook XML toolchain. I am grateful to Nashi Power for these suggestions.
• -force: This command-line flag will 'force' an overwrite of a pre-existing output file without user confirmation.
The following example demonstrates the use of this flag to overwrite fileOut.xml without confirmation (the input source file is source.xml; the -df command specifies the output file name):
>java -jar mathtoweb.jar -df fileOut.xml -force source.xml
(To get information on all the command-line options:  >java -jar mathtoweb.jar -help)
• -ns <namespace>: Prefix all MathML elements with the specified namespace.
The following example prefixes all MathML elements with a 'mml' namespace (without the quotation marks):
>java -jar mathtoweb.jar -ns mml source.xml

The two examples below show the difference between specifying no namespace (the default), and using -ns mml to specify a namespace called 'mml':

<math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <msub> <mi>A</mi> <mi>i</mi> </msub> </mrow> [/itex]
<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML"> <mml:mrow> <mml:msub> <mml:mi>A</mml:mi> <mml:mi>i</mml:mi> </mml:msub> </mml:mrow> </mml:math>
• The behavior of MathToWeb has been altered slightly with respect to how it responds when a text file is fed to it containing no LaTeX. Prior to this alteration, the program would output the message "No LaTeX math environments were found, ..." and quit. This behavior is not ideal in cases when the command-line variant is being used in a toolchain and there is another tool (in the chain) that must act on the file in question after MathToWeb. Therefore, this behavior has been altered and MathToWeb will now output an exact replica of the input file if it can find no LaTeX math environments to convert to MathML.
• -template: This command-line flag will insert the generated MathML between the <body> tags of the XML template.
Thanks to Simon D. Fischer for this suggestion.
• February 15, 2010:  Release of the MathToWeb Hidden Applet (version 2.0.5)

Many thanks to Francesco Grotta for his suggesion that a 'hidden applet' be created, and made available for general download.

The MathToWeb hidden applet can be embedded in any web page in order to convert LaTeX to MathML. Interactions to and from the applet are done via Javascript functions. If you require LaTeX to MathML conversion functionality on your website, this applet offers a solution that can be be set-up quickly, and thereafter, is simple to use.
Here is an example web page containing the MathToWeb hidden applet (this link will open a new tab in your browser).
You can download a zip containing all the files you will need to get started (just three files, including the hidden applet) on the download page.
• January 16, 2010:  Release of MathToWeb Version 2.0.5

A few minor bugs have been corrected for this version, as well as a clean-up of the source code, as listed below:
• The source code for this version has been cleaned up (somewhat). It is more modularized that ever before, with many of the huge blocks of code making up the main conversion algorithm having been moved into functions. This has made the code far more readable and easier to follow than in previous versions. My sincere thanks to Alex Fernandez, the author of eLyXer, whose interest in my source code brought this problem to my attention. Alex is porting MathToWeb to Python so it can be used as a plug-in for converting LaTeX to MathML within eLyXer. Watch for this on Alex's web site (see the link above).
• With version 2.0.5 there has been a slight change in the licence agreement under which MathToWeb can be redistributed and/or modified. Previously, MathToWeb was published under the GNU GPL (version 3 - strict). This has been changed to GNU General Public Licence (version 3 - or, at your option, any later version). The reason for this change is to make is easier for other developers to incorporate MathToWeb into their software (as a plug-in or other assimilation method).
• split inside gather (like the example below) was not converting to MathML correctly. The split was being replaced by an internal \myplaceholder0 tag which was being retained in the final output. This has been corrected.
 \begin{gather} a_1=b+c+d \tag{1.3}\label{gather-eq1}\\ \begin{split} a_2+a_3+a_4&=e+f+g+h\\ &\quad +i+j+k\\ &=l+m+n \end{split} \tag{1.4}\label{gather-eq2} \\ a_5=o+p+q+r+s+t+u+v+w \tag{1.5}\label{gather-eq3} \end{gather}
• Finally, the MathML for    \overbrace{ABCDEF}^{abc}    and    \underbrace{EFGHJK}_{abc}    contained the wrong characters for the 'overbrace' and 'underbrace'. The Unicode output (when the '-unicode' switch was used at the command line) was also incorrect.
• December 23, 2009:  Release of MathToWeb [Online].

Many thanks to Simon D. Fischer (Switzerland) for his suggestion that a button be added to the MathToWeb user interface with the function of adding the XML template to the working document. It was the implementation of this suggestion that led to the idea of creating an applet variant of MathToWeb, which will lead (ultimately) to the GUI variant being completely web-based.

The online variant (which is still ver. 2.0.4) differs from the GUI (download) variant in the following ways:

• It has an input editor (the top text-area, see MathToWeb [online]) rather than a 'file chooser'.

This allows LaTeX (either on its own or within an xhtml document) to be entered directly. The XHTML template (your LaTeX must be placed in the body of such a template to been viewed in a MathML-enabled browser) can be added to the input area by simply pressing the 'Add Template' button (found to the right of the 'Clear' button). If there is text present in the editor when the button is pressed, it will be copied and re-inserted between the <body>...<body> tags of the template.

• The program-generated MathML is copied to an iframe (located to the right of the applet) allowing the rendered output to be viewed as soon as a particular LaTeX-to-MathML conversion is complete. This attribute, found only in the online variant, offers a definite advantage over the downloaded variants.

• February 10, 2009:  Release of MathToWeb Version 2.0.4

I am extremely grateful to Shahab Kamali for pointing out the following bugs in ver. 2.0.3:
• Latex having the form  $\left\{ A \right\}_{B}$
was not being converted correctly. MathToWeb was not taking \left\{ A \right\} as the full base of the subscript.
• Latex like the example below, where multiple pmatrix (or other matrix elements) had been declared within some equation environment. Only the first pmatrix was being completely converted.  \begin{equation*} { \begin{pmatrix} a_{11}-\lambda & \dotsm & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \dotsm & a_{nn}-\lambda \end{pmatrix} } { \begin{pmatrix} x_1 \\ \vdots \\ x_n \end{pmatrix} } { = \mathbf{0} } \end{equation*}
• $A_{\infty} = \{ A \}$
This somewhat innocuous looking equation caused a very serious bug (a dreaded infinite loop) to occur.
These bugs have all been repaired.
Due to the seriousness of the 'infinite loop' bug above, I would strongly advise everyone to update to the new version (2.0.4).
• September 30, 2008:  Release of MathToWeb Version 2.0.3

Following up on two good suggestions made via email by a MathToWeb user ( - your input is very much appreciated Raffaele, thank you), the enhancements below have been implemented for this release:

• An option has been added (to both the command-line and GUI variant) to force MathToWeb to output Unicode characters instead of MathML ones (which is the default). For example, MathToWeb would normally convert \alpha to &alpha; (this is a MathML character). With the 'Unicode option' set, it will be converted to &#x003B1; instead.

This option is available via the 'Configuration' menu in the GUI variant.

If using the command-line variant, incorporate the -unicode flag in your command, as the following example demonstrates:  >java -jar mathtoweb.jar -unicode test.xml

• \newcommand declarations can now be defined in an external file and brought into MathToWeb via the command-line option -ncf
(this is not yet available in the GUI variant, but will be in the near future).  For example,
 >java -jar mathtoweb.jar -ncf myncf.txt test.xml

This uses myncf.txt as an external 'new command file'. If it is desirable to define more than one file, separate them using commas: -ncf myncf1.txt, myncf1.txt
See MathToWeb User's Guide - \newcommand for more information on this option.
• September 17, 2008:  Release of MathToWeb Version 2.0.2

• Recently a PhD student contacted me via email and made some very good points in favour of maintaining a command-line variant of MathToWeb. His argument was that a command-line variant would be useful when converting many documents or when such documents must be converted without human interaction.

So, with this new version, the command-line variant of MathToWeb is back and available (with the GUI variant) on the download page.
-- Thanks Raffaele

See MathToWeb User's Guide - \newcommand for information on using this command.

• February 06, 2008:  Release of MathToWeb Version 2.0.1
• Minor update fixing such expressions as ${A^2}^2$ where the outer superscript was being converted to <mover> rather than <msup>.
• January 05, 2008:  Release of MathToWeb Version 2.0.0
• MathToWeb now runs from within a Graphical User Interface (GUI).
• Faster conversion algorithms - particularly noticeable with regard to long, complicated equations.
• November 06, 2007:  Release of MathToWeb Version 1.0.2
Another minor update fixing a couple of bugs involving Latex code similar to the following: $\log \left\lvert A \right\rvert$.
• November 03, 2007:  Release of MathToWeb Version 1.0.1
This is a minor update that fixes a few problems related to variable size operators.
• October 19, 2007:  Release of MathToWeb Version 1.0.0