123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>ASCIIMathML: Math on the web for everyone</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script type="text/javascript" src="ASCIIMathML.js"></script>
- <style type="text/css">
- #menu, #title, #subtitle, #author, .display {text-align: center}
- body {font-family: Arial; background-color:beige}
- p,table {font-family: Times}
- </style>
- </head>
- <body>
- <div id="menu">
- | <a href="asciimath.html">Home Page</a> |
- <a href="asciimathsyntax.html">Syntax</a> |
- <a href="asciimathdemo.html">Try it</a> |
- <a href="asciimathcalculator.html">Calculator</a> |
- <a href="http://mathcs.chapman.edu/~jipsen/mathml/asciimathdownload.html">Download</a> |
- <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathGraphs.html">Graphs</a> |
- <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathFAQ.html">ASCIIMath FAQ</a> |
- <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLSandbox.html">Sandbox</a> |
- <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathCommentsAndSuggestions.html">Comments</a> |
- </div>
- <hr/>
- <h2 id="title">
- ASCIIMathML.js (ver 2.0): Translating ASCII math notation to MathML
- and graphics</h2>
- <h4 align="center">
- Would you or your students like to <i>easily</i> produce
- <i>good-looking</i> math formulas on webpages<br/>
- using a <i>simple</i> calculator-style syntax and your
- own ASCII or HTML editor?
- <br/>
- Here is a free multi-platform solution (and if you prefer it,
- LaTeX-style formulas also work).
- </h4>
- <center>
- <b><font color="red">Now even easier to use:</font>
- <font color="green"> just add one line to your
- HTML file to load ASCIIMathML.js
- </font></b><p>
- ASCIIMathML.js is mentioned on the <a
- href="http://www.w3.org/Math/">MathML</a> page of the <a
- href="http://www.w3.org/">World Wide Web Consortium</a>, also on <a
- href="http://mathforge.net/index.jsp">mathforge.net</a> and <a
- href="http://mathforum.org/library/resource_types/typesetting/">The
- Math Forum.</a>
- </p>
- <font color="red"><b>New:</b></font> Now with <b>automatic math recognition</b>
- mode, better LaTeX support and graphics integration<br/>
- A <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLMoodleFilter.html">Moodle filter</a> and a <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLPmWikiCookbook.html">PmWiki cookbook</a> are also available<br/>
- <a href="http://www.pierce.ctc.edu/dlippman/asciimathtex/AMT.html">ASCIIMath Image Fallback Scripts</a> by David Lippman (including a Moodle filter)<br/>
- and a <a href="http://www.maths.nottingham.ac.uk/personal/drw/lm.html">LaTeXMathML</a> version of ASCIIMathML by <a href="http://www.maths.nottingham.ac.uk/personal/drw/">Dr Douglas R. Woodall</a>
- (<a href="http://www.maths.nott.ac.uk/personal/drw/lmtest.html">examples</a>)
- <br />
- <a href="http://math.chapman.edu/~jipsen/asciencepad/asciencepad.html">ASciencePad</a> is a WYSIWYG editor that integrates
- <a href="http://www.tiddlywiki.com/">TiddlyWiki</a>, ASCIIMathML and ASCIIsvg graphs.<br />
- It's free and works locally (no installation or server required).<br />
- Useful information about <a
- href="http://www.maths.ed.ac.uk/~james/ASCIIMathMLinfo.html">ASCIIMathML</a>
- by <a href="http://www.maths.ed.ac.uk/~james/">James Gray</a>, including
- a nice <a href="http://www.maths.ed.ac.uk/~james/ASCIIMathTutorial.html">tutorial</a>.<br />
- ASCIIMathML also works with <a href="http://www.meyerweb.com/eric/tools/s5/">S5</a> (CSS
- Presentation slide show; <a href="http://math.chapman.edu/~jipsen/talks/MathFest2005/JipsenMathFestSlides2005.html">S5 ASCIIMath example</a>)<br/>
- and in valid
- <a href="http://math.chapman.edu/~jipsen/mathml/asciimathandmathmlsvg.xhtml">
- XHTML pages with standard MathML and SVG</a> in several browsers.
- <br/>
- ASCIIMathML is being used with Movable Type, WordPress, phpBB, and many wikis.
- <br/>
- Also available: A PHP port of ASCIIMathML.js to <a
- href="http://www.jcphysics.com/ASCIIMath/">ASCIIMathPHP</a> by <a
- href="mailto:kc56@cornell.edu">Steven Chan</a>.
- </center>
- <p>
- This is the main page (HTML version) for the ASCIIMathML.js script which allows
- incorporating mathematical formulas on webpages with a minimum of
- fuss (just add one line to a webpage to load the script).
- If you like what you see, choose <b>Save As...</b> in your browser
- and this page should work equally well locally on your machine.
- </p>
- <p class="display">
- <b>
- This page requires Internet Explorer 6 + <a href=
- "http://www.dessci.com/en/products/mathplayer/welcome.asp">MathPlayer</a>
- or Netscape7.1/Mozilla/Firefox.
- </b>
- </p>
- <p>
- ASCIIMathML.js is freely available under the <a
- href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
- License</a>. You can get your own copy from the <a href=
- "http://www.chapman.edu/~jipsen/mathml/asciimathdownload/">ASCIIMathML.js
- download page</a>. The script works with both HTML and XHTML webpages.
- (The homepage for an XML
- version is at <a href="asciimath.xml">asciimath.xml</a> but is no
- longer maintained).
- </p>
- <p>
- If you use it on a webpage, please send me an email at <a
- href="mailto:jipsen@chapman.edu">jipsen@chapman.edu</a> with the URL
- so that I can add a link to it on the <a
- href="http://math.chapman.edu/cgi-bin/mathxml.pl?Webpages_that_use_ASCIIMathML.js">users page</a>.
- (Also send me an
- email if you have problems or would like to provide some feedback.)
- I'm currently using ASCIIMathML on a Wikiserver for lecture notes and
- <!--a href="http://math.chapman.edu/cgi-bin/mathxml.pl?Calculus_Text_Puzzles">Text
- Puzzles</a>. M-->my students are also using it in Moodle
- for writing and reading homework in their calculus class and
- discrete mathematics class.
- <font color="red">
- If you just want to display MathML on HTML pages using
- Netscape/Mozilla/Firefox or IE+MathPlayer, have a look at <a
- href="http://www1.chapman.edu/~jipsen/mathml/mathhtml">mathhtmltest</a>
- (the page includes a 50 line JavaScript program that does the trick).
- </font>
- </p>
- <hr/>
- <p>
- <b>Let's test the ASCIIMathML.js translator on a simple example.</b>
- </p>
- <p>amath
- <b>Example:</b> Solving the quadratic equation.
- Suppose a x^2+b x+c=0 and a!=0. We first
- divide by \a to get x^2+b/a x+c/a=0.
- Then we complete the square and obtain x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0.
- The first three terms factor to give (x+b/(2a))^2=(b^2)/(4a^2)-c/a.
- Now we take square roots on both sides and get
- x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a).
- Finally we subtract b/(2a) from both sides and simplify to get
- the two solutions: x_(1,2)=(-b+-sqrt(b^2 - 4a c))/(2a)
- </p>
- endamath
- <p>
- <b>Here is the text that was typed in (<font color="red">using the new
- auto-math-recognize mode</font> started by "a``math"):</b>
- </p>
- <pre>amath
- <b>Example:</b> Solving the quadratic equation.
- Suppose a x^2+b x+c=0 and a!=0. We first divide by \a to get x^2+b/a x+c/a=0.
- Then we complete the square and obtain x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0.
- The first three terms factor to give (x+b/(2a))^2=(b^2)/(4a^2)-c/a.
- Now we take square roots on both sides and get x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a).
- Finally we move the b/(2a) to the right and simplify to get
- the two solutions: x_(1,2)=(-b+-sqrt(b^2-4a c))/(2a)
- </pre>
- <hr/>
- <center>
- <b>
- If you don't believe this, copy the text and paste it on the
- <a href="asciimathdemo.html">ASCIIMathML.js: Try it yourself</a> demo page.
- </b>
- </center>
- <hr/>
- <h4>
- Here are a few more examples:
- </h4>
- <table id="examples" border="5" cellpadding="10">
- <tr>
- <th>Type this</th>
- <th>See that</th>
- <th>Comment</th>
- </tr>
- <tr>
- <td>\`x^2+y_1+z_12^34\`</td>
- <td>`x^2+y_1+z_12^34`</td>
- <td>subscripts as in TeX, but numbers are treated as a unit</td>
- </tr>
- <tr>
- <td>\`sin^-1(x)\`</td>
- <td>`sin^-1(x)`</td>
- <td>function names are treated as constants</td>
- </tr>
- <tr>
- <td>\`d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h\`</td>
- <td>`d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h`</td>
- <td>complex subscripts are bracketed, displayed under lim</td>
- </tr>
- <tr>
- <td>\$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\$</td>
- <td>$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</td>
- <td>standard LaTeX notation is an alternative</td>
- </tr>
- <tr>
- <td>\`f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n\`</td>
- <td>`f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n`</td>
- <td>f^((n))(a) must be bracketed, else the numerator is only `a`</td>
- </tr>
- <tr>
- <td>\$f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n\$</td>
- <td>$f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n$</td>
- <td>standard LaTeX produces the same result</td>
- </tr>
- <tr>
- <td>\`int_0^1f(x)dx\`</td>
- <td>`int_0^1f(x)dx`</td>
- <td>subscripts must come before superscripts</td>
- </tr>
- <tr>
- <td>\`[[a,b],[c,d]]((n),(k))\`</td>
- <td>`[[a,b],[c,d]]((n),(k))`</td>
- <td>matrices and column vectors are simple to type</td>
- </tr>
- <tr>
- <td>\`x/x={(1,if x!=0),(text{undefined},if x=0):}\`</td>
- <td>`x/x={(1,if x!=0),(text{undefined},if x=0):}`</td>
- <td>piecewise defined function are based on matrix notation</td>
- </tr>
- <tr>
- <td>\`a//b\`</td>
- <td>`a//b`</td>
- <td>use // for inline fractions</td>
- </tr>
- <tr>
- <td>\`(a/b)/(c/d)\`</td>
- <td>`(a/b)/(c/d)`</td>
- <td>with brackets, multiple fraction work as expected</td>
- </tr>
- <tr>
- <td>\`a/b/c/d\`</td>
- <td>`a/b/c/d`</td>
- <td>without brackets the parser chooses this particular expression</td>
- </tr>
- <tr>
- <td>\`((a*b))/c\`</td>
- <td>`((a*b))/c`</td>
- <td>only one level of brackets is removed; * gives standard product</td>
- </tr>
- <tr>
- <td>\`sqrt sqrt root3x\`</td>
- <td>`sqrt sqrt root3x`</td>
- <td>spaces are optional, only serve to split strings that should not match</td>
- </tr>
- <tr>
- <td>\`<< a,b >> and {:(x,y),(u,v):}\`</td>
- <td>`<< a,b >> and {:(x,y),(u,v):}`</td>
- <td>angle brackets and invisible brackets</td>
- </tr>
- <tr>
- <td>\`(a,b]={x in RR | a < x <= b}\`</td>
- <td>`(a,b]={x in RR | a < x <= b}`</td>
- <td>grouping brackets don't have to match</td>
- </tr>
- <tr>
- <td>\`abc-123.45^-1.1\`</td>
- <td>`abc-123.45^-1.1`</td>
- <td>non-tokens are split into single characters,<br/>
- but decimal numbers are parsed with possible sign</td>
- </tr>
- <tr>
- <td>\`hat(ab) bar(xy) ulA vec v dotx ddot y\`</td>
- <td>`hat(ab) bar(xy) ulA vec v dotx ddot y`</td>
- <td>accents can be used on any expression (work well in IE)</td>
- </tr>
- <tr>
- <td>\`bb{AB3}.bbb(AB].cc(AB).fr{AB}.tt[AB].sf(AB)\`</td>
- <td>`bb{AB3}.bbb(AB].cc(AB).fr{AB}.tt[AB].sf(AB)`</td>
- <td>font commands; can use any brackets around argument</td>
- </tr>
- <tr>
- <td>\`stackrel"def"= or \stackrel{\Delta}{=}" "("or ":=)\`</td>
- <td>`stackrel"def"= or \stackrel{\Delta}{=}" "("or ":=)`</td>
- <td>symbols can be stacked</td>
- </tr>
- <tr>
- <td>\`{::}_(\ 92)^238U\`</td>
- <td>`{::}_(\ 92)^238U`</td>
- <td>prescripts simulated by subsuperscripts</td>
- </tr>
- </table>
- <p>
- If you are familiar with MathML, you can appreciate that this ASCII
- input form is less verbose and more readable. If you are familiar with
- TeX, this is still somewhat less cluttered. The aim is to have input
- notation that is close to graphing calculator notation, so that
- students are able to use it on webpages and in emails without having
- to learn another specialized syntax.
- </p>
- <p>
- For an explicit description of the input syntax see <a
- href="asciimathsyntax.html">ASCIIMathML.js Syntax and List of
- Constants</a>.
- </p>
- <p>
- <b>Acknowledgements:</b> Many thanks to the numerous people who have
- contributed to the fantastic MathML standard. Without such a
- well designed standard, a project like this would be impossible.<br/>
- Thanks to the many volunteers who implemented MathML in the
- Gecko layout engine for Netscape7/Mozilla/Firefox.<br/>
- Thanks to the people at Design Science for producing the excellent
- MathPlayer plugin and making it freely available.<br/>
- Finally, thanks to the designers and implementors of JavaScript. All
- these tools work together fairly seemlessly to allow us to put
- mathematical formulas on webpages in a convenient and inexpensive way.<br/>
- And thanks to Andrew White for making a logo for ASCIIMathML (see below).
- </p>
- <hr/>
- <div id="author">
- <a href="http://www.chapman.edu/~jipsen/">Peter Jipsen</a>,
- <a href="http://www.chapman.edu/">Chapman University</a>, September 2007
- <a href="http://validator.w3.org/check/referer"><img border="0"
- src="http://www.w3.org/Icons/valid-html401"
- alt="Valid HTML 4.01!" height="31" width="88"></a>
- </div>
- <p><div class="display">
- <a style="color:white" href="../asciimath.html">
- <img src="asciimathml.jpeg" alt="ASCIIMathML"></a>
- </div>
- </body>
- </html>
|