Annotation of loncom/cgi/mimeTeX/mimetex.html, revision 1.1

1.1     ! albertel    1: <!--
        !             2:  ****************************************************************************
        !             3:  * Copyright(c) 2002-2005, John Forkosh Associates, Inc. All rights reserved.
        !             4:  * ==========================================================================
        !             5:  * This file is part of mimeTeX, which is free software. You may redistribute
        !             6:  * and/or modify it under the terms of the GNU General Public License,
        !             7:  * version 2 or later, as published by the Free Software Foundation.
        !             8:  *      MimeTeX is distributed in the hope that it will be useful, but
        !             9:  * WITHOUT ANY WARRANTY, not even the implied warranty of MERCHANTABILITY.
        !            10:  * See the GNU General Public License for specific details.
        !            11:  *      By using mimeTeX, you warrant that you have read, understood and
        !            12:  * agreed to these terms and conditions, and that you possess the legal
        !            13:  * right and ability to enter into this agreement and to use mimeTeX
        !            14:  * in accordance with it.
        !            15:  *      Your mimeTeX distribution should contain a copy of the GNU General
        !            16:  * Public License.  If not, write to the Free Software Foundation, Inc.,
        !            17:  * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,
        !            18:  * or point your browser to  http://www.gnu.org/licenses/gpl.html
        !            19:  ****************************************************************************
        !            20:  -->
        !            21: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        !            22:  "http://www.w3.org/TR/html4/loose.dtd">
        !            23:  <!-- "http://www.forkosh.dreamhost.com/loose.dtd" -->
        !            24: 
        !            25: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !            26: Preamble
        !            27: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !            28: <html>
        !            29:   <head>
        !            30:     <title> mimeTeX user's manual </title>
        !            31:     <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        !            32:     <style type="text/css">
        !            33:       body      { background-image:  none; /* none; or url(); */
        !            34:                   /*background-repeat: repeat-y;*/
        !            35:                   /*background-attachment: fixed;*/ /* fixed; or scroll; */
        !            36:                   background-color:  #ffffff;   color: #000000;
        !            37:                   margin-left: 0.5em;  margin-right: 0.1em;
        !            38:                   font-size: large; /* or medium */
        !            39:                   clear: both }
        !            40:       A:active  { color: blue/*#0000FF*/; text-decoration: none }
        !            41:       A:link    { color: blue/*#0000FF*/; text-decoration: none }
        !            42:       A:visited { color: blue/*#0000FF*/; text-decoration: none }
        !            43:       A:hover   { color: red/*#FF0000*/;  text-decoration: underline
        !            44:                   /*font-style: italic; font-weight: bold;*/
        !            45:                   /*font-size: normal;  line-height: normal*/ }
        !            46:       h1        { color: maroon;  text-decoration: underline;
        !            47:                   font-style: normal;  /* italic oblique */
        !            48:                   font-size: xx-large;
        !            49:                   padding-top: 2.0em;
        !            50:                   letter-spacing: 0.25em }
        !            51:       h2        { color: maroon;  text-decoration: underline;
        !            52:                   font-style: normal;  /* italic oblique */
        !            53:                   font-size: x-large;
        !            54:                   padding-top: 1.0em;
        !            55:                   letter-spacing: 0.20em }
        !            56:       h3        { color: maroon; /*black;   text-decoration: underline;*/
        !            57:                   font-style: normal;  /* italic oblique */
        !            58:                   font-size: large;
        !            59:                   margin-left: 1em;
        !            60:                   padding-top: 0.5em;
        !            61:                   letter-spacing: 0.15em }
        !            62:       center    { padding-top: -0.1em; padding-bottom: -0.1em; }
        !            63:       table     { font-size: large }
        !            64:       table.medium { font-size: medium }
        !            65:       dl        { font-size: large;
        !            66:                   margin-left: 3.0em;   margin-right: 2.5em }
        !            67:       ol        { margin-left: 3.0em;   margin-right: 2.5em }
        !            68:       ul        { margin-left: 3.0em;   margin-right: 2.5em;
        !            69:                   list-style-type: square }
        !            70:       ul ul     { margin-left: -0.5em;  margin-right: 3.5em;
        !            71:                   list-style-type: disc }
        !            72:       pre       { margin-left: 3.0em; font-size: medium; font-weight: bold }
        !            73:       p         { margin-left: 2.0em;   margin-right: 1.5em }
        !            74:       p:first-letter
        !            75:                 { font-size: x-large;   font-weight: bold;
        !            76:                   color: maroon }
        !            77:       p.continue { margin-left: 2.0em;   margin-right: 1.5em;
        !            78:                    padding-top: -0.1em }
        !            79:       p.continue:first-letter
        !            80:                 { font-size: large;   font-weight: normal;
        !            81:                   color: black }
        !            82:       p.warning  { color: red } /* defines  p class=warning */
        !            83:     </style>
        !            84:   <script type="text/javascript">
        !            85:     <!--
        !            86:     // add/clear text to expression
        !            87:     function eqntext(eqn)
        !            88:       { var eqnSrc = document.getElementById(eqn).src;
        !            89:         var texSrc = eqnSrc.substring(eqnSrc.indexOf('?')+1,eqnSrc.length);
        !            90:         addtext(texSrc); }
        !            91:     function addtext(text)
        !            92:       { cleartext();
        !            93:         document.expression.formdata.value += unescape(text);
        !            94:         document.expression.formdata.focus(); }
        !            95:     function cleartext()
        !            96:       { document.expression.formdata.value = "";
        !            97:         //document.inlineframe.value = "";
        !            98:         document.expression.formdata.focus(); }
        !            99:     -->
        !           100:   </script>
        !           101:   </head>
        !           102: <body>
        !           103: 
        !           104: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           105: Banner across top of page, containing title and two example mimeTeX images.
        !           106: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           107: <br>
        !           108: <hr size=4>
        !           109: <center>
        !           110:  <table cellspacing=10>
        !           111:   <tr>
        !           112:    <td align="center">
        !           113:     <a href="#preview"><img id="imageBanr1" onclick="eqntext('imageBanr1')"
        !           114:     src="../cgi-bin/mimetex.cgi?\Large f=b_o+\frac{a_1}{b_1+\frac{a_2}
        !           115:     {b_2+\frac{a_3}{b_3+a_4}}}" alt="" border=0 align=middle></a> </td>
        !           116:    <td align="center" valign="middle">
        !           117:     <center> <font color="maroon" size=4>
        !           118:     <b><nobr>m i m e T e X &nbsp; m a n u a l</nobr></b> <br>
        !           119:     <font size=3>( for mimeTeX version 1.60 )</font> <br>
        !           120:     <font size=3> <b>Click for:</b>&nbsp;
        !           121:      <!-- <a href="http://www.forkosh.com" target="_top">homepage</a>, &nbsp;
        !           122:      <a href="http://www.forkosh.com/resume.html" target="_top">resume</a> -->
        !           123:      <a href="http://www.forkosh.com/mimetextutorial.html" target="_top">
        !           124:      LaTeX tutorial</a><br>
        !           125:      <a href="http://www.forkosh.com/mimetex.html" target="_top">
        !           126:      mimeTeX QuickStart</a><br>
        !           127:      <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
        !           128:      <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
        !           129:      <font size=4>download&nbsp;mimeTeX</font></a></font>
        !           130:     </font> </center> </td>
        !           131:    <td align="center">
        !           132:     <a href="#preview"><img id="imageBanr2" onclick="eqntext('imageBanr2')"
        !           133:     src="../cgi-bin/mimetex.cgi?\Large\scr{J}^{ij}=\frac12\varepsilon_{ijk}
        !           134:     \left[\begin{array}{cc}\sigma_k&0\\0&\sigma_k\end{array}\right]"
        !           135:     alt="" border=0 align=middle></a> <br>
        !           136:     <a href="#examples">more_examples...</a> </td>
        !           137:   </tr>
        !           138:  </table>
        !           139: </center>
        !           140: <hr size=4>
        !           141: <center><b><font color="maroon" size=3>
        !           142: Copyright <font size=5>&copy;</font> 2002-2005,
        !           143: <a href="http://www.forkosh.com">John Forkosh Associates, Inc.</a> <br>
        !           144: email: <a href="mailto:john&#64;forkosh&#46;com">john&#64;forkosh&#46;com</a>
        !           145: </font></b></center>
        !           146: 
        !           147: 
        !           148: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           149: Table of Contents
        !           150: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           151: <br><br>
        !           152: <center><b><font color="maroon" size=5>
        !           153:  <u> &nbsp; &nbsp; &nbsp; C o n t e n t s &nbsp; &nbsp; &nbsp; </u></font></b>
        !           154: <br>
        !           155: <table cellspacing=0 class="medium">
        !           156:  <tr>
        !           157:   <td valign="top" align="center" width=150>
        !           158:    <b>- - - T u t o r i a l - - -</b> </td>
        !           159:   <td valign="top" align="center" colspan=3 width=450>
        !           160: - - - - - - - - - - - - - - R e f e r e n c e - - - - - - - - - - - - - -</td>
        !           161:  </tr>
        !           162:  <tr>
        !           163:   <td valign="top" align="center" width=150> <font size=3>
        !           164:    <a href="#introduction">&nbsp; (I) Introduction &nbsp;</a><br>
        !           165:     <a href="#quickstart"> a. Quick Start </a><br>
        !           166:     <a href="#examples">   b. Examples </a><br>
        !           167:     <a href="#gpl">        c. GPL License </a> </font> </td>
        !           168:   <td valign="top" align="center" width=150> <font size=3>
        !           169:    <a href="#build">&nbsp; (II) Building mimeTeX &nbsp;</a><br>
        !           170:     <a href="#download">   a. Download </a><br>
        !           171:     <a href="#compile">    b. Compile </a><br>
        !           172:     <a href="#install">    c. Install </a><br>
        !           173:     <a href="#options">    d. Compile Options </a><br>
        !           174:     <a href="#cmdline">    e. Command Line </a> </font> </td>
        !           175:   <td valign="top" align="center" width=150> <font size=3>
        !           176:    <a href="#reference">&nbsp; (III) Syntax Reference &nbsp;</a><br>
        !           177:     <a href="#spaces">     a. Math & White Space </a><br>
        !           178:     <a href="#symbols">    b. Symbols, Sizes, Modes </a><br>
        !           179:     <a href="#delimiters"> c. Delimiters </a><br>
        !           180:     <a href="#accents">    d. Accents, Arrows, etc. </a><br>
        !           181:     <a href="#array">      e. \begin{array} </a><br>
        !           182:     <a href="#picture">    f. \picture(&nbsp;){&nbsp;} </a><br>
        !           183:     <a href="#commands">   g. Other Commands </a><br>
        !           184:     <a href="#exceptions"> h. Other Exceptions </a> </font> </td>
        !           185:   <td valign="top" align="center" width=150> <font size=3>
        !           186:    <a href="#appendices">&nbsp; &nbsp; (IV) Appendices &nbsp; &nbsp;</a><br>
        !           187:     <a href="#fonts">      a. Fonts </a><br>
        !           188:     <a href="#makeraster"> b. make_raster() </a><br>
        !           189:     <a href="#gifsave">    c. gifsave.c </a>
        !           190:     <br><a href="#remarks"> &nbsp; Remarks &nbsp; </a> </font> </td>
        !           191:  </tr>
        !           192: </table></center>
        !           193: 
        !           194: 
        !           195: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           196: SECTION I.  INTRODUCTION
        !           197: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           198: <h1> <a name="introduction">(I) Introduction</a> &nbsp; </h1>
        !           199: 
        !           200: <p> <font color="maroon">MimeTeX, licensed under the
        !           201:     <a href="http://www.gnu.org/licenses/gpl.html" target="_top">gpl</a>,
        !           202:     lets you easily embed LaTeX math in your html pages.</font>
        !           203:     It parses a LaTeX math expression and immediately emits the
        !           204:     corresponding gif image, rather than the usual TeX dvi.
        !           205:     And mimeTeX is an entirely separate little program that doesn't use
        !           206:     TeX or its fonts in any way.  It's just one cgi that you put in your
        !           207:     site's cgi-bin/ directory, with no other dependencies.  So mimeTeX
        !           208:     is very easy to <a href="#quickbuild">install</a>.  And it's equally
        !           209:     easy to use.  Just place an html &lt;img&gt; tag in your document
        !           210:     wherever you want to see the corresponding LaTeX expression.
        !           211:     For example, </p>
        !           212: <pre>  &lt;img&nbsp;src="../cgi-bin/mimetex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt"
        !           213:    alt="" border=0 align=middle&gt;</pre> <p class="continue">immediately
        !           214:     generates the corresponding gif image on-the-fly, displaying
        !           215:     <a href="#preview"><img id="imageI1" onclick="eqntext('imageI1')"
        !           216:     src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
        !           217:     alt="" border=0 align=middle></a> wherever you put that &lt;img&gt tag.
        !           218:     MimeTeX doesn't need intermediate dvi-to-gif conversion, and it doesn't
        !           219:     store separate gif files for each converted expression.
        !           220:     There's also no inherent need to repeatedly write the cumbersome
        !           221:     &lt;img&gt; tag illustrated above.  You can write your own custom
        !           222:     tags, or write a wrapper script around mimeTeX to simplify the
        !           223:     notation. For example,
        !           224:     <a href="http://www.pmichaud.com/wiki/PmWiki/PmWiki" target="_top">
        !           225:     PmWiki</a> already has a
        !           226:     <a href="http://www.pmichaud.com/wiki/Cookbook/MimeTeX" target="_top">
        !           227:     mimeTeX&nbsp;plugin</a> that let's you just write
        !           228:     <b>{$&nbsp;f(x)=\int_{-\infty}^xe^{-t^2}dt&nbsp;$}</b>
        !           229:     to obtain the same image. </p>
        !           230: 
        !           231: <p> MimeTeX's benefit over similar math-on-the-web solutions is, as
        !           232:     mentioned above, its easy installation.  But if that's not a
        !           233:     problem for you, and if your site's server already has a LaTeX
        !           234:     distribution installed, and suitable image conversion utilities like
        !           235:     <a href="http://www.imagemagick.org" target="_top">ImageMagick</a>,
        !           236:     then you may prefer to look at a math rendering script like
        !           237:     <a href="http://www.mayer.dial.pipex.com/tex.htm#latexrender"
        !           238:     target="_top">latexrender</a>
        !           239:     which uses LaTeX to create higher quality images than mimeTeX
        !           240:     produces.  For comparison,
        !           241:     <a href="#preview"><img id="imageI2" onclick="eqntext('imageI2')"
        !           242:     src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^xe^{-t^2}dt"
        !           243:     alt="" border=0 align=middle></a>, with arbitrary mean
        !           244:     <a href="#preview"><img id="imageI3" onclick="eqntext('imageI3')"
        !           245:     src="../cgi-bin/mimetex.cgi?\large\mu" alt="" border=0 align=middle></a>
        !           246:     and standard deviation
        !           247:     <a href="#preview"><img id="imageI4" onclick="eqntext('imageI4')"
        !           248:     src="../cgi-bin/mimetex.cgi?\large\sigma" alt="" border=0
        !           249:     align=middle></a>, and at mimeTeX's next larger font size, looks like </p>
        !           250:      <center>
        !           251:       <table>
        !           252:        <tr align="center">
        !           253: 	<td> <font size="4">mimeTeX</font> </td>
        !           254: 	<td> <img src="../cgi-bin/mimetex.cgi?\hspace{30}"
        !           255:               alt="" border=0> </td>
        !           256: 	<td> <font size="4">latexrender</font> </td>
        !           257:        </tr>
        !           258:        <tr align="center">
        !           259:  	<td>
        !           260: 	 <a href="#preview"><img id="imageI5" onclick="eqntext('imageI5')"
        !           261: 	 src="../cgi-bin/mimetex.cgi?\large
        !           262:          f(x)={\Large\frac1{\sigma\sqrt{2\pi}}}
        !           263: 	 \int_{\small-\infty}^xe^{\small-\frac{(t-\mu)^2}{2\sigma^2}}dt"
        !           264: 	 alt="" border=0 align=middle></a> </td>
        !           265:         <td> &nbsp; </td>
        !           266: 	<td> <img src="http://www.forkosh.com/lrender.gif"
        !           267: 	 alt="" border=0 align=middle> </td>
        !           268:        </tr>
        !           269:       </table>
        !           270:      </center>
        !           271: <p> Similar LaTeX-based solutions that you may want to look at are
        !           272:     <a href="http://www.fourmilab.ch/webtools/textogif/textogif.html"
        !           273:     target="_top">textogif</a> and
        !           274:     <a href="http://www.math.uio.no/~martingu/gladtex/"
        !           275:     target="_top">gladTeX</a>.  Additional discussion and several more
        !           276:     links are at <a href="http://www.tug.org/interest.html#web"
        !           277:     target="_top">www.tug.org/interest.html</a> and in the
        !           278:     <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=LaTeX2HTML"
        !           279:     target="_top">tex-faq</a>. </p>
        !           280: 
        !           281: <p> The remainder of this introductory mimeTeX tutorial section contains </p>
        !           282:      <ul>
        !           283:        <li> First, a concise <a href="#quickstart">Quickstart</a> providing
        !           284:             just enough information for you to try rendering your own
        !           285:             expressions by <a href="#preview">Submitting&nbsp;Queries</a>
        !           286:             right from this page. </li>
        !           287:        <li> Then, a variety of additional <a href="#examples">Examples</a>
        !           288:             that more fully illustrate mimeTeX's capabilities
        !           289:             (later on, Section III comprises a more complete mimeTeX
        !           290:             <a href="#reference">Syntax&nbsp;Reference</a>). </li>
        !           291:        <li> Finally, the <a href="#gpl">gpl</a> license, whose terms
        !           292:             and conditions you must agree to before using mimeTeX.</li>
        !           293:      </ul>
        !           294: <p> You may now want to browse the additional <a href="#examples">Examples</a>
        !           295:     below before proceeding, to make sure mimeTeX suits your needs before you
        !           296:     invest more time learning to use it. </p>
        !           297: 
        !           298: 
        !           299: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           300: QUICKSTART
        !           301: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           302: <h2> <a name="quickstart"> (Ia) Quick Start &nbsp; </a> </h2>
        !           303: 
        !           304:  <p> <!-- Unlike MathML, --> MimeTeX is as TeX-like as possible (though
        !           305:      not 100% compliant), and you must already be familiar with LaTeX
        !           306:      math markup to use it.  If you're not, many online LaTeX
        !           307:      <a href="http://www.tug.org/begin.html#doc" target="_top">turorials</a>
        !           308:      are readily available.  You may also want to browse Andrew Roberts'
        !           309:      <a href="http://www.comp.leeds.ac.uk/andyr/misc/latex/latextutorial9.html"
        !           310:      target="_top">Latex&nbsp;Math&nbsp;I</a> and
        !           311:      <a href="http://www.comp.leeds.ac.uk/andyr/misc/latex/latextutorial10.html"
        !           312:      target="_top">Latex&nbsp;Math&nbsp;II</a>, or my own
        !           313:      <a href="http://www.forkosh.com/mimetextutorial.html" target="_top">
        !           314:      LaTeX&nbsp;math&nbsp;tutorial</a>.
        !           315:      Then, instead of continuing to read this page, you may prefer to
        !           316:      play with mimeTeX yourself.  In that case, just Submit any LaTeX
        !           317:      math expression you like in the Query Box below.  I've started
        !           318:      you out with a little example already in the box, or, instead,
        !           319:      you can Click any of the <a href="#examples">Examples</a> below
        !           320:      to place that corresponding expression in the Query Box. </p>
        !           321: 
        !           322:  <p> Meanwhile, here are just a few quickstart tips for Submitting
        !           323:      your own mimeTeX expressions in the Query Box below: </p>
        !           324:      <ul>
        !           325:       <li> MimeTeX currently has six font sizes selected by
        !           326:            one of the usual declarations
        !           327:            <b>\tiny</b> or <b>\small</b> or <b>\normalsize</b> (default),
        !           328:            or <b>\large</b> or <b>\Large</b> or <b>\LARGE</b>&nbsp;.
        !           329:            For example, &nbsp; <b>\Large&nbsp;\sqrt{x^2+y^2}</b> &nbsp;
        !           330:            renders &nbsp; <b>\sqrt{x^2+y^2}</b> &nbsp; two sizes above
        !           331:            <b>\normalsize</b>. </li>
        !           332: <!--  <li> At smaller font sizes, try preceding your expression with &nbsp;
        !           333:            <b>\light</b> &nbsp; which adjusts mimeTeX's anti-aliasing
        !           334:            parameters to produce thinner lines that you may feel are
        !           335:            more legible, e.g.,<br> &nbsp; &nbsp;
        !           336:            <a href="#preview"><img id="imageIA1" onclick="eqntext('imageIA1')"
        !           337:            src="../cgi-bin/mimetex.cgi?\light\small\displaystyle
        !           338:            e^x=\sum_{n=0}^\infty\frac{x^n}{n!}" alt="" border=0
        !           339:            align=middle> </a>  &nbsp versus &nbsp;
        !           340:            <a href="#preview"><img id="imageIA2" onclick="eqntext('imageIA2')"
        !           341:            src="../cgi-bin/mimetex.cgi?\small\displaystyle
        !           342:            e^x=\sum_{n=0}^\infty\frac{x^n}{n!}" alt="" border=0
        !           343:            align=middle> </a> </li> -->
        !           344:       <li> <!-- For displaystyle math mode limits illustrated above,
        !           345:            write either &nbsp;
        !           346:            <b>\displaystyle&nbsp;e^x=\sum_{n=0}^\infty\frac{x^n}{n!}</b>
        !           347:            &nbsp; or &nbsp; <b>e^x=\sum\limits_{n=0}^\infty\frac{x^n}{n!}</b>
        !           348:            &nbsp; in the usual way (ditto for <b>\int</b>, <b>\prod</b>,
        !           349:            <b>\cup</b>, <b>\cap</b>, etc). -->  <!-- MimeTeX also recognizes
        !           350:            <b>\Bigint</b>, <b>\Bigsum</b>, <b>\Bigprod</b>, and several
        !           351:            similar extra symbols which are a little bigger, and which
        !           352:            automatically render displaystyle limits. -->
        !           353:            <!-- MimeTeX default-renders limits displaystyle at sizes
        !           354:            <b>\large</b> and larger (see the <b>-DDISPLAYSIZE=<i>n</i></b>
        !           355:            <a href="#options">compile&nbsp;option</a> below to change the
        !           356:            default). &nbsp; <b>\textstyle</b> overrides this default for
        !           357:            your entire expression, or <b>\nolimits</b> overrides it
        !           358:            for a single operator. -->
        !           359:            By default, mimeTeX renders limits textstyle &nbsp;
        !           360:            <a href="#preview"> <img id="imageB1" onclick="eqntext('imageB1')"
        !           361:            src="../cgi-bin/mimetex.cgi?\normalsize\textstyle
        !           362:            \sum_{n=0}^\infty\frac{x^n}{n!}" alt="" border=0 align=middle></a>
        !           363:            &nbsp; at sizes <b>\normalsize</b> and smaller,
        !           364:            and renders them displaystyle &nbsp;
        !           365:            <a href="#preview"> <img id="imageB2" onclick="eqntext('imageB2')"
        !           366:            src="../cgi-bin/mimetex.cgi?\normalsize\displaystyle
        !           367:            \sum_{n=0}^\infty\frac{x^n}{n!}" alt="" border=0 align=middle></a>
        !           368:            &nbsp; at sizes <b>\large</b> and larger.
        !           369:            The LaTeX directives <b>\displaystyle</b> or <b>\textstyle</b>,
        !           370:            and <b>\limits</b> or <b>\nolimits</b>, override mimeTeX's default
        !           371:            in the usual way.  Or see the <b>-DDISPLAYSIZE=<i>n</i></b>
        !           372:            <a href="#options">compile&nbsp;option</a> below to change
        !           373:            the default. </li>
        !           374:      </ul>
        !           375:  <p> <a name="forminput"> </a> <a name="preview"> </a>
        !           376:      Now enter your own expression, use the sample provided,
        !           377:      or Click any of the <a href="#examples">Examples</a>.
        !           378:      Then press the Submit button, and mimeTeX's rendering should be
        !           379:      displayed in the little window immediately below it. </p>
        !           380:      <center>
        !           381:       <table border="2" cellpadding="5" cellspacing="0">
        !           382:        <tr align="center"><td>
        !           383:          <form name="expression" action="../cgi-bin/mimetex.cgi"
        !           384:          method="get" target="inlineframe">
        !           385:            <table border="0" cellpadding="0" cellspacing="1">
        !           386:              <tr align="left"><td>
        !           387:                <!-- <font color="#000000" size="+1"><u><b>Enter your
        !           388:                 Expression in Box below, or Click any Example ...
        !           389:                 </b></u></font> <br> -->
        !           390:                <textarea name="formdata" rows="5" cols="72"
        !           391:                 >\Large f(x)=\int_{-\infty}^x e^{-t^2}dt</textarea> <br>
        !           392:              </td></tr>
        !           393:              <tr align="center"><td>
        !           394:                <font size="-1"> <input type="button" onClick="cleartext()"
        !           395:                value="Clear Expression"> &nbsp; &nbsp;
        !           396:                &nbsp; <input type="submit" value="Submit Expression"> </font>
        !           397:              </td></tr>
        !           398:            </table>
        !           399:          </form>
        !           400:          <iframe name="inlineframe" align="middle" width="85%" height="110">
        !           401:          &lt;p&gt;iframe's not supported if you see this.&lt;/p&gt; 
        !           402:          </iframe>
        !           403:        </td></tr>
        !           404:       </table>
        !           405:      </center>
        !           406:  <p> You should see &nbsp;
        !           407:      <a href="#preview"><img id="imageIA3" onclick="eqntext('imageIA3')"
        !           408:      src="../cgi-bin/mimetex.cgi?f(x)=\int\limits_{-\infty}^x e^{-t^2}dt"
        !           409:      alt="" border=0 align=middle></a> if you submit the sample expression
        !           410:      already in the box. </p>
        !           411: 
        !           412:  <p> And the &lt;img&gt; tag to embed this same integral anywhere
        !           413:      in your own document is </p>
        !           414: <pre> &lt;img&nbsp;src="../cgi-bin/mimetex.cgi?\large f(x)=\int_{-\infty}^xe^{-t^2}dt"
        !           415:   alt="" border=0 align=middle&gt;</pre>
        !           416: 
        !           417:  <p> You can see numerous additional examples illustrating html
        !           418:      &lt;img&gt; tags using mimeTeX by viewing this page's source.
        !           419:      The typical mimeTeX &lt;img&gt; tag has the form </p>
        !           420: <pre> &lt;img&nbsp;src="../cgi-bin/mimetex.cgi?any valid LaTeX/mimeTeX expression"
        !           421:   alt="" border=0 align=middle&gt;</pre> <p class="continue">
        !           422:      where <b>../cgi-bin/mimetex.cgi</b> is the relative path from your html
        !           423:      page containing these tags to your compiled mimetex.cgi program, and
        !           424:      where <b>any&nbsp;valid&nbsp;LaTeX/mimeTeX&nbsp;expression</b>
        !           425:      is pretty much any valid LaTeX math expression: </p> <ul>
        !           426:        <li> As discussed in the <a href="#introduction">Introduction</a>,
        !           427:             you can replace cumbersome &lt;img&gt; tags with your own custom
        !           428:             tags or wrapper scripts. </li>
        !           429:        <li> And there are occasional exceptions where I couldn't program
        !           430:             mimeTeX to precisely mimic all valid LaTeX syntax.
        !           431:             One particular "gotcha" to be aware of is that mimeTeX bindings
        !           432:             are pretty much left-to-right.  Thus, for example, although
        !           433:             mimeTeX correctly interprets <b>\frac12</b> as well as
        !           434:             <b>\frac1{x^2}</b>, etc, the legal LaTeX expression
        !           435:             <b>x^\frac12</b> must be written <b>x^{\frac12}</b>.
        !           436:             Otherwise, mimeTeX interprets it as <b>{x^\frac}12</b>, i.e.,
        !           437:             the same way <b>x^\alpha12</b> would be interpreted, which is
        !           438:             nonsense for <b>\frac</b>.  The same "gotcha" also applies to
        !           439:             other combinations of commands, e.g., you must write
        !           440:             <b>\sqrt{\frac\alpha\beta}</b>, etc.
        !           441:             The <a href="#reference">Syntax&nbsp;Reference</a> section
        !           442:             contains much additional information.  Or you can just begin
        !           443:             playing with mimeTeX for yourself to see if it might have
        !           444:             any potential usefulness for you. </li>
        !           445:        <li> Besides the occasional exceptions discussed above, mimeTeX
        !           446:             also provides various LaTeX extensions, i.e., LaTeX errors
        !           447:             permitted by mimetex.  For example, font size changing
        !           448:             directives like <b>\Large</b> are permitted within mimeTeX
        !           449:             math&nbsp;mode expressions.  But note well: if you take
        !           450:             advantage of mimeTeX extensions, your math&nbsp;mode expressions
        !           451:             will no longer be accepted by standard TeX engines. </li> </ul>
        !           452: 
        !           453: 
        !           454: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           455: EXAMPLES
        !           456: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           457: <h2> <a name="examples"> (Ib) Examples &nbsp; </a> </h2>
        !           458: 
        !           459:  <p> Here are various additional random examples further demonstrating
        !           460:      mimeTeX's features and usage.  To see how they're done, Click any
        !           461:      one of them to place its corresponding expression in the
        !           462:      <a href="#preview">Query&nbsp;Box</a> above.  Then press Submit
        !           463:      to re-render it, or you can edit the expression first to suit
        !           464:      your own purposes. </p>
        !           465: 
        !           466: <table cellspacing=15>
        !           467: <!-- first example: taylor series for e^x at various font sizes and colors
        !           468: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           469:  <tr>
        !           470:   <td>
        !           471:     <font size=5><a name="example1">(1)</a></font> &nbsp;&nbsp;&nbsp; </td>
        !           472:   <td align="left" colspan=4>
        !           473:     <a href="#preview">
        !           474:       <img id="example1a" onclick="eqntext('example1a')"
        !           475:       src="../cgi-bin/mimetex.cgi?\red\small\displaystyle
        !           476:       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
        !           477:       alt="" border=0 align=middle></a> &nbsp &nbsp
        !           478:     <a href="#preview">
        !           479:       <img id="example1b" onclick="eqntext('example1b')"
        !           480:       src="../cgi-bin/mimetex.cgi?\green\normalsize\displaystyle
        !           481:       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
        !           482:       alt="" border=0 align=middle></a> &nbsp &nbsp
        !           483:     <a href="#preview">
        !           484:       <img id="example1c" onclick="eqntext('example1c')"
        !           485:       src="../cgi-bin/mimetex.cgi?\blue\large
        !           486:       e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
        !           487:       alt="" border=0 align=middle></a> &nbsp &nbsp
        !           488:     <a href="#preview">
        !           489:       <img id="example1d" onclick="eqntext('example1d')"
        !           490:       src="../cgi-bin/mimetex.cgi?\reverse\opaque\light
        !           491:       \Large e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
        !           492:       alt="" border=0 align=middle></a> &nbsp &nbsp
        !           493:     <a href="#preview">
        !           494:       <img id="example1e" onclick="eqntext('example1e')"
        !           495:       src="../cgi-bin/mimetex.cgi?\Large
        !           496:       e^x=\lim_{n\to\infty} \left(1+\frac xn\right)^n"
        !           497:       alt="" border=0 align=middle></a>
        !           498:   </td>
        !           499:  </tr>
        !           500: 
        !           501: <!-- second example
        !           502: +++++++++++++++++++ -->
        !           503:  <tr>
        !           504:   <td>
        !           505:     <font size=5>(2)</font> </td>
        !           506:   <td align="left" colspan=4>
        !           507:     <a href="#preview">
        !           508:     <img id="example2" onclick="eqntext('example2')"
        !           509:     src="../cgi-bin/mimetex.cgi?\Large\frac{dv^m}{ds}=-\Gamma^m_{oo}v^{o^2}
        !           510:     =-g^{mn}\Gamma_{noo}v^{o^2}=\frac12g^{mn}g_{oo,n}v^{o^2}"
        !           511:     alt="" border=0 align=middle></a> </td>
        !           512:  </tr>
        !           513: 
        !           514: <!-- third example
        !           515: ++++++++++++++++++ -->
        !           516:  <tr>
        !           517:   <td>
        !           518:     <font size=5>(3)</font> </td>
        !           519:   <td align="left" colspan=4>
        !           520:     <a href="#preview">
        !           521:     <img id="example3" onclick="eqntext('example3')"
        !           522:     src="../cgi-bin/mimetex.cgi?\Large\varepsilon=\sum_{i=1}^{n-1}
        !           523:     \frac1{\Delta x}\int_{x_i}^{x_{i+1}}\left\{\frac1{\Delta x}\big[
        !           524:     (x_{i+1}-x)y_i^\ast+(x-x_i)y_{i+1}^\ast\big]-f(x)\right\}^2dx"
        !           525:     alt="" border=0 align=middle></a> </td>
        !           526:  </tr>
        !           527: 
        !           528: <!-- fourth example: solution to quadratic, definition of derivative
        !           529: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           530:  <tr>
        !           531:   <td>
        !           532:     <font size=5>(4)</font> </td>
        !           533:   <td align="left" colspan=4>
        !           534:     <table>
        !           535:       <tr>
        !           536:        <td align="left">
        !           537:          <a href="#preview">
        !           538:          <img id="example4a" onclick="eqntext('example4a')"
        !           539:          src="../cgi-bin/mimetex.cgi?\LARGE x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}"
        !           540:          alt="" border=0 align=middle></a> </td>
        !           541:        <td>
        !           542:          solution for quadratic </td>
        !           543:       </tr>
        !           544:       <tr> <td> <br> </td> </tr>
        !           545:       <tr>
        !           546:        <td align="left">
        !           547:          <a href="#preview">
        !           548:          <img id="example4b" onclick="eqntext('example4b')"
        !           549:          src="../cgi-bin/mimetex.cgi?\large f^\prime(x)\ =
        !           550:          \lim_{\Delta x\to0}\frac{f(x+\Delta x)-f(x)}{\Delta x}"
        !           551:          alt="" border=0 align=middle></a> </td>
        !           552:        <td>
        !           553:          definition of derivative </td>
        !           554:       </tr>
        !           555:     </table> </td>
        !           556:  </tr>
        !           557: 
        !           558: <!-- fifth example:  continued fraction
        !           559: +++++++++++++++++++++++++++++++++++++++ -->
        !           560:  <tr>
        !           561:   <td>
        !           562:     <font size=5>(5)</font> </td>
        !           563:   <td align="left">
        !           564:     <a href="#preview">
        !           565:     <img id="example5" onclick="eqntext('example5')"
        !           566:     src="../cgi-bin/mimetex.cgi?\LARGE f=b_o+\frac{a_1}{b_1+
        !           567:     \frac{a_2}{b_2+\frac{a_3}{b_3+a_4}}}"
        !           568:     alt="" border=0 align=middle></a> </td>
        !           569:   <td>
        !           570:     illustrating <b>\frac{}{}</b> for continued fraction </td>
        !           571:  </tr>
        !           572: 
        !           573: <!-- sixth example:  demonstrating  \left\{ ... \right.
        !           574: +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           575:  <tr>
        !           576:   <td>
        !           577:     <font size=5>(6)</font> </td>
        !           578:   <td align="left">
        !           579:     <a href="#preview">
        !           580:     <img id="example6" onclick="eqntext('example6')"
        !           581:     src="../cgi-bin/mimetex.cgi?\LARGE\tilde y=\left\{
        !           582:     {\ddot x\text{ if x odd}\atop\hat{\,\bar x+1}\text{ if even}}\right."
        !           583:     alt="" border=0 align=middle></a> </td>
        !           584:   <td>
        !           585:     illustrating <b>\left\{...\right<font size=5>.</font></b>
        !           586:     <!-- we may write <b>\{...\.</b> --> <br>
        !           587:     and note the accents </td>
        !           588:  </tr>
        !           589: 
        !           590: <!-- seventh example:  demonstrating \overbrace \underbrace
        !           591: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           592:  <tr>
        !           593:   <td>
        !           594:     <font size=5>(7)</font> </td>
        !           595:   <td align="center">
        !           596:     <a href="#preview">
        !           597:     <img id="example7" onclick="eqntext('example7')"
        !           598:     src="../cgi-bin/mimetex.cgi?\Large\overbrace{a,...,a}^{\text{k a^,s}},
        !           599:     \underbrace{b,...,b}_{\text{l b^,s}}\hspace{10}
        !           600:     \normalsize\underbrace{\overbrace{a...a}^{\text{k a^,s}},
        !           601:     \overbrace{b...b}^{\text{l b^,s}}}_{\text{k+l elements}}"
        !           602:     alt="" border=0 align=middle></a> </td>
        !           603:   <td>
        !           604:     <b>\overbrace{}^{}</b> and <b>\underbrace{}_{}</b> <br>
        !           605:     (TeXbook page 181, Exercise 18.41) </td>
        !           606:  </tr>
        !           607: 
        !           608: <!-- eighth example:  demonstrating \begin{array}
        !           609: +++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           610:  <tr>
        !           611:   <td>
        !           612:     <font size=5>(8)</font> </td>
        !           613:   <td align="left" colspan=4>
        !           614:     <table>
        !           615:       <tr>
        !           616:         <td align="left" colspan=2>
        !           617:          <a href="#preview">
        !           618:          <img id="example8a" onclick="eqntext('example8a')"
        !           619:          src="../cgi-bin/mimetex.cgi?\Large\scr{J}^{i0}=+\frac i2
        !           620:          \left[\begin{array}{cc}\sigma_i&0\\0&-\sigma_i\end{array}\right]
        !           621:          \hspace{10}\scr{J}^{ij}=\frac12\varepsilon_{ijk}
        !           622:          \left[\begin{array}{cc}\sigma_k&0\\0&\sigma_k\end{array}\right]"
        !           623:          alt="" border=0 align=middle> </a> </td>
        !           624:       </tr>
        !           625:       <tr> <td> <br> </td> </tr>
        !           626:       <tr>
        !           627:         <td align="left">
        !           628:          <a href="#preview">
        !           629:          <img id="example8b" onclick="eqntext('example8b')"
        !           630:          src="../cgi-bin/mimetex.cgi?\Large A\ =\ \large\left(
        !           631:          \begin{array}{c.ccc}&1&2&3\\\hdash1&a_{11}&a_{12}&a_{13}\\
        !           632:          2&a_{21}&a_{22}&a_{23}\\3&a_{31}&a_{32}&a_{33}\end{array}\right)"
        !           633:          alt="" border=0 align=middle></a> </td>
        !           634:         <td>
        !           635:          demonstrating <a href="#array">\begin{array}</a>'s dashed lines </td>
        !           636:       </tr>
        !           637:     </table> </td>
        !           638:  </tr>
        !           639: 
        !           640: <!-- ninth example: block diagonal form using nested arrays
        !           641: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           642:  <tr>
        !           643:   <td>
        !           644:     <font size=5><a name="example9">(9)</a></font> </td>
        !           645:         <td align="left" colspan="2">
        !           646:          <a href="#preview">
        !           647:          <img id="example9c" onclick="eqntext('example9c')"
        !           648:          src="../cgi-bin/mimetex.cgi?\normalsize
        !           649:          \left(\large\begin{array}{GC+23}
        !           650:          \varepsilon_x\\\varepsilon_y\\\varepsilon_z\\\gamma_{xy}\\
        !           651:          \gamma_{xz}\\\gamma_{yz}\end{array}\right)\ {\Large=}
        !           652:          \ \left[\begin{array}{CC}
        !           653:          \begin{array}\frac1{E_{\fs{+1}x}}
        !           654:          &-\frac{\nu_{xy}}{E_{\fs{+1}x}}
        !           655:          &-\frac{\nu_{\fs{+1}xz}}{E_{\fs{+1}x}}\\
        !           656:          -\frac{\nu_{yx}}{E_y}&\frac1{E_{y}}&-\frac{\nu_{yz}}{E_y}\\
        !           657:          -\frac{\nu_{\fs{+1}zx}}{E_{\fs{+1}z}}&
        !           658:          -\frac{\nu_{zy}}{E_{\fs{+1}z}}
        !           659:          &\frac1{E_{\fs{+1}z}}\end{array} & {\LARGE 0} \\
        !           660:          {\LARGE 0} & \begin{array}\frac1{G_{xy}}&&\\
        !           661:          &\frac1{G_{\fs{+1}xz}}&\\&&\frac1{G_{yz}}\end{array}
        !           662:          \end{array}\right]
        !           663:          \ \left(\large\begin{array}
        !           664:          \sigma_x\\\sigma_y\\\sigma_z\\\tau_{xy}\\\tau_{xz}\\\tau_{yz}
        !           665:          \end{array}\right)"
        !           666:          alt="" border=0 align=middle></a> </td>
        !           667:         <td align="left">
        !           668:          Block diagonal form using nested <b>\begin{array}</b>'s.<br>
        !           669:          Also, note rows aligned across all three arrays.
        !           670:         </td>
        !           671:  </tr>
        !           672: 
        !           673: <!-- tenth example:  demonstrating \begin{eqnarray} to align equations
        !           674: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           675:  <tr>
        !           676:   <td>
        !           677:     <font size=5>(10)</font> </td>
        !           678:   <td align="center">
        !           679:     <a href="#preview">
        !           680:     <img id="example10" onclick="eqntext('example10')"
        !           681:     src="../cgi-bin/mimetex.cgi?\Large\left.\begin{eqnarray}
        !           682:     x+y+z&=&3\\2y&=&x+z\\2x+y&=&z\end{eqnarray}\right\}"
        !           683:     alt="" border=0 align=middle></a> </td>
        !           684:   <td>
        !           685:     using <a href="#array">\begin{eqnarray}</a> to align equations </td>
        !           686:  </tr>
        !           687: 
        !           688: <!-- eleventh example:  demonstrating commutative diagram
        !           689: using \longxxxarrow[] and \begin{array}
        !           690: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           691:  <tr>
        !           692:   <td>
        !           693:     <font size=5>(11)</font> </td>
        !           694:   <td align="center">
        !           695:     <a href="#preview">
        !           696:     <img id="example11" onclick="eqntext('example11')"
        !           697:     src="../cgi-bin/mimetex.cgi?\Large\begin{array}{rccclBCB}
        !           698:     &f&\longrightarrow[75]^{\alpha:{\normalsize f\rightarrow g}}&g\\
        !           699:     \large\gamma&\longdownarrow[50]&&\longdownarrow[50]&\large\gamma\\
        !           700:     &u&\longrightarrow[75]_\beta&v\end{array}"
        !           701:     alt="" border=0 align=middle></a> </td>
        !           702:   <td>
        !           703:     commutative diagram using <a href="#array">\begin{array}</a> </td>
        !           704:  </tr>
        !           705: 
        !           706: <!-- twelfth example:  demonstrating \picture
        !           707: +++++++++++++++++++++++++++++++++++++++++++++ -->
        !           708:  <tr>
        !           709:   <td>
        !           710:     <font size=5>(12)</font> </td>
        !           711:   <td align="left">
        !           712:     <a href="#preview">
        !           713:     <img id="example12" onclick="eqntext('example12')"
        !           714:     src="../cgi-bin/mimetex.cgi?\Large\hspace{5}\unitlength{1}
        !           715:     \picture(175,100){ (50,50){\circle(100)}
        !           716:     (1,50){\overbrace{\line(46)}^{4$\;\;a}}
        !           717:     (52,50){\line(125)} (50,52;115;2){\mid} (52,55){\longleftar[60]}
        !           718:     (130,56){\longrightar[35]} (116,58){r} (c85,50;80;2){\bullet}
        !           719:     (c85,36){\large-q} (c165,36){\large q}
        !           720:     (42,30){\underbrace{\line(32)}_{\small a^2/r\;\;\;}} }"
        !           721:     alt="" border=0 align=middle></a> </td>
        !           722:   <td valign="middle">
        !           723:     mimeTeX <a href="#picture">\picture(size){pic_elems}</a>
        !           724:     "environment", illustrating the image charge <b>- q</b>
        !           725:     for a grounded conducting sphere of radius <b>a</b> with
        !           726:     a charge <b>q</b> at distance <b>r &gt; a</b> outside it. </td>
        !           727:  </tr>
        !           728: 
        !           729: <!-- thirteenth example:  demonstrating \picture
        !           730: +++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           731:  <tr>
        !           732:   <td>
        !           733:     <font size=5>(13)</font> </td>
        !           734:   <td align="left">
        !           735:     <a href="#preview">
        !           736:     <img id="example13" onclick="eqntext('example13')"
        !           737:     src="../cgi-bin/mimetex.cgi?\small\hspace{10}\unitlength{.75}
        !           738:     \picture(120,220){ (60,200){\circle(120,40)} (0,20){\line(0,180)}
        !           739:     (5,189;0,-30){\pict(110,20){(c20,10;70;2){
        !           740:     \pict(40,20){(20,10){\circle(40,20)}(c10,10)+(c30,10)-}} } }
        !           741:     (119,20){\line(0,180)} (60,20){\circle(120,40;34)}}"
        !           742:     alt="" border=0 align=middle></a> </td>
        !           743:   <td valign="middle"> <a href="#picture">\picture</a> "environment"
        !           744:     illustrating the surface polarization charge induced by a uniform
        !           745:     electric field. Inside the slab of material, the volume polarization
        !           746:     charge clearly vanishes. <br><br>  The little
        !           747:     <img src="../cgi-bin/mimetex.cgi?\small\unitlength{.75} \pict(40,20){(20,10)
        !           748:     {\circle(40,20)}(c10,10)+(c30,10)-}" alt="" border=0 align=middle>
        !           749:     dipole image is drawn only once, then multiput across two columns, and
        !           750:     then that result is further multiput down the rows. MimeTeX \picture's
        !           751:     can be used as picture elements in other pictures, nested to any level.
        !           752:     The image at left is picture-in-picture-in-picture. </td>
        !           753:   </tr>
        !           754: </table>
        !           755: <br><br>
        !           756: 
        !           757: <!-- font examples
        !           758: ++++++++++++++++++ -->
        !           759:  <p> Finally, illustrated below are some examples of fonts and symbols
        !           760:      available with mimeTeX.  All symbols and sizes from cmr, cmmi. cmsy,
        !           761:      cmex and rsfs should be available, but they're not all shown.
        !           762:      Mathbb symbols are also available but not shown.
        !           763:      And also not shown are various "constructed symbols" like \sqrt,
        !           764:      accents, etc.  The illustrated font sizes are numbered 4=\Large,
        !           765:      3=\large and 2=\normalsize (not shown are 5=\LARGE, 1=\small and
        !           766:      0=\tiny). </p>
        !           767: 
        !           768: <h3>cmmi latin uppercase, and lowercase</h3>
        !           769: <p> <img src="../cgi-bin/mimetex.cgi?\array{r$
        !           770: 2$\rm~size~4:~&4$A&4$B&4$C&4$D,&4$a&4$b&4$c&4$d\\
        !           771: 2$\rm~3:~&3$E&3$F&3$G&3$H&3$I&3$J&3$K&3$L,&3$e&3$f&3$g&3$h&3$i&3$j&3$k&3$l\\
        !           772: 2$\rm~2:~&2$M&2$N&2$O&2$P&2$Q&2$R&2$S&2$T&2$U&2$V&2$W&2$X&2$Y&2$Z,&
        !           773: 2$m&2$n&2$o&2$p&2$q&2$r&2$s&2$t&2$u&2$v&2$w&2$x&2$y&2$z}"
        !           774: alt="" border=0 align=middle> </p>
        !           775: 
        !           776: <h3>calligraphic, and rsfs (<b>\cal{A}, \scr{B}, etc</b>)</h3>
        !           777: <p> <img src="../cgi-bin/mimetex.cgi?\array{r$
        !           778: 2$\rm~size~4:~&4$\calA&4$\calB&4$\calC&4$\calD&4$\calE&4$\calF&4$\calG,&
        !           779: 4$\scrA&4$\scrB&4$\scrC&4$\scrD&4$\scrE&4$\scrF&4$\scrG\\
        !           780: 2$\rm~3:~&3$\calH&3$\calI&3$\calJ&3$\calK&3$\calL&3$\calM&3$\calN&3$\calO&
        !           781: 3$\calP,&
        !           782: 3$\scrH&3$\scrI&3$\scrJ&3$\scrK&3$\scrL&3$\scrM&3$\scrN&3$\scrO&3$\scrP\\
        !           783: 2$\rm~2:~&2$\calQ&2$\calR&2$\calS&2$\calT&2$\calU&
        !           784: 2$\calV&2$\calW&2$\calX&2$\calY&2$\calZ,&
        !           785: 2$\scrQ&2$\scrR&2$\scrS&2$\scrT&2$\scrU&2$\scrV&2$\scrW&
        !           786: 2$\scrX&2$\scrY&2$\scrZ}"
        !           787: alt="" border=0 align=middle> </p>
        !           788: 
        !           789: <h3>cmmi greek uppercase, and \var lowercase</h3>
        !           790: <p> <img src="../cgi-bin/mimetex.cgi?\array{r$
        !           791: 2$\rm~size~4:~&4$\Gamma&4$\Delta&4$\Theta&4$\Lambda&4$\Xi&4$\Pi&4$\Sigma&
        !           792: 4$\Upsilon&4$\Phi&4$\Psi&4$\Omega,&4$\rm~~&4$\varepsilon&4$\vartheta&4$\varpi&
        !           793: 4$\varrho&4$\varsigma&4$\varphi\\
        !           794: 2$\rm~3:~&3$\Gamma&3$\Delta&3$\Theta&3$\Lambda&3$\Xi&3$\Pi&3$\Sigma&
        !           795: 3$\Upsilon&3$\Phi&3$\Psi&3$\Omega,&~&3$\varepsilon&3$\vartheta&3$\varpi&
        !           796: 3$\varrho&3$\varsigma&3$\varphi\\
        !           797: 2$\rm~2:~&2$\Gamma&2$\Delta&2$\Theta&2$\Lambda&2$\Xi&2$\Pi&2$\Sigma&
        !           798: 2$\Upsilon&2$\Phi&2$\Psi&2$\Omega,&~&2$\varepsilon&2$\vartheta&2$\varpi&
        !           799: 2$\varrho&2$\varsigma&2$\varphi}"
        !           800: alt="" border=0 align=middle> </p>
        !           801: 
        !           802: <h3>cmmi greek lowercase</h3>
        !           803: <p> <img src="../cgi-bin/mimetex.cgi?\array{r$
        !           804: 2$\rm~size~4:~&4$\alpha&4$\beta&4$\gamma&4$\delta&4$\epsilon&4$\zeta&
        !           805: 4$\eta&4$\theta&4$\iota&4$\kappa&4$\lambda&4$\mu&4$\nu&4$\xi&4$%%\omicron%%&
        !           806: 4$\pi&4$\rho&4$\sigma&4$\tau&4$\upsilon&4$\phi&4$\chi&4$\psi&4$\omega\\
        !           807: 2$\rm~3:~&3$\alpha&3$\beta&3$\gamma&3$\delta&3$\epsilon&3$\zeta&
        !           808: 3$\eta&3$\theta&3$\iota&3$\kappa&3$\lambda&3$\mu&3$\nu&3$\xi&3$%%\omicron%%&
        !           809: 3$\pi&3$\rho&3$\sigma&3$\tau&3$\upsilon&3$\phi&3$\chi&3$\psi&3$\omega\\
        !           810: 2$\rm~2:~&2$\alpha&2$\beta&2$\gamma&2$\delta&2$\epsilon&2$\zeta&
        !           811: 2$\eta&2$\theta&2$\iota&2$\kappa&2$\lambda&2$\mu&2$\nu&2$\xi&2$%%\omicron%%&
        !           812: 2$\pi&2$\rho&2$\sigma&2$\tau&2$\upsilon&2$\phi&2$\chi&2$\psi&2$\omega}"
        !           813: alt="" border=0 align=middle> </p>
        !           814: 
        !           815: <h3>cmsy symbols at mimeTeX font size 3</h3>
        !           816: <p> <img src="../cgi-bin/mimetex.cgi?\array{3,r$1$\rm~chars~\\
        !           817: 1$\rm~0-15:~&-&\cdot&\times&\ast&\div&\diamond&\pm&\mp&
        !           818: \oplus&\ominus&\otimes&\oslash&\odot&\bigcirc&\circ&\bullet\\
        !           819: 1$\rm~16-31:~&\asymp&\equiv&\subseteq&\supseteq&\leq&\geq&\preceq&\succeq&
        !           820: \sim&\approx&\subset&\supset&\ll&\gg&\prec&\succ\\
        !           821: 1$\rm~32-47:~&\leftar&\rightar&\uparr&\downar&\leftrightar&\near&\sear&
        !           822: \simeq&\Leftar&\Rightar&\Upar&\Downar&\Leftrightar&\nwar&\swar&\propto\\
        !           823: 1$\rm~48-63:~&\prime&\infty&\in&\ni&\triangle&\bigtriangledo&/&\'&
        !           824: \forall&\exists&\neg&\emptyset&\Re&\Im&\top&\bot\\
        !           825: 1$\rm~64-100:~&\aleph&&\calA&4$.\,.\,.&\calZ&&\cup&\cap&
        !           826: \uplus&\wedge&\vee&\vdash&\dashv&\lfloor&\rfloor&\lceil\\
        !           827: 1$\rm~101-116:~&\rceil&\lbrace&\rbrace&\langle&\rangle&\mid&\parallel&
        !           828: \updownar&\Updownar&\setminus&\wr&\surd&\amalg&\nabla&\int&\sqcup\\
        !           829: 1$\rm~117-127:~&\sqcap&\sqsubseteq&\sqsupseteq&\S&\dag&\ddag&\P&\clubsuit&
        !           830: \Diamond&\Heart&\spadesuit}" alt="" border=0 align=middle> </p>
        !           831: 
        !           832: <h3>a few other cmmi and cmr symbols at mimeTeX font size 4</h3>
        !           833: <p> <img src="../cgi-bin/mimetex.cgi?\array{4,r$
        !           834: 1$\rm~cmmi:~&\leftharpoonup&\leftharpoondo&\rightharpoonup&\rightharpoondo&
        !           835: \triangleright&\triangleleft&\star&\partial&
        !           836: \flat&\natural&\sharp&\smile&\frown&\ell&\imath&\jmath&\wp&\vec\\
        !           837: 1$\rm~cmr:~&\ss&\ae&\oe&\AE&\OE}" alt="" border=0 align=middle> </p>
        !           838: 
        !           839: 
        !           840: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           841: GPL
        !           842: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           843: <h2> <a name="gpl"> (Ic) GPL License &nbsp; </a> </h2>
        !           844: 
        !           845: <font color="black">
        !           846: <b>&quot</b><i>My grandfather once told me there are two kinds of people:<br>
        !           847: &nbsp &nbsp Those who do the work and those who take the credit.<br>
        !           848: &nbsp &nbsp He told me to try to be in the first group; there was much
        !           849: less competition.</i><b>&quot</b><br>
        !           850: Indira Gandhi, the late Prime Minister of India</font> <br>
        !           851: 
        !           852:  <p> MimeTeX's copyright is registered by me with the US Copyright Office,
        !           853:      and I hereby license it to you under the terms and conditions of the
        !           854:      <a href="http://www.gnu.org/licenses/gpl.html" target="_top">GPL</a>.
        !           855:      There is no official support of any kind whatsoever,
        !           856:      and you use mimeTeX entirely at your own risk, with no guarantee
        !           857:      of any kind, in particular with no warranty of merchantability. </p>
        !           858: 
        !           859:  <p> By using mimeTeX, you warrant that you have read, understood
        !           860:      and agreed to these terms and conditions, and that you <!-- are at least
        !           861:      18 years of age and --> possess the legal right and ability to enter
        !           862:      into this agreement and to use mimeTeX in accordance with it. </p>
        !           863: 
        !           864:  <p> Hopefully, the law and ethics regarding computer programs will
        !           865:      evolve to make this kind of obnoxious banter unnecessary.
        !           866:      In the meantime, please forgive me my paranoia. </p>
        !           867: 
        !           868:  <p> To protect your own intellectual property, I recommend
        !           869:      <a href="http://lcweb.loc.gov/copyright/circs/circ1.html"
        !           870:      target="_top">Copyright Basics</a> from The Library of Congress, and
        !           871:      similarly, <a href="http://www.abanet.org/intelprop/comm106/106copy.html"
        !           872:      target="_top">Copyright Basics</a> from The American Bar Association.
        !           873:      Very briefly, download
        !           874:      <a href="http://www.copyright.gov/forms/formtxi.pdf">Form&nbsp;TX</a>
        !           875:      and follow the included instructions.
        !           876:      In principle, you automatically own the copyright
        !           877:      to anything you write the moment it's on paper.  In practice,
        !           878:      if the matter comes under dispute, the courts look _very_ favorably
        !           879:      on you for demonstrating your intent by registering the copyright. </p>
        !           880: 
        !           881: 
        !           882: 
        !           883: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !           884: SECTION II.  BUILDING MIMETEX
        !           885: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !           886: <h1> <a name="build"> (II) Building mimeTeX &nbsp; </a> </h1>
        !           887: 
        !           888: <!-- <center> -->
        !           889:     <table border="0" cellpadding="0" cellspacing="0">
        !           890:       <tr><td><center><hr size="2">Very quickly &nbsp; --- &nbsp; download
        !           891:         <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
        !           892:         <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
        !           893:         mimetex.zip</a> and then type
        !           894:           <table border="0" cellpadding="0" cellspacing="0">
        !           895:            <tr align="left">
        !           896:             <td><img src="../cgi-bin/mimetex.cgi?\hspace{50}" alt="" border=0></td>
        !           897:             <td><b>unzip mimetex.zip</b> <br>
        !           898:                 <b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b></td>
        !           899:           </tr></table>
        !           900:         &nbsp; &nbsp; &nbsp; Now <b>mv</b> mimetex.cgi to your <b>cgi-bin/</b>
        !           901:         directory, and you're all done. &nbsp; &nbsp; &nbsp; <br>
        !           902:         Read the rest of this section for more detailed
        !           903:         information.<hr size="2"></center></td>
        !           904:       <td><img src="../cgi-bin/mimetex.cgi?\hspace{150}" alt="" border=0></td>
        !           905:      </tr></table>
        !           906: <!-- </center> -->
        !           907: 
        !           908: <p> I've built and run mimeTeX under Linux and NetBSD using gcc. The source
        !           909:     code is ansi-standard C, and should compile and execute under all
        !           910:     environments without any change whatsoever. Build instructions below
        !           911:     are for Unix.  Modify them as necessary for your particular situation
        !           912:     (note the -DWINDOWS switch if applicable). </p>
        !           913: 
        !           914: <p> A summary of the steps needed to build mimeTeX is </p>
        !           915:   <ul>
        !           916:    <li> Download and unzip 
        !           917:         <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
        !           918:         <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
        !           919:         mimetex.zip</a> in any convenient working directory. </li>
        !           920:    <li> To compile an executable that emits anti-aliased gif images
        !           921:         (which is how the page you're viewing is displayed)<br>
        !           922:         &nbsp; <b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
        !           923:    <li> or, to emit gif images without anti-aliasing<br>
        !           924:         &nbsp; <b>cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi</b> </li>
        !           925:    <li> Alternatively, to compile an executable that emits mime xbitmaps<br>
        !           926:         &nbsp; <b>cc -DXBITMAP mimetex.c -lm -o mimetex.cgi</b> </li>
        !           927:    <li> Compile Notes: <ul>
        !           928:         <li> If (and only if) you're compiling a Windows executable with
        !           929:         the <b>-DAA</b> or <b>-DGIF</b> option (but not -DXBITMAP), then
        !           930:         add <b>-DWINDOWS</b>&nbsp;.  For example, <br>
        !           931:              &nbsp; &nbsp; &nbsp; &nbsp; <b>cc -DAA -DWINDOWS
        !           932:              mimetex.c gifsave.c -lm -o mimetex.cgi</b> <br>
        !           933:         The above Unix-like syntax works with
        !           934:         <a href="http://www.mingw.org" target="_top">MinGW</a> and
        !           935:         <a href="http://www.delorie.com/djgpp/" target="_top">djgpp</a>
        !           936:         Windows compilers, but probably not with most others,
        !           937:         where it's only intended as a "template". </li>
        !           938:         <!-- <li> If you're compiling on Sun or VMS, and see about a zillion
        !           939:         irritating warnings, try adding <b>-DSIGNEDCHAR</b>
        !           940:         (for VMS, that's cc/define=(AA,SIGNEDCHAR)&nbsp;mimetex.c) </li> -->
        !           941:         </ul> </li>
        !           942:   </ul>
        !           943: <p> And a summary of the steps needed to install mimeTeX is </p>
        !           944:   <ul>
        !           945:    <li> Just &nbsp; mv mimetex.cgi &nbsp; to your server's <b>cgi-bin/</b>
        !           946:         directory, set permissions as necessary, and you're all done. </li>
        !           947:    <li> Now, to quickly test your mimetex.cgi, try typing a url into
        !           948:         your browser's locator window something like &nbsp;
        !           949:         <b>http://www.<i>yourdomain</i>.com/cgi-bin/mimetex.cgi?x^2+y^2</b>
        !           950:         &nbsp; which should display &nbsp;
        !           951:         <img src="../cgi-bin/mimetex.cgi?x^2+y^2" alt="" border=0
        !           952:         align=middle> &nbsp; in the upper-left corner of your window. </li>
        !           953:    <li> After the preceding test succeeds, you can optionally
        !           954:         &quot;regression&nbsp;test&quot; all mimeTeX features as follows:<ul>
        !           955:         <li> mv mimetex.html (this file) to your server's <b>htdocs/</b>
        !           956:         directory </li>
        !           957:         <li> If the relative path from htdocs to cgi-bin isn't
        !           958:         <b>../cgi-bin</b> then edit mimetex.html and change the
        !           959:         few dozen occurrences as necessary (globally changing
        !           960:         <b>../cgi-bin/mimetex.cgi</b> should work). </li>
        !           961:         <li> Now visit your page &nbsp;
        !           962:         <b>http://www.<i>yourdomain</i>.com/mimetex.html</b> </li>
        !           963:         <li> Once mimetex.html displays properly, you can assume
        !           964:         everything is working, and can begin authoring html documents
        !           965:         using mimetex.cgi to render your own math. </li> </ul>
        !           966:   </ul>
        !           967:   <p> Any problems with the above?
        !           968:   Read the more detailed instructions below. </p>
        !           969: 
        !           970: 
        !           971: <h2> <a name="download"> (IIa) Download &nbsp; </a> </h2>
        !           972: 
        !           973:  <p> Download
        !           974:      <!-- jfa <a href="http://www.forkosh.com/mimetex.zip"> -->
        !           975:      <a href="ftp://ftp.tex.ac.uk/tex-archive/support/mimetex/mimetex.zip">
        !           976:      mimetex.zip</a> and unzip it in any convenient working directory.
        !           977:      Your working directory should now contain </p> <center>
        !           978:        <table cellpadding=0 cellspacing=0>
        !           979:          <tr><td width=100>README</td> <td>mimeTeX release notes</td></tr>
        !           980:          <tr><td>LICENSE</td>    <td>GPL license, under which you may use
        !           981:                                      mimeTeX</td></tr>
        !           982:          <tr><td>mimetex.c</td>  <td>mimeTeX source program and all required
        !           983:                                      functions</td></tr>
        !           984:          <tr><td>mimetex.h</td>  <td>header file for mimetex.c (and for
        !           985:                                      gfuntype.c)</td></tr>
        !           986:          <tr><td>gfuntype.c</td> <td>parses output from <b>gftype -i</b>
        !           987:                                      and writes bitmap data</td></tr>
        !           988:          <tr><td>texfonts.h</td> <td>output from several <b>gfuntype</b> runs,
        !           989:                                      needed by mimetex.c</td></tr>
        !           990:          <tr><td>gifsave.c</td>  <td>gif library by Sverre H. Huseby
        !           991:                                      <a href="http://shh.thathost.com">
        !           992:                                      http://shh.thathost.com</a></td></tr>
        !           993:          <tr><td>mimetex.html</td> <td>this file, mimeTeX tutorial and
        !           994:                                      user's manual</td></tr>
        !           995:        </table></center>
        !           996:  <p> Note: all files use Unix line termination, i.e., linefeeds
        !           997:      (without carriage returns) signal line endings. Conversion for
        !           998:      Windows PC's, Macs, VMS, etc, can usually be accomplished by
        !           999:      unzip's&nbsp;-a option, i.e.,  unzip&nbsp;-a&nbsp;mimetex.zip </p>
        !          1000: 
        !          1001: 
        !          1002: <h2> <a name="compile"> (IIb) Compile &nbsp; </a> </h2>
        !          1003: 
        !          1004:  <p> To compile a mimeTeX executable that emits anti-aliased gif images
        !          1005:      (which is recommended for most uses) issue the command </p>
        !          1006:      <center><b>cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi</b>
        !          1007:      </center>
        !          1008: 
        !          1009:  <p> Or, for an executable that emits gif images without anti-aliasing,
        !          1010:      issue the command </p>
        !          1011:      <center><b>cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi</b>
        !          1012:      </center>
        !          1013: 
        !          1014:  <p> Alternatively, to compile a mimeTeX executable that emits
        !          1015:      mime xbitmaps, just issue the command </p>
        !          1016:      <center><b>cc -DXBITMAP mimetex.c -lm -o mimetex.cgi</b>
        !          1017:      </center>
        !          1018: 
        !          1019:  <p> Compile Notes: </p> <ul>
        !          1020:      <li> If (and only if) you're compiling a Windows executable with
        !          1021:           the <b>-DAA</b> or <b>-DGIF</b> option (but not -DXBITMAP), then
        !          1022:           add <b>-DWINDOWS</b>&nbsp;.  For example, <br>
        !          1023:              &nbsp; &nbsp; &nbsp; &nbsp; <b>cc -DAA -DWINDOWS
        !          1024:              mimetex.c gifsave.c -lm -o mimetex.cgi</b> <br>
        !          1025:           The above Unix-like syntax works with
        !          1026:           <a href="http://www.mingw.org" target="_top">MinGW</a> and
        !          1027:           <a href="http://www.delorie.com/djgpp/" target="_top">djgpp</a>
        !          1028:           Windows compilers, but probably not with most others,
        !          1029:           where it's only intended as a "template". <br>
        !          1030:           &nbsp; &nbsp; Explanation: mimeTeX writes gif bytes directly to
        !          1031:           stdout, as usual for cgi's.  But Windows treats
        !          1032:           stdout as a character stream, interpreting any hex 0A byte
        !          1033:           as an &lt;lf&gt;, and automatically preceding it with
        !          1034:           a spurious hex 0D &nbsp; &lt;cr&gt; byte.  The -DWINDOWS switch
        !          1035:           compiles in a non-portable, Windows-specific _setmode()
        !          1036:           call that sets stdout to binary mode. </li>
        !          1037:      </ul>
        !          1038: 
        !          1039:  <p> Several other optional compile-line <a href="#options">options</a>
        !          1040:      available for mimetex.c are discussed below. </p>
        !          1041: 
        !          1042:  <p> The gfuntype program is only needed if you plan to change the
        !          1043:      font information in texfonts.h, as explained in
        !          1044:      <a href="#fonts">Appendix IVa</a> below.
        !          1045:      In that case, compile gfuntype with the command </p>
        !          1046:      <center><b>cc gfuntype.c mimetex.c -lm -o gfuntype</b></center>
        !          1047: 
        !          1048:  <p> That's all there is to building mimeTeX.  You can now test your
        !          1049:      mimetex.cgi executable from the Unix command line by typing, e.g.,
        !          1050:      <b>./mimetex.cgi&nbsp;"x^2+y^2"</b> which should emit two ascii
        !          1051:      rasters something like the following </p> <pre>
        !          1052: Ascii dump of bitmap image...           Hex dump of colormap indexes...
        !          1053: ...........**....................**...  ..........1**1...................1**1..
        !          1054: ..........*..*......*...........*..*..  ..........*23*......*............*23*..
        !          1055: .............*......*..............*..  .............*......*...............*..
        !          1056: ....****.....*......*.....*..*.....*..  ...1****....2*......*.....2*..*....2*..
        !          1057: ...*.*.*....*.......*....**..*....*...  ...*.*.*...1*.......*.....**..*...1*...
        !          1058: .....*.....*.*..********..*..*...*.*..  ....1*1...2*.*..********..3*..*..2*.*..
        !          1059: .....*....****......*.....*..*..****..  ....2*2...****......*......*12*..****..
        !          1060: ..*.*.*.............*.....*.*.........  ..*.*.*.............*......*.*2........
        !          1061: ...****.............*.....***.........  ..1****.............*......***.........
        !          1062: ....................*.......*.........  ....................*........*.........
        !          1063: .........................*.*..........  ..........................*.*1.........
        !          1064: .........................**...........  ..........................**1..........
        !          1065:                                         The 5 colormap indexes denote rgb vals...
        !          1066:                                         .-->255  1-->196  2-->186  3-->177  *-->0</pre>
        !          1067:     <p class="continue"> <b>(</b>The right-hand illustration shows asterisks
        !          1068:     in the same positions as the left-hand one, along with anti-aliased
        !          1069:     grayscale colormap indexes assigned to neighboring pixels, and with
        !          1070:     the rgb value for each index.<b>)</b>  Just typing <b>./mimetex.cgi</b>
        !          1071:     without an argument should produce ascii rasters for the default
        !          1072:     expression <b>f(x)=x^2</b>.  If you see the two ascii rasters then your
        !          1073:     binary's good, so mv it to your server's <b>cgi-bin/</b> directory and
        !          1074:     set permissions as necessary. </p>
        !          1075: 
        !          1076: <h2> <a name="install"> (IIc) Install &nbsp; </a> </h2>
        !          1077: 
        !          1078:  <p> Once mimetex.cgi is working, mv it to your server's <b>cgi-bin/</b>
        !          1079:      directory (wherever cgi programs are expected), and chmod/chown it
        !          1080:      if necessary.  Then mv mimetex.html to your server's <b>htdocs/</b>
        !          1081:      directory.  Now point your browser to www.yourdomain.com/mimetex.html ,
        !          1082:      and you should see a page identical to this one. </p>
        !          1083: 
        !          1084:  <p> Note: the two directories are typically of the form
        !          1085:      somewhere/www/cgi-bin/ and somewhere/www/htdocs/ ,  so I set up
        !          1086:      mimtex.html to get mimetex.cgi from the relative path <b>../cgi-bin/</b>.
        !          1087:      If your directories are non-conforming, you may have to edit the
        !          1088:      few dozen occurrences of <b>../cgi-bin/mimetex.cgi</b> in mimetex.html .
        !          1089:      Sometimes a suitable symlink works; if not, you'll have to edit.
        !          1090:      Globally changing <b>../cgi-bin/mimetex.cgi</b> often works. </p>
        !          1091: 
        !          1092:  <p> Either way, once mimetex.html displays properly, you can assume
        !          1093:      everything is working, and can begin authoring html documents using
        !          1094:      mimetex.cgi to render your own math. </p>
        !          1095: 
        !          1096: 
        !          1097: <h2> <a name="options"> (IId) Additional Compile-Line Options &nbsp; </a></h2>
        !          1098: 
        !          1099:  <p> In addition to -DAA or -DGIF or -DXBITMAP (along with -DWINDOWS
        !          1100:      when necessary) on the mimetex.c compile line, as discussed above,
        !          1101:      you may also optionally include the following -D switches,
        !          1102:      whose functionality is discussed below. </p>
        !          1103:      <dl>
        !          1104:       <dt> <b>-DAA</b> </dt>
        !          1105:        <dd> As already discussed, -DAA turns on anti-aliasing.
        !          1106:            It also sets default values for individual anti-aliasing
        !          1107:            parameters discussed below.  If you specify -DAA
        !          1108:            then you needn't specify the individual parameters unless
        !          1109:            you want to override the defaults. <br>
        !          1110:            &nbsp; &nbsp; &nbsp; Anti-aliasing can't be applied to mime
        !          1111:            xbitmaps, so don't specify -DAA if you also specify -DXBITMAP. <br>
        !          1112:            &nbsp; &nbsp; &nbsp; And mimeTeX's anti-aliasing only works
        !          1113:            well on white (or light gray) backgrounds.  Your html file
        !          1114:            probably contains a &lt;body&gt; tag of the form
        !          1115:            &lt;body&nbsp;bgcolor="#ffffff"&nbsp;text="#000000"&gt;
        !          1116:            which specifies black text on a pure white background.
        !          1117:            The background can be grayed down to maybe bgcolor="#e7e7e7",
        !          1118:            but much darker will begin to show white rings around
        !          1119:            mimeTeX's anti-aliased characters.  This page is displayed
        !          1120:            using bgcolor="#ffffff". </dd>
        !          1121:       <dt> <b>-DCENTERWT=<i>n</i> <br>
        !          1122:            -DADJACENTWT=<i>j</i>  <br>
        !          1123:            -DCORNERWT=<i>k</i></b> </dt>
        !          1124:        <dd> MimeTeX currently provides a lowpass filtering
        !          1125:            algorithm for anti-aliasing, which is applied to the
        !          1126:            existing set of bitmap fonts.  This lowpass filter applies
        !          1127:            weights <img src="../cgi-bin/mimetex.cgi?
        !          1128:            \tiny\begin{pmatrix}1&3&1\\3&\,32\,&3\\1&3&1\end{pmatrix}"
        !          1129:            alt="" border=0 align=middle> to neighboring pixels. The defaults
        !          1130:            weights are CENTERWT=32, ADJACENTWT=3 and CORNERWT=1,
        !          1131:            which you can adjust to control anti-aliasing. </dd>
        !          1132:       <dt> <b>-DCACHEPATH=\"<i>path/</i>\"</b> </dt>
        !          1133:        <dd> This option saves each rendered image to a file in directory
        !          1134:            <b><i>path/</i></b>, which mimeTeX reads rather than
        !          1135:            re-rendering the same image every time it's given
        !          1136:            the same LaTeX expression.  Sometimes mimeTeX disables caching,
        !          1137:            e.g., expressions containing <b>\input{&nbsp;}</b> are
        !          1138:            re-rendered since the contents of the inputted file may have
        !          1139:            changed.  If compiled without <b>-DCACHEPATH=\"<i>path/</i>\"</b>
        !          1140:            mimeTeX always re-renders expressions.  This usually isn't too
        !          1141:            cpu intensive, but if you have unusually high hit rates then
        !          1142:            image caching may be helpful.  The <b><i>path/</i></b>
        !          1143:            is relative to mimetex.cgi, and must be writable by it.
        !          1144:            Files created under <b><i>path/</i></b> are named
        !          1145:            <b><i>filename</i>.gif</b>, where <b><i>filename</i></b>
        !          1146:            is the 32-character MD5 hash of the LaTeX expression. <br>
        !          1147:            &nbsp; &nbsp; &nbsp; When caching a new image, mimeTeX also
        !          1148:            updates the file <b><i>path/</i>mimetex.log</b> containing
        !          1149:            a timestamp, filename and LaTeX expression for each new file
        !          1150:            created.  A sample entry looks like
        !          1151: <pre>---------------------------------------------------------------------
        !          1152: 2004-08-07:09:00:53am            f8ccc8dd93c8eeb1d9c40b353ef781e0.gif
        !          1153: \LARGE x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
        !          1154: ---------------------------------------------------------------------</pre></dd>
        !          1155:       <dt><b>-DDISPLAYSIZE=<i>n</i></b> </dt>
        !          1156:        <dd> By default, operator limits like <b>\int_a^b</b> are rendered
        !          1157:            <b>\textstyle</b> <a href="#preview">
        !          1158:            <img id="displaysize1" onclick="eqntext('displaysize1')"
        !          1159:            src="../cgi-bin/mimetex.cgi?\normalsize\int_a^b"
        !          1160:            alt="" border=0 align=middle></a> at font sizes <b>\normalsize</b>
        !          1161:            and smaller, and rendered <b>\displaystyle</b> <a href="#preview">
        !          1162:            <img id="displaysize2" onclick="eqntext('displaysize2')"
        !          1163:            src="../cgi-bin/mimetex.cgi?\large\int_a^b"
        !          1164:            alt="" border=0 align=middle></a> at font sizes <b>\large</b> and
        !          1165:            larger.  This default corresponds to <b>-DDISPLAYSIZE=3</b>,
        !          1166:            which you can adjust; e.g., <b>-DDISPLAYSIZE=0</b> always defaults
        !          1167:            to <b>\displaystyle</b>, and <b>99</b> (or any large number)
        !          1168:            always defaults to <b>\textstyle</b>.  Note that explicit
        !          1169:            <b>\textstyle</b>, <b>\displaystyle</b>, <b>\limits</b> or
        !          1170:            <b>\nolimits</b> directives in an expression always override
        !          1171:            the <b>DISPLAYSIZE</b> default. </dd>
        !          1172:       <dt><b>-DNEWCOMMANDS=<i>newcommands.h</i></b> </dt>
        !          1173:        <dd> LaTeX-like <b>\newcommand</b>'s are available in mimeTeX,
        !          1174:            via the following facility to help you define your
        !          1175:            own "new&nbsp;commands" during compilation.  Edit a file named
        !          1176:            newcommands.h (or any filename you specify with the
        !          1177:            <b>-DNEWCOMMANDS</b> switch).  For newcommands _without_
        !          1178:            arguments, your file should contain one or more lines
        !          1179:            like the following examples:
        !          1180: <pre>{ "\\iint",  NULL, "{\\int\\int}" },
        !          1181: { "\\rightleftharpoons",NULL,"{\\rightharpoonup\\atop\\leftharpoondown}" },
        !          1182: { "\\ldots", NULL, "{\\Large.\\hspace1.\\hspace1.}" },
        !          1183: { "\\cr",    NULL, "\\\\" },
        !          1184: { "\\neq",   NULL, "{\\not=}" },</pre>
        !          1185:            For newcommands _without_ arguments, as illustrated above,
        !          1186:            the general form of each line in your file should be &nbsp;
        !          1187: <b>{&nbsp;"\\<i>command</i>",&nbsp;NULL,&nbsp;"{<i>replacement</i>}"&nbsp;},</b>
        !          1188:            &nbsp; &nbsp; Don't forget a comma at the end of every line,
        !          1189:            and write a double&nbsp;backslash&nbsp;<b>\\</b>
        !          1190:            between quotes&nbsp;<b>"...\\..."</b> wherever you actually
        !          1191:            want a single&nbsp;backslash&nbsp;<b>\</b>.  The only effect
        !          1192:            of the above examples (without arguments) is simple string
        !          1193:            substitution, i.e.,  every occurrence of <b>\<i>command</i></b>
        !          1194:            is replaced by <b>{<i>replacement</i>}</b>.  Note that the
        !          1195:            <b>{&nbsp;}</b>'s surrounding <b><i>replacement</i></b>
        !          1196:            aren't required, but are usually a good idea (the case
        !          1197:            of <b>\cr</b> illustrated above is one exception, where
        !          1198:            <b>{&nbsp;}</b>'s would defeat the purpose).
        !          1199:            <br> &nbsp; &nbsp; To define newcommands _with_ arguments,
        !          1200:            change the <b>NULL</b> after the <b>\\<i>command</i></b>
        !          1201:            to define your command's arguments as illustrated by the
        !          1202:            following example:
        !          1203: <pre>{ "\\lvec", "2n", "#2_1,\\cdots,#2_{#1}" },</pre>
        !          1204:            In this case the <b>NULL</b> has been replaced by <b>"2n"</b>
        !          1205:            (note the mandatory surrounding quotes <b>"..."</b>).  This
        !          1206:            example corresponds to the similar one discussed in TLC2 on
        !          1207:            page 845.  The first character inside the <b>"..."</b>s is
        !          1208:            &nbsp; <b>2</b> &nbsp; indicating the number of arguments,
        !          1209:            which may be <b>1</b> thru <b>9</b>.  If there are no
        !          1210:            subsequent characters followng this one, then all arguments are
        !          1211:            mandatory, enclosed in <b>{&nbsp;}</b>'s as usual.  Otherwise,
        !          1212:            any subsequent characters signal that the first argument
        !          1213:            is optional, enclosed in <b>[&nbsp;]</b>'s if given.  And
        !          1214:            these subsequent characters comprise the first argument's
        !          1215:            default value if it's not explicitly given.  The illustrated
        !          1216:            example's first argument is optional with default value &nbsp;
        !          1217:            <b>n</b> &nbsp; as shown.  In this case that's just a single
        !          1218:            character, but you can write any length default you like.
        !          1219:            <br> &nbsp; &nbsp; To see many additional examples, search for the
        !          1220:            uppercase string NEWCOMMANDS in mimetex.c, and look below that.
        !          1221:            All the above examples are already there. </dd>
        !          1222:       <dt><b>-DNORMALSIZE=<i>n</i></b> </dt>
        !          1223:        <dd> MimeTeX currently has six font sizes numbered 0-5,
        !          1224:            and always starts out in NORMALSIZE, whose default value is 2.
        !          1225:            Specify -DNORMALSIZE=3 on the compile line if you prefer
        !          1226:            mimeTeX to start in default size 3, etc. </dd>
        !          1227:       <dt> <b>-DPATHPREFIX=\"<i>path/</i>\"</b> </dt>
        !          1228:        <dd> The <a href="#input">\input{&nbsp;}</a> and
        !          1229:            <a href="#counter">\counter{&nbsp;}</a> commands discussed below
        !          1230:            require filename arguments which, by default, point to files
        !          1231:            residing in the same cgi-bin/ directory as your mimetex.cgi.
        !          1232:            Moreover, for security, absolute paths with leading <b>/</b>'s
        !          1233:            or <b>\</b>'s, and paths with <b>../</b>'s or <b>..\</b>'s,
        !          1234:            are not permitted.  Instead, compile mimetex with PATHPREFIX
        !          1235:            defined as <i>path</i><b>/</b> if you want input files in some
        !          1236:            other directory.  And make sure your <i>path</i><b>/</b> ends
        !          1237:            with <b>/</b> (or with <b>\</b> for Windows). </dd>
        !          1238:       <dt> <b>-DREFERER=\"<i>domain</i>\"  or <br>
        !          1239:            -DREFERER=\"<i>domain1,domain2,etc</i>\"</b> </dt>
        !          1240:        <dd> Blocks mimeTeX requests from unauthorized domains that
        !          1241:            are using your mimetex.cgi (hence your server's resources)
        !          1242:            without permission. <br>
        !          1243:            &nbsp; &nbsp; &nbsp; If REFERER is defined, mimeTeX
        !          1244:            performs a case-insensitive test of the environment variable
        !          1245:            HTTP_REFERER to verify that it contains the authorized 'domain'
        !          1246:            as a substring. <br>
        !          1247:            &nbsp; &nbsp; &nbsp; If given several 'domain's (second form)
        !          1248:            then HTTP_REFERER must contain either 'domain1' or
        !          1249:            'domain2', or etc, as a (case-insensitive) substring. <br>
        !          1250:            &nbsp; &nbsp; &nbsp; If HTTP_REFERER doesn't contain a substring
        !          1251:            matching any of these domain(s), then mimeTeX emits an error
        !          1252:            message image instead of the requested image.  You can manually
        !          1253:            modify invalid_referer_msg, defined in function main(),
        !          1254:            to personalize the error message for your own site. <br>
        !          1255:            &nbsp; &nbsp; &nbsp; Finally, if HTTP_REFERER is not found as
        !          1256:            an environment variable, then mimeTeX correctly generates the
        !          1257:            requested image instead of generating an error. </dd>
        !          1258:       <dt><b>-DSECURITY=<i>n</i></b> </dt>
        !          1259:        <dd> This is essentially a "paranoid" setting that defaults
        !          1260:            to a high value 999, which inhibits some optional logging
        !          1261:            activity.  <b>-DCACHEPATH=<i>path</i>/</b> isn't affected,
        !          1262:            since you're explicitly supplying a <b><i>path</i>/</b>
        !          1263:            you want files written to.  But, for example, you must set
        !          1264:            <b>-DSECURITY=5</b> (or less) to permit the <b>\counter</b>
        !          1265:            command to create a new counter file.  A malicious user
        !          1266:            could conceivably flood your file system by submitting
        !          1267:            zillions of <b>\counter{<i>filename</i>}</b> commands
        !          1268:            to mimeTeX, each with a different <b><i>filename</i></b>. </dd>
        !          1269:       <dt><b>-DSQUASHMARGIN=<i>n</i> or <br>
        !          1270:           -DNOSQUASH</b> </dt>
        !          1271:        <dd> TeX typically renders an expression like
        !          1272:            <b>\frac12\int_{a+b+c}^{d+e+f}g(x)dx</b> as <a href="#preview">
        !          1273:            <img id="nosquash1" onclick="eqntext('nosquash1')"
        !          1274:            src="../cgi-bin/mimetex.cgi?\displaystyle
        !          1275:            \nosquash\frac12\int_{a+b+c}^{d+e+f}g(x)dx"
        !          1276:            alt="" border=0 align=middle></a>.  MimeTeX tries to remove extra
        !          1277:            whitespace, rendering the same expression as <a href="#preview">
        !          1278:            <img id="nosquash2" onclick="eqntext('nosquash2')"
        !          1279:            src="../cgi-bin/mimetex.cgi?\displaystyle
        !          1280:            \squash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
        !          1281:            alt="" border=0 align=middle></a> instead.
        !          1282:            Compile with <b>-DNOSQUASH</b> if you prefer the typical TeX
        !          1283:            behavior as mimeTeX's default.  Or, to adjust the minimum
        !          1284:            number of pixels between squashed symbols (default is 3),
        !          1285:            compile with <b>-DSQUASHMARGIN=<i>n</i></b>.
        !          1286:            See <a href="#squash">Squash</a> for further discussion. </dd>
        !          1287:       <dt> <b>-DWARNINGS=<i>n</i>  or <br>
        !          1288:            -DNOWARNINGS</b> </dt>
        !          1289:        <dd> If an expression submitted to mimeTeX contains an
        !          1290:            unrecognzied escape sequence, e.g., "y=x+\abc+1", then
        !          1291:            mimeTeX generates a gif image containing an embedded
        !          1292:            warning in the form "y=x+[\abc?]+1".  Or, if an expression
        !          1293:            contains an unrecognized character, i.e., one for which mimeTeX
        !          1294:            has no corresponding bitmap, then the embedded warning is [?].
        !          1295:            If you want these warnings suppressed, either <b>-DWARNINGS=0</b>
        !          1296:            or <b>-DNOWARNINGS</b> on the compile line tells mimeTeX to treat
        !          1297:            unrecognized/undisplayable input as white space. </dd>
        !          1298:       <dt> <b>-DWHITE</b> </dt>
        !          1299:        <dd>  MimeTeX usually renders black symbols on a white
        !          1300:            background.  This option renders white symbols on
        !          1301:            a black background instead. </dd>
        !          1302:      </dl>
        !          1303: 
        !          1304: 
        !          1305: <h2> <a name="cmdline"> (IIe) Command Line Features &nbsp; </a> </h2>
        !          1306: 
        !          1307:  <p> MimeTeX usually runs from a browser, obtaining its input expression
        !          1308:      from a query_string.  But you can also run mimeTeX from your Unix
        !          1309:      shell, supplying all input from the command line.  This was briefly
        !          1310:      illustrated above, where you were advised to test your newly-compiled
        !          1311:      mimeTeX executable from the command line before installing it. </p>
        !          1312: 
        !          1313:  <p> In addition to such simple testing, mimeTeX also provides some
        !          1314:      possibly useful functionality from the command line.  In particular,
        !          1315:      you can store a gif (or xbitmap) image of any expression to a file.
        !          1316:      No syntax checking is applied to command-line arguments, so enter
        !          1317:      them carefully. </p>
        !          1318:      
        !          1319:  <p> The complete command-line syntax for mimeTeX is </p>
        !          1320:      <pre>
        !          1321:      ./mimetex [ -d ]            dump gif image on stdout,
        !          1322:                [ -e export_file ]  or write gif image to export_file
        !          1323:                [ expression      expression, e.g., "x^2+y^2",
        !          1324:                | -f input_file ]   or read expression from input_file
        !          1325:                [ -m msglevel ]   verbosity of debugging output
        !          1326:                [ -o ]            render image with opaque background
        !          1327:                [ -s fontsize ]   default fontsize, 0-5
        !          1328: 
        !          1329:      -d   Rather than printing ascii debugging output, mimeTeX
        !          1330:           dumps the actual gif (or xbitmap) to stdout, e.g.,
        !          1331:                ./mimetex  -d  "x^2+y^2"  >  expression.gif
        !          1332:           creates expression.gif containing an image of x^2+y^2
        !          1333: 
        !          1334:      -e   Like -d but writes the actual gif (or xbitmap) directly
        !          1335:           to export_file, e.g.,
        !          1336:                ./mimetex  -e expression.gif  "x^2+y^2"
        !          1337:           also creates expression.gif containing an image of x^2+y^2
        !          1338: 
        !          1339:      expression   Place LaTeX expression directly on command
        !          1340:           line, with no -switch preceding it, as in the example
        !          1341:           immediately above, or...
        !          1342: 
        !          1343:      -f   Read expression from input_file (and automatically
        !          1344:           assume -d switch).  The input_file may contain the
        !          1345:           expression on one line or spread out over many lines.
        !          1346:           MimeTeX will concatanate all lines from input_file
        !          1347:           to construct one long expression.  Blanks, tabs, and
        !          1348:           newlines are just ignored.
        !          1349: 
        !          1350:      -m   0-99, controls verbosity level for debugging output
        !          1351:           (usually used only while testing code).
        !          1352: 
        !          1353:      -o   Rather than the default transparent gif background,
        !          1354:           the rendered image will contain black symbols on an
        !          1355:           opaque white background (or vice versa if compiled
        !          1356:           with -DWHITE).  For example, if you have ImageMagick's
        !          1357:           display utility,
        !          1358:                ./mimetex  -o -d  "x^2+y^2" | display &
        !          1359:           opens a small window containing the rendered expression.
        !          1360: 
        !          1361:      -s   0-5, font size.  As usual, the font size can also
        !          1362:           be specified within the expression by a directive,
        !          1363:           e.g., \large f(x)=x^2 displays f(x)=x^2 at font size 3,
        !          1364:           overriding -s.  Default font size is 2.
        !          1365:      </pre>
        !          1366: 
        !          1367: 
        !          1368: 
        !          1369: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !          1370: SECTION III.  SYNTAX REFERENCE
        !          1371: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !          1372: <h1> <a name="reference"> (III) Syntax Reference &nbsp; </a> </h1>
        !          1373: 
        !          1374: <p> Since mimeTeX's syntax is as TeX-like as possible, we'll mostly discuss
        !          1375:     the occasional exceptions (which exist only to simplify my programming
        !          1376:     task, not to impose any syntactic aesthetics of mine on you).  This
        !          1377:     section contains short paragraphs that each discuss some aspect of
        !          1378:     mimeTeX where your LaTeX experience might not be precisely relevant. </p>
        !          1379: 
        !          1380: <p> Anything not discussed here that still doesn't behave like you expect
        !          1381:     is probably just not implemented.  That includes (La)TeX packages
        !          1382:     (though a few ams commands like \begin{gather} and \begin{pmatrix}
        !          1383:     are recognized), non-standard fonts, etc.  You can try out any
        !          1384:     questionable syntax by <a href="#forminput">Submit</a>ting a query
        !          1385:     to quickly see whether or not it works.  And you might want to
        !          1386:     occasionally re-browse the <a href="#examples">Examples</a> above,
        !          1387:     which may better illustrate implemented features. </p>
        !          1388: 
        !          1389: 
        !          1390: <h2> <a name="spaces"> (IIIa) \unitlength{&nbsp;}, Math Spaces and Whitespace
        !          1391: &nbsp; </a> </h2>
        !          1392: 
        !          1393: <h3> <a name="unitlength">\unitlength<font size=5>...</font></a> </h3>
        !          1394: 
        !          1395:  <p> Lengths in mimeTeX are all ultimately expressed in number of pixels.
        !          1396:      Various commands discussed below require length arguments, including </p>
        !          1397:      <ul>
        !          1398:        <li> <a href="#mathspace">\hspace{&nbsp;}</a> </li>
        !          1399:        <li> <a href="#mathspace">\hfill{&nbsp;}</a> </li>
        !          1400:        <li> <a href="#raiserotate">\raisebox{&nbsp;}{&nbsp;}</a> </li>
        !          1401:        <li> <a href="#circleline">\line(&nbsp;,&nbsp;)</a> and
        !          1402:             <a href="#circleline">\circle(&nbsp;,&nbsp;)</a> </li>
        !          1403:        <li> <a href="#arrows">\longrightarrow[&nbsp;]</a> </li>
        !          1404:      </ul> <p class="continue">
        !          1405:      (the \long<i>xxx</i>arrow [&nbsp;]-arguments are optional mimeTeX
        !          1406:      extensions to LaTeX) &nbsp; MimeTeX's length-type arguments never
        !          1407:      take units, e.g., {10pt} and {1cm} are both invalid.  Lengths always
        !          1408:      refer to number of pixels, optionally scaled by a user-specified
        !          1409:      <b>\unitlength</b>. </p>
        !          1410: 
        !          1411:  <p> MimeTeX's <b>\unitlength{&nbsp;}</b> command lets you specify
        !          1412:      the number of pixels per "length&nbsp;unit", e.g.,
        !          1413:      <b>\unitlength{10}&nbsp;\hspace{2.5}</b> renders a 25-pixel space.
        !          1414:      Both <b>\unitlength{&nbsp;}</b> and <b>\hspace{&nbsp;}</b>'s
        !          1415:      length arguments may be integers or may contain decimal points.
        !          1416:      Ditto for all other mimeTeX commands that take length arguments.
        !          1417:      The default <b>\unitlength</b> is, you guessed it, <b>1</b>. </p>
        !          1418: 
        !          1419:  <p> A specified <b>\unitlength</b> applies to all subsequent terms,
        !          1420:      i.e., everything to its right.  And several <b>\unitlength</b>'s
        !          1421:      may be specified in the same expression, each one overriding
        !          1422:      those to its left.  But if one or more <b>\unitlength</b>'s
        !          1423:      appear within a <b>{&nbsp;}</b>-enclosed subexpression, then terms
        !          1424:      following its closing right <b>}</b> revert to the <b>\unitlength</b>
        !          1425:      in effect before its opening left <b>{</b>.  For example, </p> <center>
        !          1426:    <b>A\hspace{10}&nbsp;{\unitlength{2.5}B\hspace{10}C}&nbsp;\hspace{10}D</b>
        !          1427:    &nbsp; produces &nbsp;
        !          1428:    <a href="#preview"><img id="unitlength1" onclick="eqntext('unitlength1')"
        !          1429:    src="../cgi-bin/mimetex.cgi?\large A\hspace{10}
        !          1430:    {\unitlength{2.5}B\hspace{10}C}\hspace{10}D"
        !          1431:    alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1432:      which has a 10-pixel space between <b>A</b>&nbsp;and&nbsp;<b>B</b>, then
        !          1433:      25&nbsp;pixels between <b>B</b>&nbsp;and&nbsp;<b>C</b>, and finally
        !          1434:      another 10&nbsp;pixels between <b>C</b>&nbsp;and&nbsp;<b>D</b>. </p>
        !          1435: 
        !          1436: <h3> <a name="mathspace">Math Spaces<font size=5>...</font></a> </h3>
        !          1437: 
        !          1438:  <p> Except inside <a href="#textboxes">text&nbsp;boxes</a>,
        !          1439:      unescaped blanks, tildes (a&nbsp;<b>~</b>), and all other usual
        !          1440:      <a href="#whitespace">whitespace</a> characters are completely
        !          1441:      ignored by mimeTeX, just like they are in LaTeX math mode.
        !          1442:      As usual, you must explicitly write one of the recognized math
        !          1443:      spaces to put extra visible space in your rendered expressions. </p>
        !          1444: 
        !          1445:  <p> MimeTeX recognizes math spaces <b>\,&nbsp;\:&nbsp;\;</b> as well as
        !          1446:      <b>\/</b> and <b>\quad</b> and <b>\qquad</b>&nbsp;.  You may also
        !          1447:      write <b>\hspace{10}</b> to insert a 10-pixel (or any other number)
        !          1448:      space, scaled by any preceding <a href="#unitlength">\unitlength</a>,
        !          1449:      as illustrated just above.  There are no negative spaces. </p>
        !          1450: 
        !          1451:  <p> Although some browsers occasionally misinterpret typed blank spaces
        !          1452:      inside html query_string's, mimeTeX also recognizes escaped blanks
        !          1453:      <img src="../cgi-bin/mimetex.cgi?1$\backsl\raise{-5}{\rotate{-90}]}"
        !          1454:      alt="" border=0 align=middle> (a <b>\</b> followed by a blank) as math
        !          1455:      spaces, just in case you can safely use them. </p>
        !          1456: 
        !          1457:  <p> MimeTeX also supports <b>\hfill{<i>textwidth</i>}</b>, where
        !          1458:      <b><i>textwidth</i></b> is roughly equivalent to LaTeX's
        !          1459:      <b>\textwidth</b>, i.e., it's the total number of pixels, scaled by
        !          1460:      <a href="#unitlength">\unitlength</a>, that your entire rendered
        !          1461:      expression will span.  However, if <b>\hfill{&nbsp;}</b> appears
        !          1462:      within a <b>{&nbsp;}</b>-enclosed subexpression, then it applies
        !          1463:      only to that subexpression.  For example, </p> <center>
        !          1464:         <b>{abc \hfill{50} def} \hfill{100} ghi</b>
        !          1465:         &nbsp; &nbsp; produces &nbsp; &nbsp;
        !          1466:         <a href="#preview"><img id="mathspace1" onclick="eqntext('mathspace1')"
        !          1467:         src="../cgi-bin/mimetex.cgi?3${abc\hfill{50}def}\hfill{100}ghi"
        !          1468:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1469:      The first/inner <b>\hfill{50}</b> inserts exactly enough whitespace so
        !          1470:      that subexpression "<b><i>abc&nbsp;&nbsp;def</i></b>" spans 50 pixels.
        !          1471:      Then the second/outer <b>\hfill{100}</b> inserts exactly  enough
        !          1472:      whitespace so that the entire expression spans 100 pixels.
        !          1473:      Without explicit <b>{&nbsp;}</b>-nesting, mimeTeX evaluates expressions
        !          1474:      left-to-right (sinistrally), e.g., <b>...\hfill{100}...\hfill{50}...</b>
        !          1475:      is exactly equivalent to <b>...\hfill{100}{...\hfill{50}...}</b>.
        !          1476:      Notice that, this time, the second/right <b><i>textwidth</i></b>
        !          1477:      argument is necessarily smaller than the first/left. </p>
        !          1478: 
        !          1479:  <p> Finally, mimeTeX begins a new line whenever you write <b>\\</b>&nbsp;.
        !          1480:      And you may optionally write <b>\\[10]</b> to put a 10-pixel (or any
        !          1481:      other number) vertical space, scaled by
        !          1482:      <a href="#unitlength">\unitlength</a>, between lines.
        !          1483:      <a href="#array">\begin{eqnarray}</a> also splits long
        !          1484:      equations over several lines, as illustrated by
        !          1485:      <a href="#example10">Example&nbsp;10</a> above.
        !          1486:      But when that's not the best solution, you can also write,
        !          1487:      for example, </p> <center>
        !          1488:         <b>y=a+b+c+d\\\hspace{50}+e+f+g+h</b>
        !          1489:         &nbsp; &nbsp; to produce &nbsp; &nbsp;
        !          1490:         <a href="#preview"><img id="mathspace2" onclick="eqntext('mathspace2')"
        !          1491:         src="../cgi-bin/mimetex.cgi?3$y=a+b+c+d\\\hspace{50}+e+f+g+h"
        !          1492:         alt="" border=0 align=middle></a> </center>
        !          1493: 
        !          1494:  <p> However, mimeTeX can't correctly handle automatically-sized delimiters
        !          1495:      across linebreaks, e.g., </p> <center>
        !          1496:         <b>y=\left\{a+b+c+d\\\hspace{50}+e+f+g+h\right\}</b>
        !          1497:         &nbsp; &nbsp; produces &nbsp; &nbsp;
        !          1498:         <a href="#preview"><img id="mathspace3" onclick="eqntext('mathspace3')"
        !          1499:         src="../cgi-bin/mimetex.cgi?3$y=\{a+b+c+d\\\hspace{50}+e+f+g+h\}"
        !          1500:         alt="" border=0 align=middle></a> <br>
        !          1501: 	whereas you probably wanted &nbsp; &nbsp; &nbsp; &nbsp;
        !          1502:         <a href="#preview"><img id="mathspace4" onclick="eqntext('mathspace4')"
        !          1503:         src="../cgi-bin/mimetex.cgi?3$y=\big{a+b+c+d\\\hspace{50}+e+f+g+h\big}"
        !          1504:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1505:      which I produced using <b>\big{...\\...\big}</b> instead
        !          1506:      of <b>\left\{...\\...\right\}</b>.  Expressions of the
        !          1507:      form <b>\left...\right&nbsp;\\&nbsp;\left...\right</b> should all be
        !          1508:      rendered  properly.  It's only <b>\left...\\...\right</b> that will
        !          1509:      look odd. </p>
        !          1510: 
        !          1511: <h3> <a name="whitespace">Whitespace, Comments,
        !          1512: and some other characters<font size=5>...</font></a> </h3>
        !          1513: 
        !          1514:  <p> Some browsers occasionally misinterpret typed blank spaces
        !          1515:      inside html query_string's.  In that case, you can write
        !          1516:      tildes (a&nbsp;<b>~</b>) wherever blanks are required or desired,
        !          1517:      e.g., <b>\alpha~w</b> instead of <b>\alpha&nbsp;w</b>, or
        !          1518:      <b>\frac~xy</b> or <b>\sqrt~z</b>, etc.  MimeTeX correctly
        !          1519:      interprets both blanks and <b>~</b>'s, and all
        !          1520:      other usual whitespace characters.  So use whatever's convenient
        !          1521:      as long as it's correctly interpreted inside query_string's by your
        !          1522:      browser. </p>
        !          1523: 
        !          1524:  <p> Similarly, some browsers occasionally misinterpret linebreaks/newlines
        !          1525:      inside the middle of long html query_string's.
        !          1526:      For example, </p>
        !          1527: <pre>&lt;img src="../cgi-bin/mimetex.cgi?f(x)=\frac1{\sigma\sqrt{2\pi}}
        !          1528:  \int\limits_{-\infty}^xe^{-\frac{(t-\mu)^2}{2\sig^2}}dt"
        !          1529:  alt="" border=0 align=middle&gt; </pre><p class="continue">
        !          1530:      breaks a long query_string over two lines.  If your browser interprets
        !          1531:      this correctly, then mimeTeX will render it correctly, too.  Otherwise,
        !          1532:      you'll have to enter long expressions on one big long line. </p>
        !          1533: 
        !          1534:  <p> If you can break long query_string's over several lines, then you may
        !          1535:      find mimeTeX's <b>%%comments%%</b> feature useful, too.  Note that
        !          1536:      comments must be preceded <i>and&nbsp;followed</i> by two <b>%</b>'s
        !          1537:      rather than LaTeX's usual one.  The above example could be written </p>
        !          1538: <pre>&lt;img src="../cgi-bin/mimetex.cgi?f(x)=\frac1{\sigma\sqrt{2\pi}} %%normalization%%
        !          1539:  \int\limits_{-\infty}^xe^{-\frac{(t-\mu)^2}{2\sig^2}}dt        %%integral%%"
        !          1540:  alt="" border=0 align=middle&gt; </pre>
        !          1541: 
        !          1542:  <p> Besides whitespace, browsers may misinterpret embedded apostrophes,
        !          1543:      and especially quotes, within query strings.  The <b>a's</b> and
        !          1544:      <b>b's</b> in <a href="#example7">Example&nbsp;7</a> above actually use
        !          1545:      superscripted commas for apostrophes, i.e., <b>a^,s</b> and <b>b^,s</b>,
        !          1546:      and you can also use LaTeX <b>\prime</b>'s, as in <b>a^\prime&nbsp;s</b>.
        !          1547:      For quotes, you can use <b>^{,,}</b> since <b>"</b> almost certainly
        !          1548:      won't work.  To help make things easier, in addition to the usual
        !          1549:      LaTeX <b>\prime</b>, mimeTeX also recognizes <b>\apostrophe</b> and
        !          1550:      <b>\quote</b> and <b>\percent</b>, all with the obvious meanings. </p>
        !          1551: 
        !          1552: 
        !          1553: <h2> <a name="symbols"> (IIIb) Math Symbols, Sizes, and Modes &nbsp; </a></h2>
        !          1554: 
        !          1555: <h3> <a name="characters">Character Sets<font size=5>...</font></a> </h3>
        !          1556: 
        !          1557:  <p> For complete information about the characters and math symbols
        !          1558:      available in mimeTeX, you'll need to browse through the bottom
        !          1559:      500-or-so lines of <b>mimetex.h</b>.  And several additional
        !          1560:      symbols like <b>\ldots</b> and <b>\AA</b> and <b>\hbar</b> are
        !          1561:      defined by the mimeTeX preprocessor, function <b>mimeprep(&nbsp;)</b>
        !          1562:      in <b>mimetex.c</b> &nbsp; &nbsp; Generally speaking, I've tried
        !          1563:      to encode the cmmi10, cmsy10, cmr10, cmex10, rsfs10 and bbold10
        !          1564:      families with "names", e.g., <b>\alpha \beta \forall \sqcup</b>, etc,
        !          1565:      identical to your LaTeX expectations.  For example, the
        !          1566:      calligraphic symbols in cmsy10 are accessed by writing
        !          1567:      <b>\mathcal{A} \mathcal{B} \mathcal{XYZ}</b>.  Similarly, write
        !          1568:      <b>\mathscr{A}</b> for the rsfs10 fonts, and write <b>\mathbb{R}</b>
        !          1569:      for bbold10. </p>
        !          1570:      <!-- But there are various additions and omissions and exceptions
        !          1571:      vis-a-vis LaTeX.  For example, </p>
        !          1572:       <ul>
        !          1573:         <li> "Large" operators like \int are often also available as
        !          1574:              \Bigint, and similarly for \sum \prod \cup \cap, etc.
        !          1575:              If you find a \Bigxxx in mimetex.h then you'll also find the
        !          1576:              corresponding \xxx.  \Bigxxx operators are somewhat larger
        !          1577:              than their \xxx counterparts, and they automatically render
        !          1578:              super/subscripts in <a href="#modes">displaystyle</a>. </li>
        !          1579:       </ul> -->
        !          1580:  <p> I haven't exhaustively checked all the name-number matchings for
        !          1581:      the hundreds of symbols in mimetex.h.  You can eaily correct
        !          1582:      any minor mistake you find in what I hope is an obvious manner.
        !          1583:      The fonts <a href="#fonts">Appendix&nbsp;IVa</a> below provides
        !          1584:      additional information. </p>
        !          1585: 
        !          1586:  <p> In addition to extra LaTeX symbols like <b>\ldots</b>, <b>\AA</b>
        !          1587:      and <b>\hbar</b>, mentioned above, the mimeTeX preprocessor
        !          1588:      <b>mimeprep(&nbsp;)</b> also recognizes various html special
        !          1589:      characters like <b>&amp;lt;</b>, <b>&amp;gt;</b>, <b>&amp;nbsp;</b>,
        !          1590:      <b>&amp;quot;</b>, <b>&amp;amp;</b>, etc.  Some web tools apparently
        !          1591:      translate characters like, e.g., <b>&gt;</b> to <b>&amp;gt;</b>,
        !          1592:      even inside quoted query_string's, so mimeTeX's preprocessor
        !          1593:      translates them back to LaTeX symbols for you. </p>
        !          1594: 
        !          1595: <h3> <a name="sizes">Font Sizes<font size=5>...</font></a> </h3>
        !          1596: 
        !          1597:  <p> MimeTeX currently has six font sizes, numbered 0-5, with default 2.
        !          1598:      This font size numbering corresponds to the usual LaTeX declarations
        !          1599:      &nbsp; <b>\tiny</b>, &nbsp; <b>\small</b>, &nbsp; <b>\normalsize</b>
        !          1600:      (default), &nbsp; <b>\large</b>, &nbsp; <b>\Large</b> and <b>\LARGE</b>.
        !          1601:      These declarations can be placed anywhere in a mimeTeX expression,
        !          1602:      and they change font size from that point forwards.  However, as usual,
        !          1603:      a font size change inside a <b>{&nbsp;}</b>-subexpression remains
        !          1604:      in effect only within that subexpression. </p>
        !          1605: 
        !          1606:  <p> In mimeTeX you may also write <b>\fontsize{0}...\fontsize{5}</b> or
        !          1607:      the shorter <b>\fs{0},...,\fs{5}</b> for <b>\tiny,...,\LARGE</b>.
        !          1608:      And since these arguments are all single digits, the even shorter
        !          1609:      form <b>\fs0,...,\fs5</b> works equally well.  For example, </p>
        !          1610:      <center> <table cellpadding=0>
        !          1611:       <tr align=center>
        !          1612:         <td> &lt;img src="../cgi-bin/mimetex.cgi?<b></b>f(x)=x^2"&gt; </td>
        !          1613:         <td> produces </td>
        !          1614:         <td> <a href="#preview"><img id="sizes1" onclick="eqntext('sizes1')"
        !          1615:              src="../cgi-bin/mimetex.cgi?f(x)=x^2"
        !          1616:              alt="" border=0 align=middle></a> </td>
        !          1617:       </tr>
        !          1618:       <tr align=center>
        !          1619:         <td> &lt;img src="../cgi-bin/mimetex.cgi?<b>\large</b> f(x)=x^2"&gt; </td>
        !          1620:         <td> &nbsp; </td>
        !          1621:         <td> <a href="#preview"><img id="sizes2" onclick="eqntext('sizes2')"
        !          1622:              src="../cgi-bin/mimetex.cgi?\large f(x)=x^2"
        !          1623:              alt="" border=0 align=middle></a> </td>
        !          1624:       </tr>
        !          1625:       <tr align=center>
        !          1626:         <td> &lt;img src="../cgi-bin/mimetex.cgi?<b>\fs4</b>f(x)=x^2"&gt; </td>
        !          1627:         <td> &nbsp; </td>
        !          1628:         <td> <a href="#preview"><img id="sizes3" onclick="eqntext('sizes3')"
        !          1629:              src="../cgi-bin/mimetex.cgi?\fs4f(x)=x^2"
        !          1630:              alt="" border=0 align=middle></a> </td>
        !          1631:       </tr>
        !          1632:      </table> </center> <p class="continue">
        !          1633:      rendering <b>f(x)=x^2</b> in mimeTeX font sizes &nbsp; <b>2</b>
        !          1634:      (default \normalsize), &nbsp; <b>3</b> (\large or \fs3), and
        !          1635:      &nbsp; <b>4</b> (\fs4 or \Large). </p>
        !          1636: 
        !          1637:  <p> You'll soon notice that exponents and \frac's and \atop's
        !          1638:      are automatically rendered one size smaller than their base
        !          1639:      expressions.  For example, </p> <center>
        !          1640:         <b>\Large y=e^{x^2}</b> &nbsp; produces &nbsp;
        !          1641:         <a href="#preview"><img id="sizes4" onclick="eqntext('sizes4')"
        !          1642:         src="../cgi-bin/mimetex.cgi?\Large y=e^{x^2}"
        !          1643:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1644:      rendering the <b>"y=e"</b> in font size 4 (\Large), the <b>"x"</b> in
        !          1645:      font size 3 (\large), and the <b>"2"</b> in font size 2 (\normalsize).
        !          1646:      If you get below font size 0, the font size remains&nbsp;0. </p>
        !          1647: 
        !          1648:  <p> Explicit size declarations override mimeTeX's default sizing behavior.
        !          1649:      You can rewrite the preceding example as, say, </p> <center>
        !          1650:         <b>\Large y=e^{\normalsize x^{\tiny2}}</b> &nbsp; which now produces
        !          1651:         &nbsp; <a href="#preview"><img id="sizes5" onclick="eqntext('sizes5')"
        !          1652:         src="../cgi-bin/mimetex.cgi?\Large y=e^{\normalsize x^{\tiny2}}"
        !          1653:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1654:      rendering the <b>"y=e"</b> in font size 4 (\Large unchanged),
        !          1655:      the <b>"x"</b> in font size 2 (\normalsize), and the <b>"2"</b>
        !          1656:      in font size&nbsp;0 (\tiny). </p>
        !          1657: 
        !          1658:  <p> Preceding an <b>\fs{&nbsp;}</b> size argument with <b>+</b> or
        !          1659:      <b>-</b> specifies "relative" sizing.  For example,
        !          1660:      <b>\large\text{abc{\fs{-2}def}ghi}</b> produces
        !          1661:      <a href="#preview"><img id="sizes6" onclick="eqntext('sizes6')"
        !          1662:      src="../cgi-bin/mimetex.cgi?\large\text{abc{\fs{-2}def}ghi}"
        !          1663:      alt="" border=0 align=middle></a>, rendering the <b>"def"</b>
        !          1664:      in font size 1 (two sizes smaller than \large).  Note that
        !          1665:      <b>\fs{-2}</b> affects only the subexpression in which it appears,
        !          1666:      and that its braces  are no longer optional since <b>-2</b> contains
        !          1667:      two characters.  For exponents (or any other size-changing commands
        !          1668:      like \frac), </p> <center>
        !          1669:         <b>\Large y=e^{\fs{-1}x^2}</b> &nbsp; produces &nbsp;
        !          1670:         <a href="#preview"><img id="sizes7" onclick="eqntext('sizes7')"
        !          1671:         src="../cgi-bin/mimetex.cgi?\Large y=e^{\fs{-1}x^2}"
        !          1672:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1673:      rendering the <b>"y=e"</b> in font size 4 (\Large), as usual.
        !          1674:      The <b>"x"</b> would usually be rendered one size smaller,
        !          1675:      in font size 3, and your <b>\fs{-1}</b> is applied to that,
        !          1676:      resulting in font size 2.   And the final <b>"2"</b> is rendered,
        !          1677:      by the usual rules, one size smaller than the <b>"x"</b>,
        !          1678:      in font size&nbsp;1. </p>
        !          1679: 
        !          1680: <h3> <a name="modes">Modes<font size=5>...</font></a> </h3>
        !          1681: 
        !          1682:  <p> MimeTeX is always in a math-like mode, so you needn't surround
        !          1683:      expressions with <b>$...$</b>'s for <b>\textstyle</b>,
        !          1684:      or <b>$$...$$</b>'s for <b>\displaystyle</b>.
        !          1685:      <!-- or <b>\[...\]</b>'s, etc.  In fact, mimeTeX interprets <b>$</b>
        !          1686:      as a "preamble" terminator (e.g., see <a href="#array">\array</a>
        !          1687:      below), and interprets <b>\[...\]</b> as an abbreviation for
        !          1688:      <b>\left[...\right]</b>. -->
        !          1689:      By default, operator limits like <b>\int_a^b</b> are rendered
        !          1690:      <b>\textstyle</b> <a href="#preview">
        !          1691:      <img id="modes99a" onclick="eqntext('modes99a')"
        !          1692:      src="../cgi-bin/mimetex.cgi?\normalsize\int_a^b"
        !          1693:      alt="" border=0 align=middle></a> at font sizes <b>\normalsize</b>
        !          1694:      and smaller, and rendered <b>\displaystyle</b> <a href="#preview">
        !          1695:      <img id="modes99b" onclick="eqntext('modes99b')"
        !          1696:      src="../cgi-bin/mimetex.cgi?\large\int_a^b"
        !          1697:      alt="" border=0 align=middle></a> at font sizes <b>\large</b> and
        !          1698:      larger (see the <b>-DDISPLAYSIZE</b>
        !          1699:      <a href="#options">compile&nbsp;option</a> to change this default).
        !          1700:      And when <b>\displaystyle</b> is invoked (either implicitly at font size
        !          1701:      <b>\large</b> or larger, or if you explicitly write <b>\displaystyle</b>
        !          1702:      at any font size), then operators <b>\int</b>, <b>\sum</b>,
        !          1703:      <b>\prod</b>, etc, are automatically promoted to larger sizes.
        !          1704:      <!-- their <a href="#characters">\Bigxxx</a> counterparts. -->
        !          1705:      <!-- Conversely, <b>\displaystyle</b> is applied to all
        !          1706:      <a href="#characters">\Bigxxx</a> operators regardless of font size. -->
        !          1707:      <!-- i.e., super/subscripts are placed  directly above/below
        !          1708:      <b>\Bigsum</b>, but "alongside" <b>\sum</b>. -->
        !          1709:      For example, </p> <center>
        !          1710:         <!-- <b>\Bigsum_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp; produces &nbsp;
        !          1711:         <a href="#preview"><img id="modes1a" onclick="eqntext('modes1a')"
        !          1712:         src="../cgi-bin/mimetex.cgi?\Bigsum_{i=1}^ni=\frac{n(n+1)}2"
        !          1713:         alt="" border=0 align=middle></a>, <br> -->
        !          1714:         <b>\sum_{i=1}^ni=\frac{n(n+1)}2</b>
        !          1715:         &nbsp; &nbsp; produces &nbsp; &nbsp;
        !          1716:         <a href="#preview"><img id="modes2a" onclick="eqntext('modes2a')"
        !          1717:         src="../cgi-bin/mimetex.cgi?\sum_{i=1}^ni=\frac{n(n+1)}2"
        !          1718:         alt="" border=0 align=middle></a>, &nbsp; whereas <br>
        !          1719:         <b>\displaystyle \sum_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp;produces&nbsp;
        !          1720:         <a href="#preview"><img id="modes1b" onclick="eqntext('modes1b')"
        !          1721:         src="../cgi-bin/mimetex.cgi?\displaystyle\sum_{i=1}^ni=\frac{n(n+1)}2"
        !          1722:         alt="" border=0 align=middle></a>, </center>
        !          1723:      <p class=continue> and <!-- replacing <b>\Bigsum</b> with the smaller
        !          1724:      <b>\sum</b> symbol, --> </p> <center>
        !          1725:         <b>\large \sum_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp; produces &nbsp;
        !          1726:         <a href="#preview"><img id="modes1b" onclick="eqntext('modes1b')"
        !          1727:         src="../cgi-bin/mimetex.cgi?\large\sum_{i=1}^ni=\frac{n(n+1)}2"
        !          1728:         alt="" border=0 align=middle></a>, &nbsp; whereas <br>
        !          1729:         <b>\textstyle \large \sum_{i=1}^ni=\frac{n(n+1)}2</b>
        !          1730:         &nbsp; &nbsp; produces &nbsp; &nbsp;
        !          1731:         <a href="#preview"><img id="modes2b" onclick="eqntext('modes2b')"
        !          1732:         src="../cgi-bin/mimetex.cgi?\textstyle\large
        !          1733:         \sum_{i=1}^ni=\frac{n(n+1)}2" alt="" border=0 align=middle></a>.
        !          1734:         <!-- &nbsp; instead. --> </center>
        !          1735: 
        !          1736:  <p> As usual, <b>\nolimits</b> turns displaystyle off (or textstyle on)
        !          1737:      for the operator immediately preceding it.  For example, </p> <center>
        !          1738:         <b>\large\sum\nolimits_{i=1}^ni=\frac{n(n+1)}2</b>
        !          1739:         &nbsp; produces &nbsp;
        !          1740:         <a href="#preview"><img id="modes3" onclick="eqntext('modes3')"
        !          1741:         src="../cgi-bin/mimetex.cgi?
        !          1742:         \large\sum\nolimits_{i=1}^ni=\frac{n(n+1)}2"
        !          1743:         alt="" border=0 align=middle></a></center> <p class="continue">
        !          1744:      and likewise, <b>\limits</b> turns displaystyle on for the operator
        !          1745:      immediately preceding it.  For example, </p> <center>
        !          1746:         <b>\sum\limits_{i=1}^ni=\frac{n(n+1)}2</b> &nbsp; produces &nbsp;
        !          1747:         <a href="#preview"><img id="modes4" onclick="eqntext('modes4')"
        !          1748:         src="../cgi-bin/mimetex.cgi?\sum\limits_{i=1}^ni=\frac{n(n+1)}2"
        !          1749:         alt="" border=0 align=middle></a> </center>
        !          1750: 
        !          1751:  <p> By the way, <b>\limits</b> affects <i><b>_any_</b></i> character
        !          1752:      or subexpression immediately preceding it.  For example, </p> <center>
        !          1753:         <b>A^i_j</b> &nbsp; produces &nbsp;
        !          1754:         <a href="#preview"><img id="modes5" onclick="eqntext('modes5')"
        !          1755:         src="../cgi-bin/mimetex.cgi?3$A^i_j"
        !          1756:         alt="" border=0 align=middle></a> &nbsp; &nbsp; as usual, whereas <br>
        !          1757:         <b>A\limits^i_j</b> &nbsp; produces &nbsp;
        !          1758:         <a href="#preview"><img id="modes6" onclick="eqntext('modes6')"
        !          1759:         src="../cgi-bin/mimetex.cgi?\large A\limits^i_j"
        !          1760:         alt="" border=0 align=middle></a> &nbsp; instead. </center>
        !          1761:      <p class="continue">Likewise, for subexpressions, </p> <center>
        !          1762:         <b>\widehat{xyz}\limits^a</b> &nbsp; produces &nbsp;
        !          1763:         <a href="#preview"><img id="modes7" onclick="eqntext('modes7')"
        !          1764:         src="../cgi-bin/mimetex.cgi?\large\widehat{xyz}\limits^a"
        !          1765:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1766:      This side effect may occasionally be useful.  For example, </p> <center>
        !          1767:         <b>x\rightarrow\limits^gy</b> &nbsp; produces &nbsp;
        !          1768:         <a href="#preview"><img id="modes8" onclick="eqntext('modes8')"
        !          1769:         src="../cgi-bin/mimetex.cgi?\large x\rightarrow\limits^gy"
        !          1770:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1771:      (mimeTeX automatically centers super/subscripts above/below
        !          1772:      the long and Long <a href="#arrows">arrow</a> forms) </p>
        !          1773: 
        !          1774:  <p> The <b>\displaystyle</b> command turns on displaystyle math mode for
        !          1775:      the entire expression (or <b>{&nbsp;}</b>-enclosed subexpression),
        !          1776:      affecting <b><i>_all_</i></b> super/subscripts to the right
        !          1777:      of the \displaystyle, except for character classes Ordinary and
        !          1778:      Variable (TeXbook page 154).  Similarly, <b>\textstyle</b> turns
        !          1779:      off displaystyle math mode.  For example, </p> <center>
        !          1780:         <b>\sum_1^n {\displaystyle\sum_1^k\sum_1^lx_i^j} \sum_1^m</b>
        !          1781:         &nbsp; produces &nbsp;
        !          1782:         <a href="#preview"><img id="modes9" onclick="eqntext('modes9')"
        !          1783:         src="../cgi-bin/mimetex.cgi?\normalsize\sum_1^n
        !          1784:         {\displaystyle\sum_1^k\sum_1^lx_i^j}\sum_1^m"
        !          1785:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          1786:      Note that <b>\sum</b>'s within the subexpression are all affected by
        !          1787:      the beginning <b>\displaystyle</b>, but not the Variable <b>x_i^j</b>.
        !          1788:      An explicit <b>x\limits_i^j</b> always affects any preceding term. </p>
        !          1789: 
        !          1790: <h3> <a name="textboxes">text boxes<font size=5>...</font></a> </h3>
        !          1791: 
        !          1792:  <p> Finally, mimeTeX also has a text-like/roman mode
        !          1793:      entered by writing either <b>\text{anything&nbsp;at&nbsp;all}</b>
        !          1794:      or the equivalent LaTeX-2.09-like command
        !          1795:      <b>{\rm&nbsp;anything&nbsp;at&nbsp;all}</b>, both of which render
        !          1796:      <b>anything&nbsp;at&nbsp;all</b> in roman (font family cmr10).
        !          1797:      <b>\mbox{&nbsp;}</b> and several similar LaTeX commands are
        !          1798:      recognized by mimeTeX as synonyms for <b>\text{&nbsp;}</b>.
        !          1799:      For italic, write <b>\textit{anything&nbsp;at&nbsp;all}</b> or
        !          1800:      <b>{\it&nbsp;anything&nbsp;at&nbsp;all}</b>, both of which render
        !          1801:      <b>anything&nbsp;at&nbsp;all</b> in italic (font family cmmi10).
        !          1802:      All four forms respect spaces between words, except that the
        !          1803:      first/required  space after <b>{\rm&nbsp;etc}</b> and
        !          1804:      <b>{\it&nbsp;etc}</b> is still ignored.  For example, </p> <center>
        !          1805:         <b>anything&nbsp;at&nbsp;all</b> &nbsp; just produces &nbsp;
        !          1806:         <a href="#preview"><img id="textboxes1" onclick="eqntext('textboxes1')"
        !          1807:         src="../cgi-bin/mimetex.cgi?anything at all"
        !          1808:         alt="" border=0 align=middle></a> &nbsp; &nbsp; whereas <br> <br>
        !          1809:         <b>\text{anything&nbsp;at&nbsp;all}</b> &nbsp; produces &nbsp;
        !          1810:         <a href="#preview"><img id="textboxes2" onclick="eqntext('textboxes2')"
        !          1811:         src="../cgi-bin/mimetex.cgi?\text{anything at all}"
        !          1812:         alt="" border=0 align=middle></a> &nbsp; &nbsp; and <br> <br>
        !          1813:         <b>\textit{anything&nbsp;at&nbsp;all}</b> &nbsp; produces &nbsp;
        !          1814:         <a href="#preview"><img id="textboxes3" onclick="eqntext('textboxes3')"
        !          1815:         src="../cgi-bin/mimetex.cgi?\textit{anything at all}" alt=""
        !          1816:         border=0 align=middle></a> &nbsp; &nbsp; instead. </center>
        !          1817: 
        !          1818: 
        !          1819: <h2> <a name="delimiters"> (IIIc) Delimiters &nbsp; </a> </h2>
        !          1820: 
        !          1821: <h3> <a name="parens">Parentheses and Braces
        !          1822: (delimiters)<font size=5>...</font></a> </h3>
        !          1823: 
        !          1824:  <p> LaTeX's <b>\left(</b> and <b>\right)</b> may be written exactly
        !          1825:      like that, or may be abbreviated <b>\(</b> and <b>\)</b> in mimeTeX.
        !          1826:      Not all <b>\left</b> and <b>\right</b> LaTeX delimiters are currently
        !          1827:      available in mimeTeX, but those that are can be written in the usual
        !          1828:      way, or can be abbreviated as described above.  One exception is
        !          1829:      that <b>\left\|...\right\|</b> must instead be abbreviated
        !          1830:      <b>\=...\=</b> or can be written in full <b>\left\|...\right\|</b>
        !          1831:      as usual.  Also, <b>\left\langle...\right\rangle</b> is abbreviated
        !          1832:      <b>\&lt;...\&gt;</b>&nbsp;. </p>
        !          1833:  <p> Mixing abbreviated and unabbreviated delimiters within a matching
        !          1834:      pair is not allowed, e.g., \left(...\) <b>_won't_</b> work.  But you
        !          1835:      can mix nested pairs, e.g., <b>\left(...\(...\)...\right)</b> will
        !          1836:      work as long as the matching delimiters comprising each pair are
        !          1837:      either both abbreviated or both unabbreviated. </p>
        !          1838:  <p> The complete list of automatically sized delimiters
        !          1839:      available in mimeTeX is </p> <center>
        !          1840:        <!-- <table cellpadding=3 cellspacing=0 border=1> -->
        !          1841:        <table cellspacing=0 cellpadding=2 border=1>
        !          1842:         <tr align=center>
        !          1843:            <td> <b>LaTeX or <br> mimeTeX</b> </td>
        !          1844:            <td> <b>or mimeTeX <br> abbreviation</b> </td>
        !          1845:            <td> <b>example...</b> </td>
        !          1846:            <td> <b>...renders</b> </td>
        !          1847:         </tr>
        !          1848:         <tr align=center>
        !          1849:            <td> \left(&nbsp;...&nbsp;\right) </td>
        !          1850:            <td> \(&nbsp;...&nbsp;\) </td>
        !          1851:            <td> \left( \frac1{1-x^2} \right)^2 </td>
        !          1852:            <td> <a href="#preview"><img id="parens1" onclick="eqntext('parens1')"
        !          1853:                  src="../cgi-bin/mimetex.cgi?\Large\left(\frac1{1-x^2}\right)^2"
        !          1854:                  alt="" border=0 align=middle></a> </td>
        !          1855:         </tr>
        !          1856:         <tr align=center>
        !          1857:            <td> \left[&nbsp;...&nbsp;\right] </td>
        !          1858:            <td> \[&nbsp;...&nbsp;\] </td>
        !          1859:            <td> \left[ 1+\frac xn \right]^n </td>
        !          1860:            <td> <a href="#preview"><img id="parens2" onclick="eqntext('parens2')"
        !          1861:                  src="../cgi-bin/mimetex.cgi?\Large\left[1+\frac xn\right]^n"
        !          1862:                  alt="" border=0 align=middle></a> </td>
        !          1863:         </tr>
        !          1864:         <tr align=center>
        !          1865:            <td> \left\{&nbsp;...&nbsp;\right\} </td>
        !          1866:            <td> \{&nbsp;...&nbsp;\} </td>
        !          1867:            <td> \left\{ 1^2,2^2,3^2,\ldots \right\} </td>
        !          1868:            <td> <a href="#preview"><img id="parens3" onclick="eqntext('parens3')"
        !          1869:                  src="../cgi-bin/mimetex.cgi?
        !          1870:                  \large\left\{1^2,2^2,3^2,\ldots\right\}"
        !          1871:                  alt="" border=0 align=middle></a> </td>
        !          1872:         </tr>
        !          1873:         <tr align=center>
        !          1874:            <td> \left\langle &nbsp; ...<br>
        !          1875:                 &nbsp; &nbsp; &nbsp; &nbsp; ... &nbsp;\right\rangle </td>
        !          1876:            <td> \<&nbsp;...&nbsp;\> </td>
        !          1877:            <td> \left\langle \varphi |\hat H|<br>
        !          1878:                 &nbsp; &nbsp; &nbsp; &nbsp; \phi \right\rangle </td>
        !          1879:            <td> <a href="#preview"><img id="parens4" onclick="eqntext('parens4')"
        !          1880:                  src="../cgi-bin/mimetex.cgi?
        !          1881:                  \Large\left\langle\varphi|\hat H|\phi\right\rangle"
        !          1882:                  alt="" border=0 align=middle></a> </td>
        !          1883:         </tr>
        !          1884:         <tr align=center>
        !          1885:            <td> \left|&nbsp;...&nbsp;\right| </td>
        !          1886:            <td> \|&nbsp;...&nbsp;\| </td>
        !          1887:            <td> \det \left| \begin{array}{cc} 1&2\\<br>
        !          1888:                 &nbsp; &nbsp; &nbsp; &nbsp; 3&4 \end{array} \right|</td>
        !          1889:            <td> <a href="#preview"><img id="parens5" onclick="eqntext('parens5')"
        !          1890:                  src="../cgi-bin/mimetex.cgi?
        !          1891:                  \large\det\left|\begin{array}{cc}1&2\\3&4\end{array}\right|"
        !          1892:                  alt="" border=0 align=middle></a> </td>
        !          1893:         </tr>
        !          1894:         <tr align=center>
        !          1895:            <td> \left\|&nbsp;...&nbsp;\right\| </td>
        !          1896:            <td> \=&nbsp;...&nbsp;\= </td>
        !          1897:            <td> \left\|x^2-y^2\right\| </td>
        !          1898:            <td> <a href="#preview"><img id="parens6" onclick="eqntext('parens6')"
        !          1899:                  src="../cgi-bin/mimetex.cgi?\large\left\|x^2-y^2\right\|"
        !          1900:                  alt="" border=0 align=middle></a> </td>
        !          1901:         </tr>
        !          1902:         <tr align=center>
        !          1903:            <td> \left\{&nbsp;...&nbsp;\right<b>.</b> </td>
        !          1904:            <td> \{&nbsp;...&nbsp;\<b>.</b> </td>
        !          1905:            <td> y=\left\{ \text{this\atop that} \right<b>.</b> </td>
        !          1906:            <td> <a href="#preview"><img id="parens7" onclick="eqntext('parens7')"
        !          1907:                  src="../cgi-bin/mimetex.cgi?
        !          1908:                  \large y=\left\{\text{this\atop that}\right."
        !          1909:                  alt="" border=0 align=middle></a> </td>
        !          1910:         </tr>
        !          1911:         <tr align=center>
        !          1912:            <td> \left<b>.</b>&nbsp;...&nbsp;\right\} </td>
        !          1913:            <td> \<b>.</b>&nbsp;...&nbsp;\} </td>
        !          1914:            <td> \left<b>.</b> \text{this\atop that} \right\}=y </td>
        !          1915:            <td> <a href="#preview"><img id="parens8" onclick="eqntext('parens8')"
        !          1916:                  src="../cgi-bin/mimetex.cgi?
        !          1917:                  \large\left.\text{this\atop that}\right\}=y"
        !          1918:                  alt="" border=0 align=middle></a> </td>
        !          1919:         </tr>
        !          1920:        </table> </center>
        !          1921:  <p> <b><u>Notes...&nbsp;</u></b> </p>
        !          1922:      <ol compact type=1>
        !          1923:        <li> The other LaTeX delimiters, i.e., floor's, ceil's,
        !          1924:             arrows, etc, can't yet be sized to fit. </li>
        !          1925:        <li> <a href="#sizes">Size&nbsp;declarations</a> inside any of the
        !          1926:             above delimiter pairs affect only the enclosed subexpression,
        !          1927:             e.g., <b>\Large w=\left(\small x+y\right)+z</b> produces
        !          1928:             <a href="#preview"><img id="parens9" onclick="eqntext('parens9')"
        !          1929:             src="../cgi-bin/mimetex.cgi?\Large w=\left(\small x+y\right)+z"
        !          1930:             alt="" border=0 align=middle></a> </li>
        !          1931:        <li> An abbreviated left delimiter must be paired with the same
        !          1932:             "type" of matching right delimiter, e.g., <b>\[...\]</b> works
        !          1933:             whereas <b>\[...\)</b> doesn't work.  To render an "unmatched"
        !          1934:             pair of delimiters you must use the unabbreviated form, e.g.,
        !          1935:             <b>\left[...\right)</b> works fine. </li>
        !          1936:        <li> Similarly, "unusual" delimiter abbreviations like <b>\)...\(</b>
        !          1937:             also don't work in mimeTeX.  That is, &nbsp;
        !          1938:             <b>(,&nbsp;[,&nbsp;&lt;,&nbsp;{,</b> etc, must always be "left"
        !          1939:             in mimeTeX, and &nbsp; <b>),&nbsp;],&nbsp;&gt;,&nbsp;},</b> etc,
        !          1940:             must always be "right".  To render "unusual" delimiter pairs you
        !          1941:             must use the unabbreviated form, e.g., <b>\left)...\right[</b>
        !          1942:             works fine. </li>
        !          1943:        <li> <b>\right.</b> may be paired with any of the automatically
        !          1944:             sized delimiters, and may optionally be abbreviated as <b>\.</b>
        !          1945:             &nbsp;&nbsp; The same <b>\.</b> also serves as an abbreviation
        !          1946:             for <b>\left.</b> &nbsp;&nbsp; MimeTeX correctly interprets your
        !          1947:             intention if you correctly  balance delimiters.  For example,
        !          1948:             either <b>y=\left\{{this\atop&nbsp;that}\right.</b> or
        !          1949:             <b>y=\{{this\atop&nbsp;that}\.</b> renders the usual useful
        !          1950:             construction
        !          1951:             <a href="#preview"><img id="parens10" onclick="eqntext('parens10')"
        !          1952:             src="../cgi-bin/mimetex.cgi?y=\{\text{this\atop that}\."
        !          1953:             alt="" border=0 align=middle></a> illustrated above. </li>
        !          1954:        <li> However, abbreviated <b>\.</b>'s cannot be nested in mimeTeX,
        !          1955:             e.g., <b>\[\(...\.\.</b> doesn't work.  Instead, unabbreviated
        !          1956:             <b>\left.</b> and <b>\right.</b> may be nested, e.g.,
        !          1957:             <b>\left[\left(...\right.\right.</b> works fine. </li>
        !          1958:        <li> Simply nested abbreviations like <b>\[\(...\)\]</b> work fine in
        !          1959:             mimeTeX.  But abbreviated delimiters like <b>\|...\|</b>
        !          1960:             and <b>\=...\=</b>, whose left and right forms are
        !          1961:             identical, cannot be nested.  To nest these delimiters you
        !          1962:             must use the corresponding unabbreviated <b>\left|..\right|</b>
        !          1963:             and <b>\left\|...\right\|</b>. </li>
        !          1964:        <li> All <b>\left(...\right)</b>'s (and abbreviated <b>\(...\)</b>'s),
        !          1965:             etc, must be correctly balanced, which may include being matched
        !          1966:             with <b>\left.</b> or <b>\right.</b> (or abbreviated <b>\.</b>).
        !          1967:             &nbsp;&nbsp; And, to repeat, you may <b>_not_</b> mix
        !          1968:             abbreviated and unabbreviated \(...\right), etc, within a
        !          1969:             matching pair. </li>
        !          1970:      </ol>
        !          1971: 
        !          1972:  <p> Besides the <b>\left...\right</b> delimiters discussed above,
        !          1973:      mimeTeX also supports constructions like
        !          1974:      <b>\left\int_a^b...\right<b>.</b></b>&nbsp;, which automatically
        !          1975:      sizes the <b>\left\int</b> to accommodate everything between it
        !          1976:      and its matching <b>\right<b>.</b></b> &nbsp; delimiter.
        !          1977:      The <b>\right</b> delimiter needn't necessarily be
        !          1978:      the <b>\right<b>.</b></b> &nbsp; illustrated, e.g.,
        !          1979:      <b>\left\int_a^b&nbsp;x^2dx&nbsp;=\frac{x^3}3\right|\nolimits_a^b</b>
        !          1980:      produces
        !          1981:      <a href="#preview"><img id="parens11" onclick="eqntext('parens11')"
        !          1982:      src="../cgi-bin/mimetex.cgi?\large
        !          1983:      \left\int_a^bx^2dx=\frac{x^3}3\right|\nolimits_a^b" border=0 alt=""
        !          1984:      align=middle></a>.  Except for Opening (TeX class 4) and
        !          1985:      Closing (class 5) delimiter characters like <b>(&nbsp;)</b> and
        !          1986:      <b>[&nbsp;]</b> and <b>\{&nbsp;\}</b>, limits are default-rendered
        !          1987:      \displaystyle, which is why <b>\right|\nolimits_a^b</b> was required.
        !          1988:      You can also write <b>\left\sum</b>, <b>\left\prod</b>,
        !          1989:      <b>\left\cup</b>, etc, for many of the symbols in CMEX10.
        !          1990:      And any symbol that works with <b>\left</b> will also work
        !          1991:      with <b>\right</b>&nbsp;.  But mimeTeX abbreviations like &nbsp;
        !          1992:      <b>\(...\)</b> &nbsp; for &nbsp; <b>\left(...\right)</b> &nbsp;
        !          1993:      won't work with any of these CMEX10 symbols.  You'll have to write
        !          1994:      the usual unabbreviated <b>\left...\right</b> form. </p>
        !          1995: 
        !          1996:  <p> Unescaped <b>(&nbsp;)</b>'s and <b>[&nbsp;]</b>'s and <b>|&nbsp;|</b>'s
        !          1997:      and <b>&lt;&nbsp;&gt;</b>'s don't need to be balanced since mimeTeX just
        !          1998:      displays them like ordinary characters without any special significance.
        !          1999:      Ditto for the usual four <b>\big(</b> and <b>\Big(</b> and <b>\bigg(</b>
        !          2000:      and <b>\Bigg(</b>, and for their four right <b>)</b> counterparts, which
        !          2001:      just display <b>(...)</b>'s at fixed larger sizes, and also have no
        !          2002:      special significance.  All four big <b>[&nbsp;]</b>'s and
        !          2003:      <b>&lt;&nbsp;&gt;</b>'s and <b>{&nbsp;}</b>'s are also available
        !          2004:      as ordinary characters. </p>
        !          2005: 
        !          2006:  <p> As usual, unescaped <b>{...}</b>'s aren't displayed at all,
        !          2007:      must be balanced, and have the usual special LaTeX significance.
        !          2008:      MimeTeX interprets escaped <b>\{...\}</b>'s as abbreviations
        !          2009:      for <b>\left\{...\right\}</b> and therefore always sizes them to fit.
        !          2010:      If you need displayed but unsized <b>{...}</b>'s, write
        !          2011:      <b>\lbrace...\rbrace</b> or any of the four <b>\big{...\big}</b>'s. </p>
        !          2012: 
        !          2013: 
        !          2014: <h2> <a name="accents"> (IIId) Accents, Functions, Arrows,
        !          2015: Raise&nbsp;and&nbsp;rotate, Compose, Abbreviations, etc. &nbsp; </a> </h2>
        !          2016: 
        !          2017: <h3> Accents<font size=5>...</font> </h3>
        !          2018:   
        !          2019:  <p class="continue"> 
        !          2020:      <b>\vec{&nbsp;} \hat{&nbsp;} \bar{&nbsp;} \tilde{&nbsp;} \dot{&nbsp;}</b>
        !          2021:      and <b>\ddot{&nbsp;}</b> are the only accents currently supported,
        !          2022:      and they're all "wide".  You can write <b>\widehat{&nbsp;}</b> if you
        !          2023:      like, but there's absolutely no difference either way.
        !          2024:      <b>\bar{&nbsp;}</b> and <b>\overline{&nbsp;}</b> are identical. <p>
        !          2025: 
        !          2026: <h3> <a name="functions">Function names<font size=5>...</font></a> </h3>
        !          2027: 
        !          2028:  <p> All 32 usual LaTeX function names <b>\arccos</b>,...,<b>\tanh</b>
        !          2029:      are recognized by mimeTeX and treated in the usual way.  MimeTeX
        !          2030:      also recognizes <b>\tr</b> for the trace, and also <b>\bmod</b>
        !          2031:      and <b>\pmod</b>.  And those functions that normally take "limits"
        !          2032:      also behave as expected, e.g., </p> <center>
        !          2033:         <b>\lim_{n\to\infty}S_n=S</b> &nbsp; produces &nbsp;
        !          2034:         <a href="#preview"><img id="functions1" onclick="eqntext('functions1')"
        !          2035:         src="../cgi-bin/mimetex.cgi?3$\lim_{n\to\infty}S_n=S"
        !          2036:         alt="" border=0 align=middle></a> </center>
        !          2037: 
        !          2038: <h3> <a name="arrows">long Arrows<font size=5>...</font></a> </h3>
        !          2039: 
        !          2040:  <p> All mimeTeX \long and \Long arrows take an optional [width] argument
        !          2041:      that explicitly sets the arrow's width in pixels, scaled by
        !          2042:      <a href="#unitlength">\unitlength</a>.  For example,
        !          2043:      <b>\longrightarrow[50]</b> draws a 50-pixel wide arrow
        !          2044:      <a href="#preview"><img id="arrows1" onclick="eqntext('arrows1')"
        !          2045:      src="../cgi-bin/mimetex.cgi?\longrightarrow[50]" alt="" border=0
        !          2046:      align=middle></a>, whereas just <b>\longrightarrow</b> calculates
        !          2047:      a default width
        !          2048:      <a href="#preview"><img id="arrows2" onclick="eqntext('arrows2')"
        !          2049:      src="../cgi-bin/mimetex.cgi?\longrightarrow" alt="" border=0
        !          2050:      align=middle></a>, as usual.  And, in addition to the usual
        !          2051:      right, left and leftright arrows, there are also \long (and \Long) up,
        !          2052:      down and updown arrows that take an optional [height] argument, also
        !          2053:      scaled by any preceding <a href="#unitlength">\unitlength</a>. </p>
        !          2054: 
        !          2055:  <p> In the event that you actually want to place an []-enclosed expression
        !          2056:      immediately following an "unsized" long arrow, just place a <b>~</b> or
        !          2057:      any white space after the arrow, e.g., <b>f:x\longrightarrow~[0,1]</b>
        !          2058:      produces
        !          2059:      <a href="#preview"><img id="arrows3" onclick="eqntext('arrows3')"
        !          2060:      src="../cgi-bin/mimetex.cgi?f:x\longrightarrow~[0,1]"
        !          2061:      alt="" border=0 align=middle></a>.  Without any intervening white space,
        !          2062:      mimeTeX would have "eaten" the [0,1]. </p>
        !          2063: 
        !          2064:  <p> Super/subscripts immediately following all long/Long left/right arrows
        !          2065:      are displayed the same way <a href="#modes">\limits</a> displays them,
        !          2066:      e.g., </p> <center>
        !          2067:         <b>x\longrightarrow^gy</b> &nbsp; produces &nbsp;
        !          2068:         <a href="#preview"><img id="arrows4" onclick="eqntext('arrows4')"
        !          2069:         src="../cgi-bin/mimetex.cgi?\large x\longrightarrow^gy"
        !          2070:         alt="" border=0 align=middle></a> <br>
        !          2071:         <b>x\longrightarrow[50]^gy</b> &nbsp; produces &nbsp;
        !          2072:         <a href="#preview"><img id="arrows5" onclick="eqntext('arrows5')"
        !          2073:         src="../cgi-bin/mimetex.cgi?\large x\longrightarrow[50]^gy"
        !          2074:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          2075:      Subscripted long arrows can occasionally be useful, too, as in
        !          2076:      <a href="#example11">Example&nbsp;11</a> above, e.g., </p> <center>
        !          2077:         <b>u\longrightarrow[50]_\beta v</b> &nbsp; produces &nbsp;
        !          2078:         <a href="#preview"><img id="arrows6" onclick="eqntext('arrows6')"
        !          2079:         src="../cgi-bin/mimetex.cgi?\large u\longrightarrow[50]_\beta^{\,}v"
        !          2080:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          2081:      To defeat this default behavior, e.g., <b>\longrightarrow\nolimits^g</b>
        !          2082:      displays super/subscripts in the usual way. </p>
        !          2083: 
        !          2084:  <p> Super/subscripts immediately following all long/Long up/down arrows
        !          2085:      are treated correspondingly, i.e., superscripts are vertically
        !          2086:      centered to the arrow's left, and subscripts to its right.
        !          2087:      For example, </p> <center>
        !          2088:         <b>\longuparrow[30]^\gamma</b> &nbsp; produces &nbsp;
        !          2089:         <a href="#preview"><img id="arrows7" onclick="eqntext('arrows7')"
        !          2090:         src="../cgi-bin/mimetex.cgi?\large\longuparrow[30]^\gamma"
        !          2091:         alt="" border=0 align=middle></a> <br>
        !          2092:         <b>\longdownarrow[30]_\gamma</b> &nbsp; produces &nbsp; &nbsp; &nbsp;
        !          2093:         <a href="#preview"><img id="arrows8" onclick="eqntext('arrows8')"
        !          2094:         src="../cgi-bin/mimetex.cgi?\large\longdownarrow[30]_\gamma"
        !          2095:         alt="" border=0 align=middle></a> </center> <p class="continue">
        !          2096:      whose occasional usefulness is also illustrated by
        !          2097:      <a href="#example11">Example&nbsp;11</a>.  And as before, to defeat
        !          2098:      this default behavior, e.g., <b>\longuparrow\nolimits^\gamma</b>
        !          2099:      displays super/subscripts in the usual way. </p>
        !          2100: 
        !          2101: <h3> <a name="raiserotate">\raisebox{&nbsp;}{&nbsp;} and
        !          2102: \rotatebox{&nbsp;}{&nbsp;}<font size=5>...</font></a> </h3>
        !          2103: 
        !          2104:  <p> The <b>\raisebox{<i>height</i>}{<i>expression</i>}</b>
        !          2105:      and <b>\rotatebox{<i>angle</i>}{<i>expression</i>}</b>
        !          2106:      commands help you fine-tune and manipulate mimeTeX renderings.
        !          2107:      The <b><i>height</i></b> argument is number of pixels, scaled by
        !          2108:      <a href="#unitlength">\unitlength</a>, and can be positive
        !          2109:      or negative.  The <b><i>angle</i></b> argument is number of degrees,
        !          2110:      and can also be positive (for clockwise) or negative, but must be a
        !          2111:      multiple of 90.  Finally, the <b><i>expression</i></b> can be any
        !          2112:      valid LaTeX/mimeTeX expression.  For example, mimeTeX's preprocessor
        !          2113:      defines the LaTeX <b>?`</b> symbol, an upside-down question
        !          2114:      mark, like </p> <center>
        !          2115:         <b>abc\raisebox{-2}{\rotatebox{180}?}def</b> &nbsp; produces &nbsp;
        !          2116:         <a href="#preview"><img id="raiserot1" onclick="eqntext('raiserot1')"
        !          2117:         src="../cgi-bin/mimetex.cgi?
        !          2118:         \large\rm abc\raiseb{-2}{\rotateb{180}{\LARGE?}}def"
        !          2119:         alt="" border=0 align=middle></a> </center>
        !          2120: 
        !          2121: <h3> <a name="compose">\compose{&nbsp;}{&nbsp;}<font size=5>...</font></a></h3>
        !          2122: 
        !          2123:  <p class="continue"> 
        !          2124:      <b>\compose[<i>offset</i>]{<i>base</i>}{<i>overlay</i>}</b>
        !          2125:      superimposes the <b><i>overlay</i></b> expression on top of the
        !          2126:      <b><i>base</i></b> expression, displaying the result.
        !          2127:      Optionally, the overlay is horizontally <b><i>offset</i></b>
        !          2128:      by the specified number of pixels (positive offsets to the right,
        !          2129:      negative to the left). For example, </p> <center>
        !          2130:         <b>\compose{\LARGE O}{\normalsize c}</b> &nbsp; produces &nbsp;
        !          2131:         <a href="#preview"><img id="compose1" onclick="eqntext('compose1')"
        !          2132:         src="../cgi-bin/mimetex.cgi?\compose{\LARGE O}{\normalsize c}"
        !          2133:         alt="" border=0 align=middle></a> </center>
        !          2134: 
        !          2135:  <p> Separately or in some judicious combination, <b>\compose</b> and
        !          2136:      <b>\raisebox</b> and <b>\rotatebox</b> should help you construct
        !          2137:      special symbols not "natively" available with mimeTeX's limited
        !          2138:      set of built-in font families.  This can be especially useful
        !          2139:      in conjunction with the <b>-DNEWCOMMANDS</b> compile-time
        !          2140:      <a href="#options">option</a> discussed above. </p>
        !          2141: 
        !          2142: <h3> <a name="abbreviations">Abbreviations<font size=5>...</font></a> </h3>
        !          2143: 
        !          2144:  <p class="continue"> 
        !          2145:      <b>\ga</b> displays <b>\gamma</b>, but just <b>\g</b> displays
        !          2146:      <b>\gg</b> (<b>&gt;&gt;</b>).  That is, mimeTeX selects the
        !          2147:      shortest symbol or command which begins with whatever you type.
        !          2148:      This feature can help shorten an otherwise very long line,
        !          2149:      but it may be a bit dangerous. </p>
        !          2150: 
        !          2151:  <p> The mimeTeX <a href="#symbols">preprocessor</a>, briefly mentioned
        !          2152:      above, is responsible for recognizing several LaTeX symbols like
        !          2153:      <b>\ldots</b> and several commands like <b>\atop</b>&nbsp;.
        !          2154:      These symbols and commands cannot be abbreviated.  The special
        !          2155:      html characters like <b>&amp;nbsp;</b> are also recognized by
        !          2156:      the preprocessor and cannot be abbreviated. </p>
        !          2157: 
        !          2158: <h3> <a name="colors">Colors<font size=5>...</font></a> </h3>
        !          2159: 
        !          2160:  <p> Rudimentary color commands are provided by mimeTeX.  You can write
        !          2161:      <b>\color{red}</b> or <b>\color{green}</b> or<b>\color{blue}</b>
        !          2162:      (which may be abbreviated <b>\red</b> or <b>\green</b> or
        !          2163:      <b>\blue</b>) anywhere in an expression to render the entire
        !          2164:      expression in the specified color.  That is,
        !          2165:      <b>abc{\red&nbsp;def}ghi</b> renders the entire expression red,
        !          2166:      not just the <b>def</b> part.  Also, note that mimeTeX's "green"
        !          2167:      is actually color <b>#00FF00</b>, which the html standard more
        !          2168:      accurately calls "lime".  For example, </p> <center>
        !          2169:       <b>\blue e^x=\sum_{n=0}^\infty\frac{x^n}{n!}</b> &nbsp; produces &nbsp;
        !          2170:       <a href="#preview"><img id="colors1" onclick="eqntext('colors1')"
        !          2171:       src="../cgi-bin/mimetex.cgi?
        !          2172:       \Large\color{blue} e^x=\sum_{n=0}^\infty\frac{x^n}{n!}"
        !          2173:       alt="" border=0 align=middle></a> </center>
        !          2174: 
        !          2175: <h3> <a name="squash">&quot;Squash&quot;<font size=5>...</font></a> </h3>
        !          2176: 
        !          2177:  <p> TeX represents characters by boxes, with no idea how ink will be
        !          2178:      distributed inside.  So an expression like
        !          2179:      <b>\frac12\int_{a+b+c}^{d+e+f}g(x)dx</b> is typically rendered as &nbsp;
        !          2180:      <a href="#preview"><img id="squash1" onclick="eqntext('squash1')"
        !          2181:      src="../cgi-bin/mimetex.cgi?\displaystyle
        !          2182:      \nosquash\frac12\int_{a+b+c}^{d+e+f}{g(x)dx}"
        !          2183:      alt="" border=0 align=middle></a>.
        !          2184:      But mimeTeX knows the character shapes of its fonts, and therefore tries
        !          2185:      to remove extra whitespace, rendering the same expression as &nbsp;
        !          2186:      <a href="#preview"><img id="squash2" onclick="eqntext('squash2')"
        !          2187:      src="../cgi-bin/mimetex.cgi?\displaystyle
        !          2188:      \squash\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
        !          2189:      alt="" border=0 align=middle></a> &nbsp; instead. </p>
        !          2190: 
        !          2191:  <p> Precede any expression with the mimeTeX directive <b>\nosquash</b>
        !          2192:      to render it without "squashing".  Or compile mimetex.c with the
        !          2193:      <b>-DNOSQUASH</b> <a href="#options">option</a> if you prefer
        !          2194:      the typical TeX behavior as mimeTeX's default.  In this case,
        !          2195:      precede any expression with <b>\squash</b> to render it "squashed".
        !          2196:      And note that explicit space like <b>\hspace{10}</b>
        !          2197:      or <b>\;</b>&nbsp;, etc, is never squashed. </p>
        !          2198: 
        !          2199:  <p> The scope of <b>\squash</b> and <b>\nosquash</b> is the
        !          2200:      <b>{&nbsp;}</b>-enclosed subexpression in which the directive occurs.
        !          2201:      For example, if you want the <b><i>g(x)</i></b>&nbsp;part of the
        !          2202:      preceding example squashed, but not the <b>1/2</b>&nbsp;part,
        !          2203:      then the expression
        !          2204:      <b>\nosquash\frac12{\squash\int_{a+b+c}^{d+e+f}g(x)dx}</b>
        !          2205:      renders as &nbsp;
        !          2206:      <a href="#preview"><img id="squash3" onclick="eqntext('squash3')"
        !          2207:      src="../cgi-bin/mimetex.cgi?\displaystyle
        !          2208:      \nosquash\frac12{\squash\int_{a+b+c}^{d+e+f}{g(x)dx}}"
        !          2209:      alt="" border=0 align=middle></a>.
        !          2210:      <!-- Moreover, explicit space like
        !          2211:      <b>\hspace{10}</b> or <b>\;</b>, etc, is never squashed.
        !          2212:      So <b>{\frac12\;\;}\int_{a+b+c}^{d+e+f}g(x)dx</b> renders as &nbsp;
        !          2213:      <a href="#preview"><img id="squash4" onclick="eqntext('squash4')"
        !          2214:      src="../cgi-bin/mimetex.cgi?\displaystyle
        !          2215:      {\frac12\;\;}\int_{a+b+c}^{d+e+f}{g(x)dx}"
        !          2216:      alt="" border=0 align=middle></a>. --> </p>
        !          2217: 
        !          2218:  <p> For finer-grained control, note that <b>\squash</b> is shorthand
        !          2219:      for the default <b>\squashmargin{+3}</b> (and <b>\nosquash</b> is
        !          2220:      shorthand for <b>\squashmargin{0}</b>).  <b>\squashmargin</b>'s value
        !          2221:      is the minimum number of pixels between squashed symbols.  The leading
        !          2222:      <b>+</b> is optional.  If present, the font size (\tiny=0,...,\LARGE=5)
        !          2223:      is added to the specified minimum.  Compile mimetex.c with the
        !          2224:      <b>-DSQUASHMARGIN=<i>n</i></b> <a href="#options">option</a> to change
        !          2225:      the default from <b>3</b> to <b><i>n</i></b>.  Compare the preceding
        !          2226:      example with the over-squashed <b>\squashmargin{1}</b> &nbsp;
        !          2227:      <a href="#preview"><img id="squash5" onclick="eqntext('squash5')"
        !          2228:      src="../cgi-bin/mimetex.cgi?\displaystyle
        !          2229:      \squashmargin1\frac12\int_{a+b+c}^{d+e+f}{g(x)}dx"
        !          2230:      alt="" border=0 align=middle></a> &nbsp; instead. </p>
        !          2231: 
        !          2232:  <p> Squashing is in "alpha testing" and some expressions still don't look
        !          2233:      quite right when squashed, e.g., <b>1^2,2^2,3^2,\ldots</b> renders as
        !          2234:      <a href="#preview"><img id="squash6" onclick="eqntext('squash6')"
        !          2235:      src="../cgi-bin/mimetex.cgi?\Large1^2,2^2,3^2,\ldots"
        !          2236:      alt="" border=0 align=middle></a>.  Just compile with <b>-DNOSQUASH</b>
        !          2237:      if you come across numerous annoying situations. </p>
        !          2238: 
        !          2239: <h3> <a name="not">\not and \Not and \sout<font size=5>...</font></a> </h3>
        !          2240: 
        !          2241:  <p> The usual LaTeX &nbsp; <b>\not</b> &nbsp; "slashes" the single symbol
        !          2242:      following it, e.g., &nbsp; <b>i\not\partial\equiv&nbsp;i\not\nabla</b>
        !          2243:      &nbsp; produces <a href="#preview">
        !          2244:      <img id="not1" onclick="eqntext('not1')"
        !          2245:      src="../cgi-bin/mimetex.cgi?i\not\partial\equiv i\not\nabla"
        !          2246:      alt="" border=0 align=middle></a>. </p>
        !          2247: 
        !          2248:  <p> For arbitrary expressions, mimeTeX provides &nbsp; <b>\Not</b> &nbsp;
        !          2249:      which draws a line from the upper-right to lower-left corner of its
        !          2250:      argument, e.g., &nbsp; <b>a\Not{x^2}=bx^{\not3}</b> &nbsp; produces
        !          2251:      &nbsp; <a href="#preview"><img id="not2" onclick="eqntext('not2')"
        !          2252:      src="../cgi-bin/mimetex.cgi?\large a\Not{x^2}=bx^{\not3}"
        !          2253:      alt="" border=0 align=bottom></a>. </p>
        !          2254: 
        !          2255:  <p> Finally, similar to the <b>ulem.sty</b> package, &nbsp; <b>\sout</b>
        !          2256:      &nbsp; draws a horizontal strikeout line through its argument,
        !          2257:      e.g., &nbsp; <b>\sout{abcdefg}</b> &nbsp; produces <a href="#preview">
        !          2258:      <img id="not3" onclick="eqntext('not3')"
        !          2259:      src="../cgi-bin/mimetex.cgi?\sout{abcdefg}"
        !          2260:      alt="" border=0 align=middle></a>.  MimeTeX's <b>\sout</b> also
        !          2261:      takes an optional argument that adjusts the vertical position of its
        !          2262:      strikeout line by the specified number of pixels, e.g., &nbsp;
        !          2263:      <b>\sout[+2]{abcdefg}</b> produces <a href="#preview">
        !          2264:      <img id="not4" onclick="eqntext('not4')"
        !          2265:      src="../cgi-bin/mimetex.cgi?\sout[+2]{abcdefg}"
        !          2266:      alt="" border=0 align=middle></a> &nbsp; and &nbsp;
        !          2267:      <b>\sout[-2]{abcdefg}</b> produces
        !          2268:      <a href="#preview"><img id="not5" onclick="eqntext('not5')"
        !          2269:      src="../cgi-bin/mimetex.cgi?\sout[-2]{abcdefg}"
        !          2270:      alt="" border=0 align=middle></a>. </p>
        !          2271: 
        !          2272: 
        !          2273: <h2> <a name="array"> (IIIe) \begin{array}{lcr}...\end{array} Environment
        !          2274: &nbsp; </a> </h2>
        !          2275: 
        !          2276:  <p> Rendering vectors and matrices, aligning equations, etc, is all done
        !          2277:      using the customary LaTeX environment &nbsp;
        !          2278:      <b>\begin{array}{lcr}&nbsp;a&b&c\\d&e&f\\etc&nbsp;\end{array}</b>
        !          2279:      &nbsp; which you can write in exactly that form.  MimeTeX also
        !          2280:      recognizes the following array-like environments </p>
        !          2281:      <center> <table cellpadding="1" cellspacing="1">
        !          2282:        <tr> <td align="left">   <b>\begin{array}{lcr}</b>    </td>
        !          2283:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2284:             <td align="left">   <b>\end{array}</b>           </td> </tr>
        !          2285:        <tr> <td align="left">   <b>\begin{matrix}</b>        </td>
        !          2286:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2287:             <td align="left">   <b>\end{matrix}</b>          </td> </tr>
        !          2288:        <tr> <td align="left">   <b>\begin{pmatrix}</b>       </td>
        !          2289:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2290:             <td align="left">   <b>\end{pmatrix}</b>         </td> </tr>
        !          2291:        <tr> <td align="left">   <b>\begin{bmatrix}</b>       </td>
        !          2292:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2293:             <td align="left">   <b>\end{bmatrix}</b>         </td> </tr>
        !          2294:        <tr> <td align="left">   <b>\begin{Bmatrix}</b>       </td>
        !          2295:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2296:             <td align="left">   <b>\end{Bmatrix}</b>         </td> </tr>
        !          2297:        <tr> <td align="left">   <b>\begin{vmatrix}</b>       </td>
        !          2298:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2299:             <td align="left">   <b>\end{vmatrix}</b>         </td> </tr>
        !          2300:        <tr> <td align="left">   <b>\begin{Vmatrix}</b>       </td>
        !          2301:             <td align="center"> <b>a&b&c \\ d&e&f \\ etc</b> </td>
        !          2302:             <td align="left">   <b>\end{Vmatrix}</b>         </td> </tr>
        !          2303:        <tr> <td align="left">   <b>\begin{eqnarray}</b>      </td>
        !          2304:             <td align="center"> <b>a&=&b \\ c&=&d \\ etc</b> </td>
        !          2305:             <td align="left">   <b>\end{eqnarray}</b>        </td> </tr>
        !          2306:        <tr> <td align="left">   <b>\begin{align}</b>         </td>
        !          2307:             <td align="center"> <b>a&=b \\ c&=d \\ etc</b>   </td>
        !          2308:             <td align="left">   <b>\end{align}</b>           </td> </tr>
        !          2309:        <tr> <td align="left">   <b>\begin{gather}</b>        </td>
        !          2310:             <td align="center"> <b>a \\ b \\ etc</b>         </td>
        !          2311:             <td align="left">   <b>\end{gather}</b>          </td> </tr>
        !          2312:      </table> </center> <p class="continue">
        !          2313:      There's a built-in maximum of 64 columns and 64 rows.  Nested
        !          2314:      array environments, e.g.,
        !          2315:    <b>\begin{pmatrix}a&\begin{matrix}1&2\\3&4\end{matrix}\\c&d\end{pmatrix}</b>,
        !          2316:      are permitted. </p>
        !          2317: 
        !          2318:  <p> MimeTeX also provides the abbreviation &nbsp;
        !          2319:      <b>\array{lcr$a&b&c\\d&e&f\\etc}</b> &nbsp;
        !          2320:      which has exactly the same effect as &nbsp;
        !          2321:      <b>\begin{array}{lcr}&nbsp;a&b&c\\d&e&f\\etc&nbsp;\end{array}</b>.
        !          2322:      And the <b>lcr$</b> "preamble" in <b>\array{lcr$etc}</b> is optional.
        !          2323:      In that case, &nbsp; <b>\array{a&b&c\\d&e&f\\etc}</b> &nbsp;
        !          2324:      has exactly the same effect as &nbsp;
        !          2325:      <b>\begin{matrix}&nbsp;a&b&c\\d&e&f\\etc&nbsp;\end{matrix}</b>.
        !          2326:      You can also write <b>\(\array{etc}\)</b> to "manually abbreviate"
        !          2327:      the pmatrix environment, or <b>\array{rcl$etc}</b> to abbreviate
        !          2328:      eqnarray, but mimeTeX has no explicit abbreviations for these
        !          2329:      other environments.  For example, </p> <center>
        !          2330:       <b>\begin{matrix}a_1&a_2&a_3\\b_1&b_2&b_3\\c_1&c_2&c_3\end{matrix}</b>
        !          2331:       &nbsp; produces &nbsp;
        !          2332:       <a href="#preview"><img id="array1" onclick="eqntext('array1')"
        !          2333:       src="../cgi-bin/mimetex.cgi?\large\begin{matrix}a_1&a_2&a_3\\
        !          2334:       b_1&b_2&b_3\\c_1&c_2&c_3\end{matrix}"
        !          2335:       alt="" border=0 align=middle></a> </center>
        !          2336: 
        !          2337:  <p> Solid <b>\hline</b>'s (but not \cline's) and vertical <b>l|c|r</b> bars
        !          2338:      are available, as usual.  For dashed lines and bars,
        !          2339:      <b>\begin{array}</b> provides the additional features <b>\hdash</b>
        !          2340:      and <b>l.c.r</b>&nbsp;. <b>\hline</b> and <b>\hdash</b> may not be
        !          2341:      abbreviated.  For example, </p> <center>
        !          2342:    <b>\begin{array}{c.c|c} a_1&a_2&a_3 \\\hdash b_1&b_2&b_3 <br>
        !          2343:      \\\hline c_1&c_2&c_3 \end{array}</b> &nbsp; produces <br>
        !          2344:        <a href="#preview"> <img id="array22" onclick="eqntext('array22')"
        !          2345:        src="../cgi-bin/mimetex.cgi?\large\begin{array}{c.c|c}
        !          2346:        a_1&a_2&a_3\\\hdash b_1&b_2&b_3\\\hline c_1&c_2&c_3\end{array}"
        !          2347:        alt="" border="0" align="middle"> </a> </center>
        !          2348: 
        !          2349:  <p> The default font size is unchanged by <b>\array{&nbsp;}</b>, but you
        !          2350:      can explicitly control it in the usual way, e.g.,
        !          2351:      <b>{\large\begin{matrix}...\end{matrix}}</b> renders the entire array
        !          2352:      in font size 3.  In addition, any <b>&...&</b> cell may contain font
        !          2353:      size declarations which are always local to that cell,
        !          2354:      e.g., <b>&\fs{-1}...&</b> renders that one cell one font size smaller
        !          2355:      than current. </p>
        !          2356: 
        !          2357:  <p> The <b>{lcr}</b> in <b>\begin{array}{lcr}</b> sets left,center,right
        !          2358:      <i>"horizontal&nbsp;justification"</i> down columns of an array,
        !          2359:      as usual.  And "vertical&nbsp;justification" across rows defaults
        !          2360:      to what we'll call <b><i>baseline</i></b>, i.e., aligned equations,
        !          2361:      as in <a href="#example10">Example&nbsp;10</a> above, display properly.
        !          2362:      But the down arrows (for &nbsp;
        !          2363:        <a href="#preview"><img id="array3" onclick="eqntext('array3')"
        !          2364:        src="../cgi-bin/mimetex.cgi?\small\array{C$\gamma&\Large\downarr}"
        !          2365:        alt="" border=0 align=middle></a> &nbsp; and for &nbsp;
        !          2366:        <a href="#preview"><img id="array4" onclick="eqntext('array4')"
        !          2367:        src="../cgi-bin/mimetex.cgi?\small\array{C$\Large\downarr&\beta}"
        !          2368:        alt="" border=0 align=middle></a>)
        !          2369:      in <a href="#example11">Example&nbsp;11</a> require
        !          2370:      <i>"vertical&nbsp;centering"</i> across the middle row of that
        !          2371:      array.  So, in addition to lowercase <b>lcr</b>, mimeTeX's <b>{lcr}</b>
        !          2372:      in <b>\begin{array}{lcr}</b> may also contain uppercase <b>BC</b> to
        !          2373:      set "<b>B</b>"aseline or "<b>C</b>"enter vertical justification across
        !          2374:      the corresponding rows.  For example, <b>\begin{array}{rccclBCB}</b>
        !          2375:      sets baseline justification for the first and third rows, and center
        !          2376:      justification for the second row.  Without any <b>BC</b>'s,
        !          2377:      all rows default to the usual <b>B</b> baseline justification. </p>
        !          2378: 
        !          2379:  <p> MimeTeX has no <b>\arraycolsep</b> or <b>\arraystretch</b> parameters.
        !          2380:      Instead, <b>\begin{array}{lc25rB35C}</b> sets the absolute width
        !          2381:      of the second column to 25&nbsp;pixels, and the absolute height of the
        !          2382:      first row to 35&nbsp;pixels, as illustrated by
        !          2383:      <a href="#example9">Example&nbsp;9</a>.  Any number following
        !          2384:      an <b>lcrBC</b> specification sets the width of that one column
        !          2385:      (for <b>lcr</b>), or the height of that one row (for <b>BC</b>). <br>
        !          2386:      <img src="../cgi-bin/mimetex.cgi?\hspace{35}" alt="" border=0>
        !          2387:           You can optionally precede the number with a <b>+</b> sign,
        !          2388:      which "propagates" that value forward to all subsequent columns for
        !          2389:      <b>lcr</b>, or all subsequent rows for <b>BC</b>.  For example,
        !          2390:      <b>\begin{array}{lc+25rB+35C}</b> sets the absolute width of
        !          2391:      column&nbsp;2 and all subsequent columns to 25&nbsp;pixels,
        !          2392:      and the absolute height of row&nbsp;1 and all subsequent rows
        !          2393:      to 35&nbsp;pixels.  After absolute sizing has been set, the special
        !          2394:      value <b>0</b> reverts to automatic sizing for that one row or
        !          2395:      column, and <b>+0</b> reverts to automatic sizing for all subsequent
        !          2396:      rows or columns.  For example, <b>\begin{array}{c+25ccc+35ccc+0}</b>
        !          2397:      sets the absolute widths of columns&nbsp;1-3 to 25&nbsp;pixels,
        !          2398:      columns&nbsp;4-6 to 35&nbsp;pixels, and then reverts to automatic
        !          2399:      sizing for columns&nbsp;7 and all subsequent columns. <br>
        !          2400:      <img src="../cgi-bin/mimetex.cgi?\hspace{35}" alt="" border=0>
        !          2401:           The "propagation" introduced by <b>+</b> is local to the
        !          2402:      <b>\begin{array}</b> in which it occurs.  So you have to repeat
        !          2403:      the same specifications if you want rows aligned across several
        !          2404:      arrays on the same line (or columns aligned on several lines
        !          2405:      separated by <b>\\</b>).  Instead, a lowercase <b>g</b> globally
        !          2406:      copies your column specifications to all subsequent arrays,
        !          2407:      and an uppercase <b>G</b> globally copies your row specifications.
        !          2408:      And <b>gG</b> copies both column and row specifications.  For example,
        !          2409:      <b>\begin{array}{GC+25}</b> sets the height of all rows in this
        !          2410:      array to 25 pixels, and ditto for all subsequent arrays to its right.
        !          2411:      Explicit specifications in subsequent arrays override previous global
        !          2412:      values. <br>
        !          2413:      <img src="../cgi-bin/mimetex.cgi?\hspace{35}" alt="" border=0>
        !          2414:           Click one of the following examples to see illustrations
        !          2415:      of the above discussion: </p> <center>
        !          2416:      <a href="#preview"> <img id="array31" onclick="eqntext('array31')"
        !          2417:      src="../cgi-bin/mimetex.cgi?\large
        !          2418:      \left( \begin{array}{GC+30}
        !          2419:             \cos\frac\theta2 & i\,\sin\frac\theta2\\
        !          2420:             i\,\sin\frac\theta2 & \cos\frac\theta2 \end{array} \right)
        !          2421:      \left( \begin{array}
        !          2422:             z & x_{\tiny-} \\ x_{\tiny+} & -z \end{array} \right)
        !          2423:      \hfill{300}\text{\normalsize Example 1}"
        !          2424:      alt="" border="0" align="middle"> </a> <br>
        !          2425:      <a href="#preview"> <img id="array32" onclick="eqntext('array32')"
        !          2426:      src="../cgi-bin/mimetex.cgi?\large
        !          2427:      \left( \begin{array}{GC+30gc+40}
        !          2428:             \cos\frac\theta2 & i\,\sin\frac\theta2 \\
        !          2429:             i\,\sin\frac\theta2 & \cos\frac\theta2 \end{array} \right)
        !          2430:      \left( \begin{array}
        !          2431:             z & x_{\tiny-} \\ x_{\tiny+} & -z \end{array} \right)
        !          2432:      \hfill{300}\text{\normalsize Example 2}"
        !          2433:      alt="" border="0" align="middle"> </a> </center>
        !          2434: 
        !          2435:  <p> See <a href="#example8">Examples&nbsp;8-11</a> above for several
        !          2436:      additional <b>\begin{array}{lcr}</b> applications. </p>
        !          2437: 
        !          2438: 
        !          2439: <h2> <a name="picture"> (IIIf) \picture(&nbsp;){&nbsp;} "Environment",
        !          2440:      including \line(&nbsp;){&nbsp;} and \circle(&nbsp;) &nbsp; </a> </h2>
        !          2441: 
        !          2442:  <p> Besides <b>\begin{array}{lcr}</b>, mimeTeX also tries to emulate the
        !          2443:      familiar LaTeX picture environment with the somewhat similar<br>
        !          2444:       <b>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \picture(width[,height])&nbsp;
        !          2445:       {&nbsp;(loc1){pic_elem1}&nbsp;(loc2){pic_elem2}&nbsp;...&nbsp;}</b><br>
        !          2446:      as illustrated by <a href="#example12">Examples&nbsp;12-13</a> above.
        !          2447:      Arguments surrounded by <b>[&nbsp;]</b>'s are optional.
        !          2448:      If the optional <b>[,height]</b> is omitted, then <b>height=width</b>
        !          2449:      is assumed.  Locations <b>(loc1)</b> and <b>(loc2)&nbsp;...</b> each
        !          2450:      denote  either a <b>\put(loc)</b> or a <b>\multiput(loc)</b>,
        !          2451:      and each location is of the form <b>([c]x,y[;xinc,yinc[;num]])</b>. </p>
        !          2452: 
        !          2453:  <p> A <b>\put(loc)</b> is denoted by a location of the form <b>([c]x,y)</b>
        !          2454:      where <b>x,y</b> denotes the coordinate where the lower-left corner
        !          2455:      of the subsequent picture_element will be placed, unless the letter
        !          2456:      <b>c</b> precedes the <b>x</b>-number, in which case <b>cx,y</b>
        !          2457:      denotes the center point instead.  The very lower-left corner of the
        !          2458:      entire picture is always <b>0,0</b>, and the upper-right corner is
        !          2459:      <b>width-1,height-1</b>.  Note, for example, that you'd never want
        !          2460:      to specify location <b>c0,0</b> since the picture_element would be
        !          2461:      mostly out-of-bounds (only its upper-right quadrant would be
        !          2462:      in-bounds). </p>
        !          2463: 
        !          2464:  <p> A <b>\multiput(loc)</b> starts like a <b>\put(loc)</b>, but location
        !          2465:      <b>[c]x,y</b> is followed by <b>;xinc,yinc[;num]</b> indicating the
        !          2466:      <b>x,y-inc</b>rements applied to each of <b>num</b> repetitions
        !          2467:      of picture_element.  If <b>;num</b> is omitted, repetitions continue
        !          2468:      until the picture_element goes out-of-bounds of the specified
        !          2469:      <b>width[,height]</b>.  Note that <b>x,y</b> are always positive or
        !          2470:      zero, but <b>xinc,yinc</b> may be postive, zero or negative. </p>
        !          2471: 
        !          2472:  <p> The <b>\picture(,){...}</b> parameters <b>width, height, x, y, xinc,
        !          2473:      yinc</b> may be either integer or may contain a decimal point,
        !          2474:      and they're all scaled by <a href="#unitlength">\unitlength</a>.
        !          2475:      The <b>num</b> parameter must be integer. </p>
        !          2476: 
        !          2477:  <p> Picture_element's <b>{pic_elem1}</b> and <b>{pic_elem2} ...</b>
        !          2478:      may be any expressions recognized by mimeTeX, even including other
        !          2479:      <b>\picture</b>'s nested to any level. </p>
        !          2480: 
        !          2481: <h3> <a name="circleline">\line(&nbsp;){&nbsp;} and
        !          2482: \circle(&nbsp;)<font size=5>...</font></a> </h3>
        !          2483: 
        !          2484:  <p> To help draw useful picture_element's, mimeTeX provides several
        !          2485:      drawing commands, <b>\line(xinc,yinc)[{xlen}]</b> and
        !          2486:      <b>\circle(xdiam[,ydiam][;arc])</b>.  Although primarily intended
        !          2487:      for use in <b>\picture</b>'s, you can use them in any mimeTeX
        !          2488:      expression, e.g., &nbsp; <b>abc\circle(20)def</b> &nbsp; produces &nbsp;
        !          2489:       <a href="#preview"><img id="circleline1" onclick="eqntext('circleline1')"
        !          2490:       src="../cgi-bin/mimetex.cgi?\large abc\circle(20)def"
        !          2491:       alt="" border="0" align="middle"></a>. </p>
        !          2492: 
        !          2493:  <p> Without its optional <b>{xlen}</b> parameter, the expression
        !          2494:      <b>(x,y){\line(xinc,yinc)}</b> draws a straight line from point
        !          2495:      <b>x,y</b> to point <b>x+xinc,y+yinc</b>.  The <b>inc</b>'s
        !          2496:      can be positive, zero or negative.  Don't prefix location <b>x,y</b>
        !          2497:      with a leading <b>c</b> for <b>\line</b>'s; the intended "corner"
        !          2498:      is determined by the signs of <b>xinc</b> and <b>yinc</b>.
        !          2499:      If given, the optional <b>{xlen}</b> parameter rescales the length
        !          2500:      of the line so its x-projection is <b>xlen</b> and its slope is
        !          2501:      unchanged. </p>
        !          2502: 
        !          2503:  <p> Without optional <b>,ydiam</b> and <b>;arc</b>, the expression
        !          2504:      <b>(x,y){\circle(xdiam)}</b> draws a circle of diameter <b>xdiam</b>
        !          2505:      centered at <b>x,y</b>.  Don't prefix location <b>x,y</b> with a
        !          2506:      leading <b>c</b> for <b>\circle</b>'s; centering is assumed.
        !          2507:      If <b>,ydiam</b> is also given, then <b>(x,y){\circle(xdiam,ydiam)}</b>
        !          2508:      draws the ellipse inscribed in a rectangle of width <b>xdiam</b>
        !          2509:      and height <b>ydiam</b> centered at <b>x,y</b>. <br>
        !          2510:      &nbsp; &nbsp; &nbsp; Finally, <b>;arc</b> specifies the arc to be
        !          2511:      drawn, in one of two ways.  An <b>;arc</b> argument given in the
        !          2512:      form <b>;1234</b> interprets each digit as a quadrant to be drawn,
        !          2513:      with <b>1</b> the upper-right quadrant and then proceeding
        !          2514:      counterclockwise, e.g., <b>\circle(12;34)</b> specifies the
        !          2515:      lower half of a circle whose diameter is twelve. <br>
        !          2516:      &nbsp; &nbsp; &nbsp;  Alternatively, an <b>;arc</b> argument given in
        !          2517:      the form <b>45,180</b> or <b>-60,120</b> specifies the endpoints of
        !          2518:      the desired arc in degrees, with <b>0</b> the positive x-axis and
        !          2519:      then proceeding counterclockwise.  The first number must always
        !          2520:      be smaller than the second (negative numbers are allowed), and the
        !          2521:      arc is drawn counterclockwise starting from the smaller number. </p>
        !          2522: 
        !          2523:  <p> Besides <a href="#example12">Examples 12-13</a> above,
        !          2524:      it's hard to resist illustrating<br>
        !          2525:      <font size=4><b>&nbsp; &nbsp; &nbsp;
        !          2526:      \unitlength{.6} &nbsp; \picture(100) {<br>
        !          2527:      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        !          2528:             (50,50){\circle(99)} %%head%%<br>
        !          2529:      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        !          2530:             (20,55;50,0;2){\fs{+1}\hat\bullet} %%eyes%%<br>
        !          2531:      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        !          2532:             (50,40){\bullet} %%nose%%<br>
        !          2533:      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        !          2534:             (50,35){\circle(50,25;34)} %%upper lip%%<br>
        !          2535:      &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
        !          2536:             (50,35){\circle(50,45;34)} %%lower lip%% &nbsp; }</b></font></p>
        !          2537:   <center>
        !          2538:    <a href="#preview"><img id="circleline2" onclick="eqntext('circleline2')"
        !          2539:    src="../cgi-bin/mimetex.cgi?\unitlength{.6}\picture(100){
        !          2540:    (50,50){\circle(99)} (20,55;50,0;2){\fs{+1}\hat\bullet} (50,40){\bullet}
        !          2541:    (50,35){\circle(50,25;34)} (50,35){\circle(50,45;34)}}"
        !          2542:    alt="" border=0 align=middle></a><br>Have a nice day!</center>
        !          2543: 
        !          2544: 
        !          2545: <h2> <a name="commands"> (IIIg) Other mimeTeX Commands &nbsp; </a> </h2>
        !          2546: 
        !          2547:  <p> Various and sundry other LaTeX-like commands are also provided
        !          2548:      by mimeTeX.  In addition to features explicitly discussed below,
        !          2549:      mimeTeX supports the usual sub<b>_</b>scripts and super<b>^</b>scripts,
        !          2550:      and most of the typical LaTeX commands, many already discussed
        !          2551:      above, including </p>
        !          2552:      <ul>
        !          2553:        <li> <b>\frac{&nbsp;}{&nbsp;}</b> and <b>{&nbsp;\over&nbsp;}</b> </li>
        !          2554:        <li> <b>{&nbsp;\atop&nbsp;}</b> and <b>{&nbsp;\choose&nbsp;}</b> </li>
        !          2555:        <li> <b>\sqrt{&nbsp;}</b> </li>
        !          2556:        <li> <b>\lim_{&nbsp;}</b> and all the usual LaTeX function names </li>
        !          2557:        <li> <b>\hat{&nbsp;}</b> and <b>\widehat{&nbsp;}</b>
        !          2558:             and many of the usual LaTeX accents </li>
        !          2559:        <li> <b>\overbrace{&nbsp;}^{&nbsp;}</b> and
        !          2560:             <b>\underbrace{&nbsp;}_{&nbsp;}</b> </li>
        !          2561:        <li> <b>\overline{&nbsp;}</b> and <b>\underline{&nbsp;}</b> </li>
        !          2562:      </ul> <p class="continue">
        !          2563:      All these typical commands should behave as they usually do
        !          2564:      in LaTeX, and won't be discussed further.  Short discussions
        !          2565:      of some other commands follow. </p>
        !          2566: 
        !          2567: <h3> <a name="stackrel">\stackrel{&nbsp;}{&nbsp;} and
        !          2568: \relstack{&nbsp;}{&nbsp;}<font size=5>...</font></a> </h3>
        !          2569: 
        !          2570:  <p class="continue">
        !          2571:      <b>\stackrel{&nbsp;}{&nbsp;}</b> behaves as usual in LaTeX,
        !          2572:      rendering its first argument one font size smaller and centered above
        !          2573:      its second.  And the amsmath-style <b>\overset{&nbsp;}{&nbsp;}</b> is
        !          2574:      identical.  For example, </p> <center>
        !          2575:      <b>"\vec x\stackrel{\rm def}=(x_1\ldots x_n)"</b>
        !          2576:      &nbsp; produces &nbsp;
        !          2577:         <a href="#preview"><img id="stackrel1" onclick="eqntext('stackrel1')"
        !          2578:         src="../cgi-bin/mimetex.cgi?
        !          2579:         \Large\vec x\,\stackrel{\small\rm def}=
        !          2580:         \,(x_1\ldots x_n)" alt="" border=0 align=middle></a> </center>
        !          2581: 
        !          2582:  <p> "Conversely" to <b>\stackrel{&nbsp;}{&nbsp;}</b>, mimeTeX provides
        !          2583:      <b>\relstack{&nbsp;}{&nbsp;}</b>, which renders its second argument
        !          2584:      one font size smaller and centered below its first.
        !          2585:      And the amsmath-style <b>\underset{&nbsp;}{&nbsp;}</b> renders its
        !          2586:      first argument one font size smaller and centered below its second.
        !          2587:      For example, the <b>\log</b> function name doesn't treat
        !          2588:      limits like <b>\lim_</b>, but you can write, for example, </p> <center>
        !          2589:         <b>"\relstack{\log}{\rm base 2}32=5"</b> &nbsp; to render &nbsp;
        !          2590:         <a href="#preview"><img id="stackrel2" onclick="eqntext('stackrel2')"
        !          2591:         src="../cgi-bin/mimetex.cgi?
        !          2592:         \Large\relstack\log{\small\rm base 2}32\,=\,5"
        !          2593:         alt="" border=0 align=middle></a> </center>
        !          2594: 
        !          2595:  <p> MimeTeX's <b>\limits</b> provides an easier but non-standard
        !          2596:      alternative to achieve the same effect.  For example, </p> <center>
        !          2597:      <b>"\vec x =\limits^{\rm def} (x_1\ldots x_n)"</b>
        !          2598:      &nbsp; produces &nbsp;
        !          2599:         <a href="#preview"><img id="stackrel3" onclick="eqntext('stackrel3')"
        !          2600:         src="../cgi-bin/mimetex.cgi?\Large\vec x\,=\limits^{\small\rm def}
        !          2601:         \,(x_1\ldots x_n)" alt="" border=0 align=middle></a> <br><br>
        !          2602:         and &nbsp; <b>"\log\limits_{\rm base 2}32=5"</b> &nbsp;
        !          2603:         produces &nbsp;
        !          2604:         <a href="#preview"><img id="stackrel4" onclick="eqntext('stackrel4')"
        !          2605:         src="../cgi-bin/mimetex.cgi?
        !          2606:         \Large\log\limits_{\small\rm base 2}32\,=\,5"
        !          2607:         alt="" border=0 align=middle></a> </center>
        !          2608: 
        !          2609: <h3> <a name="fbox">\fbox{&nbsp;}<font size=5>...</font></a> </h3>
        !          2610: 
        !          2611:  <p> In case html border attributes aren't suitable, mimeTeX provides
        !          2612:      the usual <b>\fbox{<i>expression</i>}</b> command, e.g., </p> <center>
        !          2613:         <b>"\fbox{x=\frac12}"</b> &nbsp; produces &nbsp;
        !          2614:         <a href="#preview"><img id="fbox1" onclick="eqntext('fbox1')"
        !          2615:         src="../cgi-bin/mimetex.cgi?4$\fbox{x=\frac12}"
        !          2616:         alt="" border=0 align=middle></a> </center>
        !          2617: 
        !          2618:  <p> You can also write <b>\fbox[<i>width</i>]{<i>expression</i>}</b>
        !          2619:      to explicitly set the box's width, or you can write
        !          2620:      <b>\fbox[<i>width</i>][<i>height</i>]{<i>expression</i>}</b>
        !          2621:      to explicitly set both width and height. </p>
        !          2622: 
        !          2623: <h3> <a name="input">\input{&nbsp;}<font size=5>...</font></a> </h3>
        !          2624: 
        !          2625:  <p class="continue">
        !          2626:      <b>\input{<i>filename</i>}</b> behaves just like the corresponding
        !          2627:      LaTeX command, reading the entire contents of <b><i>filename</i></b>
        !          2628:      into your expression at the point where the <b>\input</b> command
        !          2629:      occurs.  By default, <b><i>filename</i></b> resides in the same
        !          2630:      directory as mimetex.cgi.  Moreover, for security, absolute paths
        !          2631:      with leading <b>/</b>'s or <b>\</b>'s, and paths with <b>../</b>'s
        !          2632:      or <b>..\</b>'s, are not permitted.  See the <b>-DPATHPREFIX</b>
        !          2633:      <a href="#options">compile&nbsp;option</a>, discussed above,
        !          2634:      if you want <b>\input</b> files in some other directory.
        !          2635:      In any case, if <b><i>filename</i></b> isn't found, then
        !          2636:      <b>\input</b> tries to read <b><i>filename</i>.tex</b> instead.</p>
        !          2637: 
        !          2638:  <p> MimeTeX also supports the optional form
        !          2639:      <b>\input{<i>filename:tag</i>}</b>.  In this case,
        !          2640:      <b><i>filename</i></b> is read as before, but only those characters
        !          2641:      between <b>&lt;<i>tag</i>&gt;...&lt;/<i>tag</i>&gt;</b> are placed
        !          2642:      into your expression.  This permits you to have one file containing
        !          2643:      many different <b>&lt;<i>tag</i>&gt;</b>'s, e.g., one file containing
        !          2644:      all the questions and/or answers to a homework assignment or a quiz,
        !          2645:      etc. </p>
        !          2646: 
        !          2647: <h3> <a name="counter">\counter[&nbsp;]{&nbsp;}
        !          2648: <font size=5>...</font></a> </h3>
        !          2649: 
        !          2650:  <p> The bottom-right corner of this page contains a page hit counter
        !          2651:      that's maintained using mimeTeX's
        !          2652:      <b>\counter[<i>logfile</i>]{<i>counterfile</i>:<i>tag</i>}</b>
        !          2653:      command.  As with <b>\input</b>, described immediately above,
        !          2654:      both the required <b><i>counterfile</i></b> and the optional
        !          2655:      <b><i>logfile</i></b> are the names of files that reside in the
        !          2656:      same directory as your mimetex.cgi executable, unless you compiled
        !          2657:      mimetex with the <b>-DPATHPREFIX</b>
        !          2658:      <a href="#options">compile&nbsp;option</a>.  Before using
        !          2659:      the <b>\counter</b> command, Unix "touch" and "chmod" those files
        !          2660:      so they're mimeTeX readable and writable. </p>
        !          2661: 
        !          2662:  <p> If <b><i>counterfile</i></b> isn't readable and writable,
        !          2663:      then the <b>\counter</b> command always displays
        !          2664:      <b>1<sup><u>st</u></sup></b>.  Otherwise, it maintains a
        !          2665:      line in <b><i>counterfile</i></b> of the form
        !          2666:      <b>&lt;<i>tag</i>&gt;&nbsp;<i>value</i>&nbsp;&lt;/<i>tag</i>&gt;</b>
        !          2667:      where <b><i>value</i></b> is initialized as <b>1_</b> if the
        !          2668:      specified <b>&lt;<i>tag</i>&gt;</b> line doesn't already exist,
        !          2669:      and then incremented on each subsequent call.  That trailing
        !          2670:      underscore on the value in the file, e.g., <b>99_</b>, tells
        !          2671:      mimeTeX to display <b>99<sup><u>th</u></sup></b> with an
        !          2672:      ordinal suffix.  Edit the value in the file and remove the
        !          2673:      underscore if you don't want the ordinal suffix displayed.
        !          2674:      Finally, mimeTeX makes no effort to lock files or
        !          2675:      records&nbsp;(tags), so be careful using <b>\counter</b>
        !          2676:      if your hit rates are high enough so that frequent collisions
        !          2677:      are likely. </p>
        !          2678:      
        !          2679:  <p> The same <b><i>counterfile</i></b> can contain as many different
        !          2680:      <b>&lt;<i>tag</i>&gt;</b> lines as you like, so counters for
        !          2681:      all the pages on your site can be maintained in one file.
        !          2682:      MimeTeX also maintains a special <b>&lt;timestamp&gt;</b> tag
        !          2683:      in <b><i>counterfile</i></b> that logs the the date/time and
        !          2684:      name of the most recently updated tag. </p>
        !          2685: 
        !          2686:  <p> Somewhat more detailed log information can be accumulated in
        !          2687:      the optional <b><i>logfile</i></b>.  If you provide that
        !          2688:      filename, mimeTeX writes a line to it of the form
        !          2689:      <b>2004-09-20:12:59:33pm&nbsp;&lt;<i>tag</i>&gt;=99&nbsp;192.168.1.1&nbsp;<i>http_referer</i></b>
        !          2690:      containing a timestamp, the counter tag and its current value,
        !          2691:      and the user's IP address and http_referer page if they're
        !          2692:      available. </p>
        !          2693: 
        !          2694:  <p> The page hit counter displayed at the bottom-right corner
        !          2695:      of this page is maintained by the command
        !          2696:      <b>\counter[counters.log]{counters.txt:mimetex.html}</b>.
        !          2697:      After compiling and installing your
        !          2698:      own mimetex.cgi and your own copy of this page, that counter will
        !          2699:      continually show <b>1<sup><u>st</u></sup></b>'s
        !          2700:      unless/until you "touch" and "chmod" counters.txt (and, optionally,
        !          2701:      counters.log) in your mimetex.cgi directory. </p>
        !          2702: 
        !          2703: 
        !          2704: <h2> <a name="exceptions"> (IIIh) Other Exceptions
        !          2705: to LaTeX Syntax &nbsp; </a> </h2>
        !          2706: 
        !          2707: <h3> Binding Exceptions<font size=5>...</font> </h3>
        !          2708: 
        !          2709:  <p> MimeTeX's bindings are pretty much left-to-right.  For example,
        !          2710:      although mimeTeX correctly interprets <b>\frac12</b> as well as
        !          2711:      <b>\frac{1}{2}</b>, etc, the legal LaTeX expression <b>x^\frac12</b>
        !          2712:      must be written <b>x^{\frac12}</b>.  Otherwise, mimeTeX interprets
        !          2713:      it as <b>{x^\frac}12</b>, i.e., the same way <b>x^\alpha12</b>
        !          2714:      would be interpreted, which is entirely wrong for <b>\frac</b>.
        !          2715:      The same requirement also applies to other combinations of commands,
        !          2716:      e.g., you must write <b>\sqrt{\frac\alpha\beta}</b>, etc. </p>
        !          2717: 
        !          2718: 
        !          2719: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !          2720: SECTION IV.  APPENDICES
        !          2721: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !          2722: <h1> <a name="appendices"> (IV) Appendices &nbsp; </a> </h1>
        !          2723: 
        !          2724: <p> Programming information to help you modify mimeTeX's behavior,
        !          2725:   and to use its functionality in your own programs, is provided
        !          2726:   by these appendices.  The currently available appendices discuss
        !          2727:   (a)how to modify or extend mimeTeX's fonts, (b)how to use
        !          2728:   mimeTeX's principal function, make_raster(), and (c)how to use
        !          2729:   <a href="http://shh.thathost.com" target="_top">Sverre Huseby's</a>
        !          2730:   gifsave.c library. </p>
        !          2731: 
        !          2732: 
        !          2733: <h2> <a name="fonts"> (IVa) &nbsp; mimeTeX Fonts &nbsp; </a> </h2>
        !          2734: 
        !          2735: <p> The font information mimeTeX uses to render characters is
        !          2736:   derived from .gf font files (usually generated by <b>metafont</b>
        !          2737:   running against .mf files), which are then run through
        !          2738:   <b>gftype -i</b>  and finally through my <b>gfuntype</b> program
        !          2739:   (supplied with your mimeTeX distribution). </p>
        !          2740: 
        !          2741: <p> The final output from each such sequence of three runs
        !          2742:   (metafont &gt; gftype -i &gt; gfuntype) gives mimeTeX the information
        !          2743:   it needs to render one particular font family at one particular
        !          2744:   size.  The file <b>texfonts.h</b> supplied with your mimeTeX
        !          2745:   distribution collects the output from 36 such (sequences of)
        !          2746:   runs, representing six font families at six sizes each. </p>
        !          2747: 
        !          2748: <p> This collection of information in  texfonts.h  is
        !          2749:   "wired" into mimeTeX through tables maintained in <b>mimetex.h</b>.
        !          2750:   To change mimeTeX's fonts, you'll have to first modify (or totally
        !          2751:   replace) texfonts.h using your own gfuntype output, and then
        !          2752:   change mimetex.h to reflect your texfonts.h modifications. </p>
        !          2753: 
        !          2754: <p> This appendix provides a brief description of the above
        !          2755:   process, though you'll probably need at least some previous
        !          2756:   C programming experience to confidently accomplish it.
        !          2757:   Your motivation might be to add more fonts to mimeTeX,
        !          2758:   to change the font sizes I chose, or to add more
        !          2759:   font sizes, etc.  MimeTeX's design permits all this to be
        !          2760:   easily done once you understand the process. </p>
        !          2761: 
        !          2762: <p> Running <b>metafont</b> to generate a <b>.gf</b> file from <b>.mf</b>
        !          2763:   source will usually be your very first step.  A typical such run
        !          2764:   might be </p>
        !          2765:  <center><b>mf '\mode=onetz; mag=magstep(.5); input cmmi10'</b></center>
        !          2766: <p class="continue"> which in this case generates output file
        !          2767:   <b>cmmi10.131gf</b> (which is mimeTeX's font size 3 for the
        !          2768:   cmmi family). </p>
        !          2769: 
        !          2770: <p> Given the cmmi10.131gf file from this metafont run
        !          2771:   (or substitute any other .gf file you like), next run </p>
        !          2772:      <center><b>gftype -i cmmi10.131gf &gt; typeout</b></center>
        !          2773: <p class="continue"> where <b>typeout</b> can be any temporary
        !          2774:   filename you like. </p>
        !          2775: 
        !          2776: <p> Finally, run <b>gfuntype</b> against the  typeout  file
        !          2777:   you just generated with the command </p>
        !          2778:      <center><b>gfuntype  -n cmmi131  typeout  cmmi131.h</b></center>
        !          2779:   <p class="continue"> to generate the final output file <b>cmmi131.h</b>
        !          2780:   (or any filename you supply as the last arg).  This
        !          2781:   contains the cmmi data in an array whose name is taken
        !          2782:   from the <b>-n</b> arg you supplied to gfuntype. </p>
        !          2783: 
        !          2784: <p> The above sequence of three runs resulted in output file
        !          2785:   <b>cmmi131.h</b>, containing the font information mimeTeX needs
        !          2786:   for one font family (cmmi) at one font size (3).  Repeat this
        !          2787:   sequence of three runs for each font size and each font family.
        !          2788:   Then pull all the output files into one big <b>texfonts.h</b> file
        !          2789:   (or write a small texfonts.h which just #include's them all). </p>
        !          2790: 
        !          2791: <p> For your information, the 36 sequences of runs represented
        !          2792:   in the texfonts.h file supplied with your mimeTeX distribution
        !          2793:   correspond to the following six inital metafont runs for cmr10 </p>
        !          2794:   <pre>   size=0 (.83gf)   mf '\mode=eighthre; input cmr10'
        !          2795:         1 (.100gf)  mf '\mode=nextscrn; input cmr10'
        !          2796:         2 (.118gf)  mf '\mode=lview; input cmr10'
        !          2797:         3 (.131gf)  mf '\mode=onetz; mag=magstep(.5); input cmr10'
        !          2798:         4 (.160gf)  mf '\mode=itoh; input cmr10'
        !          2799:         5 (.180gf)  mf '\mode=lqlores; input cmr10'</pre>
        !          2800:   <p class="continue">
        !          2801:   Then ditto for the five other font families cmmi10, cmsy10, cmex10,
        !          2802:   rsfs10, bbold10.  All the subsequent gftype and gfuntype runs just
        !          2803:   follow the usual format described above. </p>
        !          2804: 
        !          2805: <p> To incorporate all this font information you just generated into
        !          2806:   mimeTeX, edit your <b>mimetex.h</b> file and find the table that looks
        !          2807:   something like </p><pre>    static fontfamily aafonttable[] =
        !          2808:      { /* -------------------------------------------------------------
        !          2809:           family   size=0,       1,       2,       3,       4,      5
        !          2810:        ------------------------------------------------------------- */
        !          2811:        {  CMR10, {  cmr83,  cmr100,  cmr118,  cmr131,  cmr160,  cmr180 } },
        !          2812:        { CMMI10, { cmmi83, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180 } },
        !          2813:        { CMSY10, { cmsy83, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180 } },
        !          2814:        { CMEX10, { cmex83, cmex100, cmex118, cmex131, cmex160, cmex180 } },
        !          2815:        { RSFS10, { rsfs83, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180 } },
        !          2816:        {BBOLD10, {bbold83,bbold100,bbold118,bbold131,bbold160,bbold180 } },
        !          2817:        {   -999, {   NULL,    NULL,    NULL,    NULL,    NULL,    NULL } }
        !          2818:      } ; /* --- end-of-fonttable[] --- */</pre><p class="continue">
        !          2819:   Note the 36 names <b>cmr83...bbold180</b> in the table.  These must
        !          2820:   correspond to (or must be changed to) the names following the <b>-n</b>
        !          2821:   switch you specified for your  gfuntype  runs. </p>
        !          2822: 
        !          2823: <p> If you want more than six font sizes, first build up texfonts.h
        !          2824:   with all the necessary information.  Then change LARGESTSIZE (and
        !          2825:   probably NORMALSIZE) in mimetex.h, and finally edit the above aafonttable[]
        !          2826:   by extending the columns in each row up to your largest size. </p>
        !          2827: 
        !          2828: <p> You can also add new rows by #define'ing a new family,
        !          2829:   and then adding a whole lot of character definitions at the bottom
        !          2830:   of mimetex.h, all in the obvious way (i.e., it should become obvious
        !          2831:   after reviewing mimetex.h).  A new row would be required,
        !          2832:   for example, to make another font available in mimeTeX. </p>
        !          2833: 
        !          2834: 
        !          2835: <h2> <a name="makeraster"> (IVb) mimeTeX's make_raster()
        !          2836: function &nbsp; </a> </h2>
        !          2837: 
        !          2838: <p> MimeTeX converts an input LaTeX math expression to a corresponding GIF
        !          2839:  image in two steps.  First, it converts the input LaTeX expression to a
        !          2840:  corresponding bitmap raster.  Then <a href="http://shh.thathost.com"
        !          2841:  target="_top">Sverre Huseby's</a> gifsave library, discussed
        !          2842:  <a href="#gifsave">below</a>, converts that bitmap to the emitted gif.
        !          2843:  Though you never explicitly see that bitmap, it's mimeTeX's principal
        !          2844:  result.  MimeTeX is written so any program can easily use its
        !          2845:  expression-to-bitmap conversion capability with just a single line of code.
        !          2846:  The following complete program demonstrates the simplest such use. </p>
        !          2847: 
        !          2848: <pre> #include &lt;stdio.h&gt;
        !          2849:  #include "mimetex.h"
        !          2850:  int main ( int argc, char *argv[] )
        !          2851:  {
        !          2852:  raster    *rp = make_raster(argv[1],NORMALSIZE);
        !          2853:  type_raster(rp,stdout);  /* display ascii image of raster */
        !          2854:  }</pre>
        !          2855: 
        !          2856: <p> Cut-and-paste the above sample code from this file to, say,
        !          2857:  mimedemo.c (and fix the brackets around stdio.h).  Then compile <br>
        !          2858:    &nbsp; &nbsp; &nbsp; &nbsp; cc mimedemo.c mimetex.c -lm -o mimedemo <br>
        !          2859:  and run it from your unix shell command line like <br>
        !          2860:    &nbsp; &nbsp; &nbsp; &nbsp; ./mimedemo &nbsp; &quot;x^2+y^2&quot; </p>
        !          2861:  
        !          2862: <p> MimeTeX's expression-to-bitmap conversion is accomplished by the
        !          2863:  make_raster() call, whose first argument is just a pointer to a
        !          2864:  (null-terminated) string containing any mimeTeX-compliant LaTeX
        !          2865:  expression, and whose second argument is the mimeTeX font size
        !          2866:  to use (overridden if your expression contains a preamble).
        !          2867:  The ascii display of the bitmap raster returned by make_raster()
        !          2868:  results from the subsequent call to type_raster().  That's all
        !          2869:  this program does, but you could use make_raster()'s returned bitmap
        !          2870:  for any other purpose you have in mind. </p>
        !          2871: 
        !          2872: <p> MimeTeX's primary purpose is to emit either xbitmaps or gif images
        !          2873:  rather than ascii displays.  And mimeTeX has anti-aliasing and various
        !          2874:  other options that further complicate its main() function compared to
        !          2875:  the simple example above.  The example below demonstrates mimeTeX
        !          2876:  usage in the slightly more realistic situation where an input expression
        !          2877:  is converted to a gif, without anti-aliasing, and emitted on stdout. </p>
        !          2878: 
        !          2879: <pre> #include &lt;stdio.h&gt;
        !          2880:  #include &lt;stdlib.h&gt;
        !          2881:  #include "mimetex.h"
        !          2882: 
        !          2883:  /* --- global needed by callback function, below, for gifsave.c --- */
        !          2884:  static  raster *rp = NULL;              /* 0/1 bitmap raster image */
        !          2885: 
        !          2886:  /* ---  callback function to return pixel value at col x, row y --- */
        !          2887:  int     GetPixel ( int x, int y )       /* pixel value will be 0 or 1 */
        !          2888:  { return (int)getpixel(rp,y,x); }       /* just use getpixel() macro */
        !          2889: 
        !          2890:  /* --- main() entry point --- */
        !          2891:  int     main ( int argc, char *argv[] )
        !          2892:  {
        !          2893:  /* --- get LaTeX expression from either browser query or command-line --- */
        !          2894:  char    *query = getenv("QUERY_STRING"),        /* check for query string */
        !          2895:          *expression = (query!=NULL? query :     /* input either from query */
        !          2896:             (argc>1? argv[1] : "f(x)=x^2"));     /* or from command line */
        !          2897:  /* ---- mimeTeX converts expression to bitmap raster ---- */
        !          2898:  rp = make_raster(expression,NORMALSIZE); /* mimeTeX rasterizes expression */
        !          2899:  /* ---- convert returned bitmap raster to gif, and emit it on stdout ---- */
        !          2900:  if ( query != NULL )                    /* Content-type line for browser */
        !          2901:    fprintf( stdout, "Content-type: image/gif\n\n" );
        !          2902:  /* --- initialize gifsave library and colors, and set transparent bg --- */
        !          2903:  GIF_Create(NULL, rp->width, rp->height, 2, 8); /* init for black/white */
        !          2904:  GIF_SetColor(0, 255, 255, 255);         /* always set background white */
        !          2905:  GIF_SetColor(1,   0,   0,   0);         /* and foreground black */
        !          2906:  GIF_SetTransparent(0);                  /* and set transparent background */
        !          2907:  /* --- finally, emit compressed gif image (to stdout) --- */
        !          2908:  GIF_CompressImage(0, 0, -1, -1, GetPixel);
        !          2909:  GIF_Close();
        !          2910:  }</pre>
        !          2911: 
        !          2912: <p> Cut-and-paste as before, compile like <br>
        !          2913:    &nbsp; &nbsp; &nbsp; &nbsp; cc mimedemo.c mimetex.c gifsave.c
        !          2914:    -lm -o mimedemo <br>
        !          2915:  and run it like the first example, but this time you may want to redirect
        !          2916:  stdout <br>
        !          2917:    &nbsp; &nbsp; &nbsp; &nbsp; ./mimedemo &nbsp; &quot;x^2+y^2&quot;
        !          2918:    &nbsp; <b>&gt;</b> &nbsp; mimedemo.gif <br>
        !          2919:  since output is now a gif image consisting of mostly unprintable bytes.
        !          2920:  Input is typically from the command line as illustrated, but this example
        !          2921:  checks for a browser query string too.  That means you could actually
        !          2922:  replace mimetex.cgi with this executable, though anti-aliasing wouldn't
        !          2923:  be available. </p>
        !          2924: 
        !          2925: <p> Of course, this example's intent isn't to replace the mimetex.cgi
        !          2926:  executable, but rather to illustrate GIFSAVE library usage, documented
        !          2927:  in detail below.  And this example also illustrates usage of several
        !          2928:  mimeTeX raster structure elements, like rp-&gt;width and rp-&gt;height.
        !          2929:  So you'll probably also want to refer to mimetex.h, which contains those
        !          2930:  raster structures and other relevant definitions.  For instance, the
        !          2931:  example's GetPixel() callback function illustrates usage of the getpixel()
        !          2932:  macro in mimetex.h, to retrieve individual pixels by their x,y-coordinates.
        !          2933:  And there's a similar setpixel() macro in mimetex.h to store pixels.
        !          2934:  After completing all this reading, you'll be prepared to begin using
        !          2935:  mimeTeX functions in your own code. </p>
        !          2936: 
        !          2937: 
        !          2938: 
        !          2939: <h2> <a name="gifsave">
        !          2940: (IVc)</a> <a href="http://shh.thathost.com" target="_top">Sverre Huseby's</a>
        !          2941: gifsave.c library &nbsp; </h2>
        !          2942: 
        !          2943: <p> The information below is taken from the README file accompanying
        !          2944:   <a href="http://shh.thathost.com" target="_top">Sverre Huseby's</a>
        !          2945:   distribution of GIFSAVE.  I've made a few small editorial modifications,
        !          2946:   including descriptions of the several minor changes necessary
        !          2947:   to support mimeTeX.  And the mimeTeX example program immediately above
        !          2948:   uses GIFSAVE in a very straightforward way that should help clarify
        !          2949:   any questions which may remain after reading the documentation below. </p>
        !          2950: 
        !          2951: <pre>
        !          2952:                              INTRODUCTION
        !          2953:                              ============
        !          2954: 
        !          2955:  The GIFSAVE functions make it possible to save GIF images from
        !          2956:  your own C programs.
        !          2957: 
        !          2958:  GIFSAVE creates simple GIF files following the GIF87a standard.
        !          2959:  Interlaced images cannot be created.  There should only be
        !          2960:  one image per file.
        !          2961: 
        !          2962:  GIFSAVE consists of five functions, all returning type int,
        !          2963:  and no separate header file is required.
        !          2964: 
        !          2965:  The functions should be called in the order listed below
        !          2966:  for each GIF-file. One file must be closed before a new one
        !          2967:  can be created.
        !          2968: 
        !          2969:      GIF_Create() creates new GIF-files. It takes parameters
        !          2970:          specifying filename, screen size, number of colors,
        !          2971:          and color resolution.
        !          2972: 
        !          2973:      GIF_SetColor() sets up red, green, blue color components.
        !          2974:          It should be called once for each possible color.
        !          2975: 
        !          2976:      GIF_SetTransparent() is optional.  If called, it sets the
        !          2977:          color number of the color that should be transparent,
        !          2978:          i.e., the background color shows through this one.
        !          2979: 
        !          2980:      GIF_CompressImage() performs the compression of the image.
        !          2981:          It accepts parameters describing the position and size
        !          2982:          of the image on screen, and a user defined callback
        !          2983:          function that is supposed to fetch the pixel values.
        !          2984: 
        !          2985:      GIF_Close() terminates and closes the file.
        !          2986: 
        !          2987:  To use these functions, you must also write a callback
        !          2988:  function that returns the pixel values for each point
        !          2989:  in the image.
        !          2990: 
        !          2991: 
        !          2992:                              THE FUNCTIONS
        !          2993:                              =============
        !          2994: 
        !          2995:  GIF_Create()
        !          2996:  ------------
        !          2997:          Function  Creates a new GIF-file, and stores info on
        !          2998:                    the screen.
        !          2999: 
        !          3000:            Syntax  int GIF_Create(
        !          3001:                            char *filename,
        !          3002:                            int width, int height,
        !          3003:                            int numcolors, int colorres
        !          3004:                        );
        !          3005: 
        !          3006:           Remarks  Creates a new (or overwrites an existing)
        !          3007:                    GIF-file with the given filename. No
        !          3008:                    .GIF-extension is added.
        !          3009: 
        !          3010:                    If filename is passed as a NULL pointer,
        !          3011:                    output is directed to stdout.
        !          3012: 
        !          3013:                    The width- and height- parameters specify
        !          3014:                    the size of the image in pixels.
        !          3015: 
        !          3016:                    numcolors is the number of colors used in
        !          3017:                    the image.
        !          3018: 
        !          3019:                    colorres is number of bits used to encode a
        !          3020:                    primary color (red, green or blue).
        !          3021:                    In GIF-files, colors are built by combining
        !          3022:                    given amounts of each primary color.
        !          3023:                    On VGA-cards, each color is built by
        !          3024:                    combining red, green and blue values in
        !          3025:                    the range [0, 63]. Encoding the number 63
        !          3026:                    would require 6 bits, so colorres would be
        !          3027:                    set to 6.
        !          3028: 
        !          3029:      Return value  GIF_OK        - OK
        !          3030:                    GIF_ERRCREATE - Error creating file
        !          3031:                    GIF_ERRWRITE  - Error writing to file
        !          3032:                    GIF_OUTMEM    - Out of memory
        !          3033: 
        !          3034: 
        !          3035:  GIF_SetColor()
        !          3036:  --------------
        !          3037:          Function  Specifies the primary color component of a
        !          3038:                    color used in the image.
        !          3039: 
        !          3040:            Syntax  void GIF_SetColor(
        !          3041:                             int colornum,
        !          3042:                             int red, int green, int blue
        !          3043:                         );
        !          3044: 
        !          3045:           Remarks  This function updates the colortable-values
        !          3046:                    for color number colornum in the image.
        !          3047: 
        !          3048:                    Should be called for each color in the range
        !          3049:                    [0, numcolors]
        !          3050: 
        !          3051:                    with red, green and blue components in the
        !          3052:                    range  [0, (2^colorres)-1]
        !          3053: 
        !          3054:                    colorres and colornum are values previousely
        !          3055:                    given to the function GIF_Create().
        !          3056: 
        !          3057:      Return value  None
        !          3058: 
        !          3059: 
        !          3060:  GIF_SetTransparent()
        !          3061:  --------------------
        !          3062:          Function  Specifies the color number of the color
        !          3063:                    that should be considered transparent.
        !          3064: 
        !          3065:            Syntax  void GIF_SetTransparent(
        !          3066:                             int colornum
        !          3067:                         );
        !          3068: 
        !          3069:           Remarks  Need not be called at all.  But if called,
        !          3070:                    should be called only once with colornum in
        !          3071:                    the range  [0, numcolors]  i.e., colornum
        !          3072:                    must be one of the values previously
        !          3073:                    given to GIF_SetColor().
        !          3074: 
        !          3075:      Return value  None
        !          3076: 
        !          3077: 
        !          3078:  GIF_CompressImage()
        !          3079:  -------------------
        !          3080:          Function  Compresses an image and stores it in the
        !          3081:                    current file.
        !          3082: 
        !          3083:            Syntax  int GIF_CompressImage(
        !          3084:                            int left, int top,
        !          3085:                            int width, int height,
        !          3086:                            int (*getpixel)(int x, int y)
        !          3087:                        );
        !          3088: 
        !          3089:           Remarks  The left- and top- parameters indicate the
        !          3090:                    image offset from the upper left corner of
        !          3091:                    the screen.  They also give the start values
        !          3092:                    for calls to the userdefined callback
        !          3093:                    function.
        !          3094: 
        !          3095:                    width and height give the size of the image.
        !          3096:                    A value of -1 indicates the equivalent screen
        !          3097:                    size given in the call to GIF_Create().
        !          3098: 
        !          3099:                    If the image is supposed to cover the entire
        !          3100:                    screen, values 0, 0, -1, -1 should be given.
        !          3101: 
        !          3102:                    GIF_CompressImage() obtains the pixel values
        !          3103:                    by calling a user specified function. This
        !          3104:                    function is passed in the parameter getpixel.
        !          3105:                    See "callback()" further down for a
        !          3106:                    description of this function.
        !          3107: 
        !          3108:      Return value  GIF_OK        - OK
        !          3109:                    GIF_ERRWRITE  - Error writing to file
        !          3110:                    GIF_OUTMEM    - Out of memory
        !          3111: 
        !          3112: 
        !          3113:  GIF_Close()
        !          3114:  -----------
        !          3115:          Function  Closes the GIF-file.
        !          3116: 
        !          3117:            Syntax  int GIF_Close(void);
        !          3118: 
        !          3119:           Remarks  This function writes a terminating descriptor
        !          3120:                    to the file, and then closes it. Also frees
        !          3121:                    memory used by the other functions of GIFSAVE.
        !          3122: 
        !          3123:      Return value  GIF_OK        - OK
        !          3124:                    GIF_ERRWRITE  - Error writing to file
        !          3125: 
        !          3126: 
        !          3127:                          THE CALLBACK FUNCTION
        !          3128:                          =====================
        !          3129: 
        !          3130:  callback()
        !          3131:  ----------
        !          3132:          Function  Obtains pixel-values for the
        !          3133:                    GIF_CompressImage() -function.
        !          3134: 
        !          3135:            Syntax  int callback(int x, int y);
        !          3136: 
        !          3137:           Remarks  This function must be written by the
        !          3138:                    programmer.  It should accept two integer
        !          3139:                    parameters specifying a point in the image,
        !          3140:                    and return the pixel value at this point.
        !          3141: 
        !          3142:                    The ranges for these parameters are as
        !          3143:                    follows
        !          3144:                        x : [img_left, img_left + img_width - 1]
        !          3145:                        y : [img_top, img_top + img_height - 1]
        !          3146: 
        !          3147:                    where img_left, img_top, img_width and
        !          3148:                    img_height are the values left, top, width
        !          3149:                    and height passed to GIF_CompressImage().
        !          3150: 
        !          3151:                    An example; if the screen has width 640 and
        !          3152:                    height 350, and the image covers the entire
        !          3153:                    screen, x will be in the range  [0, 639]
        !          3154:                    and y in the range  [0, 349].
        !          3155: 
        !          3156:                    callback() need not get its values from the
        !          3157:                    screen. The values can be fetched from a
        !          3158:                    memory array, they can be calculated for
        !          3159:                    each point requested, etc.
        !          3160: 
        !          3161:                    The function is passed as a parameter to
        !          3162:                    GIF_CompressImage(), and can thus have any
        !          3163:                    name, not only callback().
        !          3164: 
        !          3165:      Return value  Pixel value at the point requested. Should
        !          3166:                    be in the range  [0, numcolors-1]  where
        !          3167:                    numcolors is as specified to GIF_Create().
        !          3168: </pre>
        !          3169: 
        !          3170: 
        !          3171: 
        !          3172: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !          3173: CONCLUDING REMARKS
        !          3174: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !          3175: <h1 id="remarks"> Concluding Remarks &nbsp; </h1>
        !          3176: 
        !          3177: <p> I hope you find mimeTeX useful.  If so, a contribution to your
        !          3178:   country's <a href="http://www.tug.org" target="_top">TeX Users Group</a>,
        !          3179:   or to the <a href="http://www.gnu.org" target="_top">GNU</a> project, is
        !          3180:   suggested, especially if you're a company that's currently profitable. </p>
        !          3181:   
        !          3182: <!--
        !          3183: <p> If you also like mimeTeX's source, I'm an independent contractor
        !          3184:   incorporated in the US as John Forkosh Associates, Inc.
        !          3185:   A <a href="http://www.forkosh.com/resume.html" target="_top">resume</a>
        !          3186:   is at <a href="http://www.forkosh.com" target="_top">www.forkosh.com</a>
        !          3187:   or email
        !          3188:   <a href="mailto:john&#64;forkosh&#46;com">john&#64;forkosh&#46;com</a> </p>
        !          3189: -->
        !          3190: 
        !          3191: <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        !          3192: Footer across bottom of page
        !          3193: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        !          3194: <hr size=4>
        !          3195: <table> <tr>
        !          3196:  <td> <font size=3 color="maroon"> <b>
        !          3197:   <nobr>Copyright <font size=5>&copy;</font> 2002-2005,
        !          3198:   <a href="http://www.forkosh.com">John Forkosh Associates, Inc.</a>
        !          3199:   </nobr><br>
        !          3200:   email: <a href="mailto:john&#64;forkosh&#46;com">john&#64;forkosh&#46;com</a>
        !          3201:   </b> </font> </td>
        !          3202:  <td> <img src="../cgi-bin/mimetex.cgi?\hspace{100}" alt="" border=0> </td>
        !          3203:  <td> <img src="../cgi-bin/mimetex.cgi?\blue{\small\rm You're the }
        !          3204:        \Large\counter[counters.log]{counters.txt:mimetex.html}\\[0]
        !          3205:        {\small\rm visitor to this page." alt="" border=0 align=bottom> </td>
        !          3206: </tr> </table>
        !          3207: </body>
        !          3208: </html>
        !          3209: <!-- end-of-file mimetex.html -->

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>