--- loncom/cgi/mimeTeX/mimetex.html 2005/02/28 19:08:11 1.1 +++ loncom/cgi/mimeTeX/mimetex.html 2008/12/04 12:17:13 1.4 @@ -1,10 +1,11 @@ + + +
@@ -116,7 +125,7 @@ Banner across top of page, containing ti- - - - T u t o r i a l - - - | --- - - - - - - - - - - - - - R e f e r e n c e - - - - - - - - - - - - - - | + - - - T u t o r i a l - - - ++ - - - - - - - - - - - - - - R e f e r e n c e - - - - - - - - - - - - - - + | ||||
@@ -167,11 +180,10 @@ Table of Contents c. GPL License |
(II) Building mimeTeX - a. Download - b. Compile - c. Install - d. Compile Options - e. Command Line |
+ a. Compile
(III) Syntax Reference a. Math & White Space @@ -189,7 +201,50 @@ Table of Contents c. gifsave.c Remarks |
+ + - - - - - - I n s t a l l a t i o n + a n d U s a g e S u m m a r y - - - - - - + | ||||||
+
|
+
Please note: If you're writing your own plugin for mimeTeX, + please don't write php code using system( ), or any other + shell escape mechanism, just to cache images. Use mimeTeX's + -DCACHEPATH=\"path/\" + compile option instead. + system( ) raises security + issues, either real ones if used carelessly, or just in the minds of + system administrators. Either way, I've received many emails from + people unable to use mimeTeX because of unnecessary system( ) + calls prohibited by security-conscious sysadmins. MimeTeX itself poses + minimal risk when used as illustrated above, but you're responsible + for any plugin/wrapper script you write around it.
+ +An image like + + doesn't look as good as the same image + + that's vertically aligned with your surrounding text. + Along with several standard + + HTTP header fields, mimeTeX also emits a special + Vertical-Align: nn + header, where nn is the number of pixels + (usually negative as illustrated) needed for a + style="Vertical-Align: nn px" + attribute in the <img> tag used to + render your expression.
+ +But mimeTeX's special Vertical-Align: header + is unrecognized and ignored by your browser. You have to get the + header, interpret it, and write the corresponding <img> tag. + The only feasible way to do all this is using a scripting language, + as illustrated by the following, rather naive, php code
+<?php + $mimetexurl = "http://www.yourdomain.com/cgi-bin/mimetex.cgi?"; + function verticalalign( $expression ) { + global $mimetexurl; + // note: curl_init() stops at the first whitespace char in $url argument + $expression = ereg_replace(" ","~",$expression); // so remove whitespace + $url = $mimetexurl . $expression; + $valign = "0"; + $ch = curl_init( $url ); + curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); + curl_setopt( $ch, CURLOPT_HEADER, true ); + $gif = curl_exec( $ch ); + $errno = curl_errno( $ch ); + curl_close( $ch ); + if ( $errno == 0 ) { + $fields = explode("Vertical-Align:",$gif); + $vfield = trim($fields[1]); + $fldlen = strspn($vfield,"+-0123456789"); + $valign = substr($vfield,0,$fldlen); } + return $valign; + } + function mimetextag( $expression ) { + global $mimetexurl; + $valign = verticalalign($expression); + $url = $mimetexurl . $expression; + echo ' <img src="',$url,'" '; + echo ' style="Vertical-Align:',$valign,'px" '; + echo ' alt="" border=0>', "\n"; + } + ?>+ +
Now you can write + <?php mimetextag('\frac12\left(a^2+b^2\right)'); ?> + wherever you want to see + + correctly aligned. + This code calls mimeTeX twice to render each expression, + once to get the Vertical-Align: header and build an + <img> tag, and then again to render that tag. + If you're a good php programmer and write better code, + please email me a copy.
+ +If you're using mimeTeX's + -DCACHEPATH=\"path/\" + compile option, prefix your + path/ with a leading % and write + -DCACHEPATH=\"%path/\" instead. + That leading % won't become part of your cache + directory's path/, but it will signal mimeTeX + to cache headers along with each image. + Otherwise, the Vertical-Align: information is lost, + and attempts to align cached images will fail.
+MimeTeX's benefit over similar math-on-the-web solutions is, as mentioned above, its easy installation. But if that's not a problem for you, and if your site's server already has a LaTeX @@ -239,36 +545,40 @@ SECTION I. INTRODUCTION which uses LaTeX to create higher quality images than mimeTeX produces. For comparison, , with arbitrary mean + src="../cgi-bin/mimetex.cgi?\normalsize + f(x)=\int\limits_{-\infty}^xe^{-t^2}dt" + alt="" border=0 style="Vertical-Align:-11px">, + with arbitrary mean - and standard deviation + src="../cgi-bin/mimetex.cgi?\large\mu" alt="" border=0 + style="Vertical-Align:-5px"> and standard deviation , and at mimeTeX's next larger font size, looks like
+ style="Vertical-Align:0px">, + and at mimeTeX's next larger font size, looks likemimeTeX | +latexrender | - | latexrender | +mimeTeX |
+ | - | - |
Similar LaTeX-based solutions that you may want to look at are + mathtran, textogif and tex-faq.
+ For example, mathtran
+ is a public LaTeX web service that's
+ particularly easy to use by following these simple
+ instructions. In the <head> of your
+ html page, place the tag
+
+ <script type="text/javascript"
+
+ src="http://www.mathtran.org/js/mathtran_img.js"></script>
+ and in the <body>, wherever you want to see latex images,
+ place tags like
+
+ <img alt="tex:any latex math expression">
+ For comparison,
+
+ <img alt="tex: f(x) = \frac1{\sigma\sqrt{2\pi}}
+
+ \int_{-\infty}^x e^{-\frac{(t-\mu)^2}{2\sigma^2}}dt">
+ looks like
mathtran | ++ | mimeTeX | +
|
+ + | + | +
You may now want to browse the additional Examples below before proceeding, to make sure mimeTeX suits your needs before you - invest more time learning to use it.
+ spend more time learning to use it. just Submit any LaTeX math expression you like in the Query Box below. I've started - you out with a little example already in the box, or, instead, + you out with a little example already in the box, or you can Click any of the Examples below to place that corresponding expression in the Query Box.Meanwhile, here are just a few quickstart tips for Submitting your own mimeTeX expressions in the Query Box below:
You should see if you submit the sample expression - already in the box.
+ src="../cgi-bin/mimetex.cgi?\normalsize + f(x)=\int\limits_{-\infty}^x e^{-t^2}dt" + alt="" border=0 style="Vertical-Align:-11px"> + if you submit the sample expression already in the box.And the <img> tag to embed this same integral anywhere in your own document is
<img src="../cgi-bin/mimetex.cgi?\large f(x)=\int_{-\infty}^xe^{-t^2}dt" alt="" border=0 align=middle>-
You can see numerous additional examples illustrating html - <img> tags using mimeTeX by viewing this page's source. +
The typical mimeTeX <img> tag has the form
<img src="../cgi-bin/mimetex.cgi?any valid LaTeX/mimeTeX expression" alt="" border=0 align=middle>
@@ -423,12 +792,12 @@ QUICKSTART page containing these tags to your compiled mimetex.cgi program, and where any valid LaTeX/mimeTeX expression is pretty much any valid LaTeX math expression:
Finally, illustrated below are some examples of fonts and symbols - available with mimeTeX. All symbols and sizes from cmr, cmmi. cmsy, - cmex and rsfs should be available, but they're not all shown. - Mathbb symbols are also available but not shown. + available with mimeTeX. All symbols and sizes from cmr, cmmi, + cmmib (use \mathbf{ }), cmsy, cmex, bbold (use + \mathbb{ }), rsfs (use \mathscr{ }), + stmary and cyrillic wncyr (use {\cyr } or + \cyr{ }) should be available, but they're not all shown. And also not shown are various "constructed symbols" like \sqrt, accents, etc. The illustrated font sizes are numbered 4=\Large, - 3=\large and 2=\normalsize (not shown are 5=\LARGE, 1=\small and - 0=\tiny).
+ 3=\large and 2=\normalsize (not shown are 7=\Huge, 6=\huge, + 5=\LARGE, 1=\small and 0=\tiny).2$\pi&2$\rho&2$\sigma&2$\tau&2$\upsilon&2$\phi&2$\chi&2$\psi&2$\omega}" alt="" border=0 align=middle> -
1$\rm~117-127:~&\sqcap&\sqsubseteq&\sqsupseteq&\S&\dag&\ddag&\P&\clubsuit& \Diamond&\Heart&\spadesuit}" alt="" border=0 align=middle> -
+1$\rm~cmr:~&\ss&\ae&\oe&\AE&\OE \\ +1$\rm~stmary:~&\moo&\Lbag&\Rbag&\lightning&\llbracket&\rrbracket& +\subsetpluseq&\supsetpluseq&\Yup&\Ydown\\ +1$\rm~wncyr:~&\cyr A&\cyr a&\cyr B&\cyr b&\cyr V&\cyr v&\cyr G&\cyr g& +\cyr D&\cyr d&\cyr Dj&\cyr dj&\cyr\=E&\cyr\=e&\cyr Zh&\cyr zh}" +alt="" border=0 align=middle> Very briefly, download Form TX and follow the included instructions. In principle, you automatically own the copyright to anything you write the moment it's on paper. In practice, if the matter comes under dispute, the courts look _very_ favorably - on you for demonstrating your intent by registering the copyright. - + on you for demonstrating your intent by registering the copyright. + For example, courts will stop unauthorized use of unregistered + material, but monetary damages are awarded _only_ if you + register the copyright before infringement occurs.
Very quickly --- download - - + + mimetex.zip and then type
- cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi - cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi + + cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi + + + cc -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi - cc -DXBITMAP mimetex.c -lm -o mimetex.cgi
+ + Explanation: mimeTeX writes gif bytes directly to stdout, as usual + for cgi's. But Windows treats stdout as a character stream, + interpreting any hex 0A byte as an <lf>, and automatically + preceding it with a spurious hex 0D <cr> byte. The + -DWINDOWS switch compiles in a non-portable, Windows-specific + _setmode() call that sets stdout to binary mode. And a summary of the steps needed to install mimeTeX is -
+ + + cc gfuntype.c mimetex.c -lm -o gfuntype Any problems with the above? - Read the more detailed instructions below. - - -(IIa) Download- -Download - - - mimetex.zip and unzip it in any convenient working directory. - Your working directory should now contain
Note: all files use Unix line termination, i.e., linefeeds - (without carriage returns) signal line endings. Conversion for - Windows PC's, Macs, VMS, etc, can usually be accomplished by - unzip's -a option, i.e., unzip -a mimetex.zip - - -(IIb) Compile- -To compile a mimeTeX executable that emits anti-aliased gif images - (which is recommended for most uses) issue the command -Or, for an executable that emits gif images without anti-aliasing, - issue the command -Alternatively, to compile a mimeTeX executable that emits - mime xbitmaps, just issue the command -Compile Notes:
Several other optional compile-line options + That's all there is to compiling mimeTeX. + Several other optional compile-line options available for mimetex.c are discussed below. -The gfuntype program is only needed if you plan to change the - font information in texfonts.h, as explained in - Appendix IVa below. - In that case, compile gfuntype with the command -That's all there is to building mimeTeX. You can now test your - mimetex.cgi executable from the Unix command line by typing, e.g., - ./mimetex.cgi "x^2+y^2" which should emit two ascii - rasters something like the following +
Immediately after installing mimeTeX, test your new mimetex.cgi
+ by typing a url into your browser's locator window something like If you don't see the image, then your installation failed. + If your earlier post-compilation "ascii raster" test + succeeeded, then the problem is probably some server-specific + installation requirement. First make sure you installed mimetex.cgi + in the correct cgi-bin/ directory, set the correct chmod + permissions, and typed the correct url into your browser's locator + window. Then contact your system administrator or ISP, + and ask how to install cgi programs on your server. + +After you've successfully installed mimeTeX, and both preceeding tests + have succeeded, you can optionally "regression test" + all mimeTeX features as follows: +
That's all there is to installing mimeTeX. . -(IId) Additional Compile-Line Options+(IIc) Additional Compile-Line OptionsIn addition to -DAA or -DGIF or -DXBITMAP (along with -DWINDOWS when necessary) on the mimetex.c compile line, as discussed above, @@ -1125,9 +1518,9 @@ Ascii dump of bitmap image... algorithm for anti-aliasing, which is applied to the existing set of bitmap fonts. This lowpass filter applies weights to neighboring pixels. The defaults - weights are CENTERWT=32, ADJACENTWT=3 and CORNERWT=1, + weights are CENTERWT=8, ADJACENTWT=2 and CORNERWT=1, which you can adjust to control anti-aliasing. - When caching a new image, mimeTeX also + is the 32-character MD5 hash of your LaTeX expression. + If you're also using mimeTeX's + Vertical-Align: feature, prefix your + path/ with a leading % and write + -DCACHEPATH=\"%path/\" + instead. That leading % won't become part of + your cache directory's path/, but it will signal + mimeTeX to cache headers along with each image. + Otherwise, the Vertical-Align: information is lost, + and attempts to align cached images will fail. + When caching a new image, mimeTeX also updates the file path/mimetex.log containing a timestamp, filename and LaTeX expression for each new file created. A sample entry looks like --------------------------------------------------------------------- -2004-08-07:09:00:53am f8ccc8dd93c8eeb1d9c40b353ef781e0.gif +2008-09-07:11:29:53am f8ccc8dd93c8eeb1d9c40b353ef781e0.gif \LARGE x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} --------------------------------------------------------------------- { "\\iint", NULL, "{\\int\\int}" }, @@ -1219,11 +1633,10 @@ Ascii dump of bitmap image... + + -DPLUSNOTBLANK + If you know how your applications behave, + then define PLUSBLANK to always translate plus signs + + to blank spaces, or define PLUSNOTBLANK to never translate. + Otherwise, if you define neither, + mimeTeX applies some common-sense rules to decide whether or + not to translate. These usually work, but can't be guaranteed. + If your query string contains actual blank spaces or + blanks encoded as %20, then plus signs + + aren't translated. Otherwise, if your query string + contains %2B, then plus signs + are + translated. If neither %20 nor %2B, or both + %20 and %2B, occur in your query string, + then the situation is ambiguous. In this case, if mimeTeX + finds two or more plus signs ++ with no intervening + space, then they're translated; otherwise they're not. -DREFERER=\"domain1,domain2,etc\" - -DNOSQUASH + -DNOSMASH + number of pixels between smashed symbols (default is 3), + compile with -DSMASHMARGIN=n. + See Smash for further discussion. + -DNOWARNINGS (IIe) Command Line Features+(IId) Command Line FeaturesMimeTeX usually runs from a browser, obtaining its input expression from a query_string. But you can also run mimeTeX from your Unix @@ -1314,7 +1754,9 @@ Ascii dump of bitmap image... possibly useful functionality from the command line. In particular, you can store a gif (or xbitmap) image of any expression to a file. No syntax checking is applied to command-line arguments, so enter - them carefully. + them carefully. (Likewise, plus signs + are never + translated to blank spaces, nor is any other %xx url decoding + performed on command-line arguments.)The complete command-line syntax for mimeTeX is @@ -1322,6 +1764,10 @@ Ascii dump of bitmap image... [ -e export_file ] or write gif image to export_file [ expression expression, e.g., "x^2+y^2", | -f input_file ] or read expression from input_file + [ -g1 -d ] dump .pbm-formatted image on stdout + [ -g1 -e export_file ] or write .pbm image to export_file + [ -g2 -d ] dump anti-aliased .pgm image on stdout + [ -g2 -e export_file ] or write .pgm image to export_file [ -m msglevel ] verbosity of debugging output [ -o ] render image with opaque background [ -s fontsize ] default fontsize, 0-5 @@ -1331,24 +1777,42 @@ Ascii dump of bitmap image... ./mimetex -d "x^2+y^2" > expression.gif creates expression.gif containing an image of x^2+y^2 - -e Like -d but writes the actual gif (or xbitmap) directly - to export_file, e.g., + -e export_file Like -d but writes the actual gif + (or xbitmap) directly to export_file, e.g., ./mimetex -e expression.gif "x^2+y^2" - also creates expression.gif containing an image of x^2+y^2 + creates file expression.gif containing an image of x^2+y^2 expression Place LaTeX expression directly on command line, with no -switch preceding it, as in the example - immediately above, or... + immediately above, or..... - -f Read expression from input_file (and automatically - assume -d switch). The input_file may contain the - expression on one line or spread out over many lines. - MimeTeX will concatanate all lines from input_file - to construct one long expression. Blanks, tabs, and - newlines are just ignored. + -f input_file .....read expression from input_file + (and automatically assume -d switch). The input_file + may contain the expression on one line or spread out + over many lines. MimeTeX will concatanate all lines + from input_file to construct one long expression. + Blanks, tabs, and newlines are just ignored. + + -g1 -d dumps a .pbm-formatted portable bitmap image to stdout. + Note that this is the bitmap image _before_ anti-aliasing. + + -g1 -e export_file Like -g1 -d but writes the .pbm-formatted + portable bitmap directly to export_file, e.g., + ./mimetex -g1 -e expression.pbm "x^2+y^2" + creates file expression.pbm containing a bitmap image + of x^2+y^2 before anti-aliasing. + + -g2 -d dumps a .pgm-formatted portable graphic image to stdout. + Note that this is the bytemap image _after_ anti-aliasing. + + -g2 -e export_file Like -g2 -d but writes the .pgm-formatted + portable graphic image directly to export_file, e.g., + ./mimetex -g3 -e expression.pgm "x^2+y^2" + creates file expression.pgm containing a bytemap image + of x^2+y^2 after anti-aliasing. - -m 0-99, controls verbosity level for debugging output - (usually used only while testing code). + -m msglevel 0-99, controls verbosity/message level for + debugging output (usually used only while testing code). -o Rather than the default transparent gif background, the rendered image will contain black symbols on an @@ -1357,11 +1821,13 @@ Ascii dump of bitmap image... display utility, ./mimetex -o -d "x^2+y^2" | display & opens a small window containing the rendered expression. + (Note: if you already compiled mimeTeX with -DOPAQUE + then -o renders images on a transparent background.) - -s 0-5, font size. As usual, the font size can also - be specified within the expression by a directive, - e.g., \large f(x)=x^2 displays f(x)=x^2 at font size 3, - overriding -s. Default font size is 2. + -s fontsize 0-7, font size. Font size can also be specified + within the expression by a directive, e.g., \Large f(x)=x^2 + displays f(x)=x^2 at font size 4, overriding -s. + Default font size is 3.@@ -1372,10 +1838,12 @@ SECTION III. SYNTAX REFERENCE (III) Syntax ReferenceSince mimeTeX's syntax is as TeX-like as possible, we'll mostly discuss - the occasional exceptions (which exist only to simplify my programming - task, not to impose any syntactic aesthetics of mine on you). This - section contains short paragraphs that each discuss some aspect of - mimeTeX where your LaTeX experience might not be precisely relevant. + the occasional differences. + + This section contains short paragraphs that each discuss some aspect + of mimeTeX where your LaTeX experience might not be precisely + duplicated.Anything not discussed here that still doesn't behave like you expect is probably just not implemented. That includes (La)TeX packages @@ -1442,17 +1910,46 @@ SECTION III. SYNTAX REFERENCE As usual, you must explicitly write one of the recognized math spaces to put extra visible space in your rendered expressions. -MimeTeX recognizes math spaces \, \: \; as well as - \/ and \quad and \qquad . You may also - write \hspace{10} to insert a 10-pixel (or any other number) - space, scaled by any preceding \unitlength, - as illustrated just above. There are no negative spaces. +MimeTeX recognizes math spaces \/ \, \: \; + as well as \quad and \qquad , + and also a backslashed blank + + (i.e., a \ followed by a blank). + For example, + (a\/b\,c\:d\;e\ f\quad g\qquad h) +   renders + . + In mimeTeX, you may also write \hspace{10} + to insert a 10-pixel (or any other number) space, scaled by any + preceding \unitlength, as illustrated + just above. + +For negative spaces, \! produces a small (two + pixel) negative space, e.g., a=b renders + + whereas a\!=b renders + + and a\!\!=b renders + . + For large negative space, \hspace{-10} permits + a negative argument. But it stops at the first pixel to its left + rather than "erasing" pixels. If you don't want to stop, use + \hspace*{-10} instead. For example, + ABC\hspace*{-20}-DEF renders + , erasing all of the C + and the right half of the B. +MimeTeX also supports \hfill{textwidth}, where textwidth is roughly equivalent to LaTeX's @@ -1461,18 +1958,18 @@ SECTION III. SYNTAX REFERENCE expression will span. However, if \hfill{ } appears within a { }-enclosed subexpression, then it applies only to that subexpression. For example, - The first/inner \hfill{50} inserts exactly enough whitespace so - that subexpression "abc def" spans 50 pixels. - Then the second/outer \hfill{100} inserts exactly enough - whitespace so that the entire expression spans 100 pixels. + The first/inner \hfill{75} inserts exactly enough whitespace so + that subexpression "abc def" spans 75 pixels. + Then the second/outer \hfill{150} inserts exactly enough + whitespace so that the entire expression spans 150 pixels. Without explicit { }-nesting, mimeTeX evaluates expressions - left-to-right (sinistrally), e.g., ...\hfill{100}...\hfill{50}... - is exactly equivalent to ...\hfill{100}{...\hfill{50}...}. + left-to-right (sinistrally), e.g., ...\hfill{150}...\hfill{75}... + is exactly equivalent to ...\hfill{150}{...\hfill{75}...}. Notice that, this time, the second/right textwidth argument is necessarily smaller than the first/left. @@ -1488,7 +1985,7 @@ SECTION III. SYNTAX REFERENCE y=a+b+c+d\\\hspace{50}+e+f+g+h to produce However, mimeTeX can't correctly handle automatically-sized delimiters
@@ -1496,12 +1993,13 @@ SECTION III. SYNTAX REFERENCE
y=\left\{a+b+c+d\\\hspace{50}+e+f+g+h\right\}
produces
+ src="../cgi-bin/mimetex.cgi?\large y=\big{a+b+c+d\\ + \hspace{50}+e+f+g+h\big}" alt="" border=0 align=middle> + which I produced using \big{...\\...\big} instead of \left\{...\\...\right\}. Expressions of the form \left...\right \\ \left...\right should all be @@ -1559,14 +2057,22 @@ and some other characters.. 500-or-so lines of mimetex.h. And several additional symbols like \ldots and \AA and \hbar are defined by the mimeTeX preprocessor, function mimeprep( ) - in mimetex.c Generally speaking, I've tried - to encode the cmmi10, cmsy10, cmr10, cmex10, rsfs10 and bbold10 - families with "names", e.g., \alpha \beta \forall \sqcup, etc, - identical to your LaTeX expectations. For example, the - calligraphic symbols in cmsy10 are accessed by writing - \mathcal{A} \mathcal{B} \mathcal{XYZ}. Similarly, write - \mathscr{A} for the rsfs10 fonts, and write \mathbb{R} - for bbold10. + in mimetex.c Generally speaking, I've tried to + encode the cmr10, cmmi10, cmmib10, cmsy10, cmex10, bbold10, rsfs10, + stmary10 and wncyr10 families with "names", e.g., \alpha \beta + \forall \sqcup, etc, identical to your LaTeX expectations. + For example, the calligraphic symbols in cmsy10 are accessed by + writing \mathcal{A} \mathcal{B} \mathcal{XYZ}. Similarly, + write \mathbf{A} for the cmmib fonts, write \mathscr{A} + for rsfs10, write \mathbb{R} for bbold10, and write + {\cyr Khrushchev} or \cyr{Khrushchev} to see + . + Most LaTeX distributions supply stmaryrd.dvi and stmaryrd.sty + that both document the names of the stmary10 symbols. + Similarly, amsfndoc.dvi documents the names of the wncyr10 + cyrillic symbols and ligatures. - \sum_{i=1}^ni=\frac{n(n+1)}2 + \normalsize \sum_{i=1}^ni=\frac{n(n+1)}2 produces , whereas- \displaystyle \sum_{i=1}^ni=\frac{n(n+1)}2 produces + \displaystyle \normalsize \sum_{i=1}^ni=\frac{n(n+1)}2 + produces , and As usual, \nolimits turns displaystyle off (or textstyle on) for the operator immediately preceding it. For example, and likewise, \limits turns displaystyle on for the operator immediately preceding it. For example, By the way, \limits affects _any_ character or subexpression immediately preceding it. For example, A\limits^i_j produces .. anything at all in italic (font family cmmi10). All four forms respect spaces between words, except that the first/required space after {\rm etc} and - {\it etc} is still ignored. For example, \text{anything at all} produces and \textit{anything at all} produces instead. You don't usually surround mimeTeX expressions with $'s, + but that works in the usual way for \text{ } and + \mbox{ }, rendering the $...$-enclosed + subexpression in mathmode. For example, (IIIc) Delimiters@@ -1821,7 +2382,10 @@ and some other characters..Parentheses and Braces (delimiters)...-LaTeX's \left( and \right) may be written exactly + LaTeX's \left( ... \right) and the other 21 + standard LaTeX delimiters are also recognized by mimeTeX. + And mimeTeX also recognizes an etex-like \middle. + + Several of the most common automatically sized delimiters + are illustrated below...
Notes...
Besides the \left...\right delimiters discussed above, @@ -1976,22 +2564,22 @@ and some other characters.. and its matching \right. delimiter. The \right delimiter needn't necessarily be the \right. illustrated, e.g., - \left\int_a^b x^2dx =\frac{x^3}3\right|\nolimits_a^b + \left\int_a^b x^2dx =\frac{x^3}3\right|_a^b produces . Except for Opening (TeX class 4) and + \left\int_a^bx^2dx=\frac{x^3}3\right|_a^b" border=0 alt="" + align=middle>. You can also write \left\sum, \left\prod, - \left\cup, etc, for many of the symbols in CMEX10. + \left\cup, etc, for many of the symbols in CMEX10 and STMARY10. And any symbol that works with \left will also work - with \right . But mimeTeX abbreviations like + with \right . Unescaped ( )'s and [ ]'s and | |'s and < >'s don't need to be balanced since mimeTeX just @@ -2017,11 +2605,24 @@ Raise and rotate, Compose, Abb Accents...- \vec{ } \hat{ } \bar{ } \tilde{ } \dot{ } - and \ddot{ } are the only accents currently supported, - and they're all "wide". You can write \widehat{ } if you - like, but there's absolutely no difference either way. - \bar{ } and \overline{ } are identical. + \vec{ } \hat{ } \bar{ } \tilde{ } \dot{ } + \ddot{ } and \acute{ } \grave{ } + \breve{ } \check{ } are the only accents currently + supported. The first four are all "wide". For example, you can write + \widehat{ } if you like, but there's absolutely no + difference either way (and \bar{ } and + \overline{ } are identical). The last four accents + only take a single character argument. + + Other accent-like directives available in mimeTeX are + \underline{ } \cancel{ } \sout{ }, + as well as + \overset{ }{ } \underset{ }{ } + and the more ususal + \overbrace{ }^{ } \underbrace{ }_{ }. + And \not also works on the single character immediately + following it. Some of these directives are discussed in more detail + below. Function names...@@ -2032,7 +2633,7 @@ Raise and rotate, Compose, Abb also behave as expected, e.g.,long Arrows...@@ -2057,7 +2658,7 @@ Raise and rotate, Compose, Abb any white space after the arrow, e.g., f:x\longrightarrow~[0,1] produces . Without any intervening white space, mimeTeX would have "eaten" the [0,1]. @@ -2099,17 +2700,28 @@ Raise and rotate, Compose, Abb displays super/subscripts in the usual way.\raisebox{ }{ } and -\rotatebox{ }{ }...+\rotatebox{ }{ } and \reflectbox[ ]{ } +...The \raisebox{height}{expression} and \rotatebox{angle}{expression} - commands help you fine-tune and manipulate mimeTeX renderings. - The height argument is number of pixels, scaled by - \unitlength, and can be positive - or negative. The angle argument is number of degrees, - and can also be positive (for clockwise) or negative, but must be a - multiple of 90. Finally, the expression can be any - valid LaTeX/mimeTeX expression. For example, mimeTeX's preprocessor + and \reflectbox[axis]{expression} + commands help you fine-tune and manipulate mimeTeX renderings: +
For example, mimeTeX's preprocessor defines the LaTeX ?` symbol, an upside-down question mark, like Using \reflectbox[2]{ } instead of + \rotatebox{180}{ } would result in the slightly + different \compose{ }{ }...@@ -2133,12 +2753,40 @@ Raise and rotate, Compose, Abb alt="" border=0 align=middle>Separately or in some judicious combination, \compose and - \raisebox and \rotatebox should help you construct - special symbols not "natively" available with mimeTeX's limited - set of built-in font families. This can be especially useful - in conjunction with the -DNEWCOMMANDS compile-time + \raisebox and \rotatebox and \reflectbox + should help you construct special symbols not "natively" available + with mimeTeX's limited set of built-in font families. + This can be especially useful in conjunction with the + -DNEWCOMMANDS compile-time option discussed above. +\rule{ }{ }...+ ++ \rule{width}{height} behaves in the usual way, + rendering a black rectangle width pixels wide and + height pixels high, with its base on the established + baseline. For example, The mimeTeX version of \rule has an optional + [lift] argument, so that its full form is + \rule[lift]{width}{height}. + lift moves the rule's baseline by the specified + number of pixels, up if positive or down if negative. + For example, + \frac12xyz\rule[-15]{10}{20}ghi produces + Abbreviations...@@ -2172,101 +2820,101 @@ Raise and rotate, Compose, Abb \Large\color{blue} e^x=\sum_{n=0}^\infty\frac{x^n}{n!}" alt="" border=0 align=middle> - "Squash"...+"Smash"...TeX represents characters by boxes, with no idea how ink will be distributed inside. So an expression like \frac12\int_{a+b+c}^{d+e+f}g(x)dx is typically rendered as - . But mimeTeX knows the character shapes of its fonts, and therefore tries to remove extra whitespace, rendering the same expression as - instead. -Precede any expression with the mimeTeX directive \nosquash - to render it without "squashing". Or compile mimetex.c with the - -DNOSQUASH option if you prefer + Precede any expression with the mimeTeX directive \nosmash + to render it without "smashing". Or compile mimetex.c with the + -DNOSMASH option if you prefer the typical TeX behavior as mimeTeX's default. In this case, - precede any expression with \squash to render it "squashed". + precede any expression with \smash to render it "smashed". And note that explicit space like \hspace{10} - or \; , etc, is never squashed. + or \; , etc, is never smashed. -The scope of \squash and \nosquash is the + The scope of \smash and \nosmash is the { }-enclosed subexpression in which the directive occurs. For example, if you want the g(x) part of the - preceding example squashed, but not the 1/2 part, + preceding example smashed, but not the 1/2 part, then the expression - \nosquash\frac12{\squash\int_{a+b+c}^{d+e+f}g(x)dx} + \nosmash\frac12{\smash\int_{a+b+c}^{d+e+f}g(x)dx} renders as - . -For finer-grained control, note that \squash is shorthand - for the default \squashmargin{+3} (and \nosquash is - shorthand for \squashmargin{0}). \squashmargin's value - is the minimum number of pixels between squashed symbols. The leading - + is optional. If present, the font size (\tiny=0,...,\LARGE=5) + For finer-grained control, note that \smash is shorthand + for the default \smashmargin{+3} (and \nosmash is + shorthand for \smashmargin{0}). \smashmargin's value + is the minimum number of pixels between smashed symbols. The leading + + is optional. If present, the font size (\tiny=0,...,\Huge=7) is added to the specified minimum. Compile mimetex.c with the - -DSQUASHMARGIN=n option to change + -DSMASHMARGIN=n option to change the default from 3 to n. Compare the preceding - example with the over-squashed \squashmargin{1} - \smashmargin{1} Squashing is in "alpha testing" and some expressions still don't look - quite right when squashed, e.g., 1^2,2^2,3^2,\ldots renders as - Smashing is in "beta testing" and some expressions still don't look + quite right when smashed, e.g., 1^2,2^2,3^2,\ldots renders as + . Just compile with -DNOSQUASH + alt="" border=0 align=middle>. Just compile with -DNOSMASH if you come across numerous annoying situations. -\not and \Not and \sout...+\not and \cancel and \sout...The usual LaTeX \not "slashes" the single symbol following it, e.g., i\not\partial\equiv i\not\nabla produces . -For arbitrary expressions, mimeTeX provides \Not + For arbitrary expressions, mimeTeX provides \cancel which draws a line from the upper-right to lower-left corner of its - argument, e.g., a\Not{x^2}=bx^{\not3} produces + argument, e.g., a\cancel{x^2}=bx^{\not3} produces . Finally, similar to the ulem.sty package, \sout draws a horizontal strikeout line through its argument, e.g., \sout{abcdefg} produces . MimeTeX's \sout also takes an optional argument that adjusts the vertical position of its strikeout line by the specified number of pixels, e.g., \sout[+2]{abcdefg} produces and \sout[-2]{abcdefg} produces . @@ -2306,6 +2954,9 @@ Raise and rotate, Compose, Abb \begin{align} |
a&=b \\ c&=d \\ etc |
\end{align} | \begin{cases} |
+ a&b \\ c&d \\ etc |
+ \end{cases} | \begin{gather} |
a \\ b \\ etc |
\end{gather} | The default font size is unchanged by \array{ }, but you can explicitly control it in the usual way, e.g., - {\large\begin{matrix}...\end{matrix}} renders the entire array - in font size 3. In addition, any &...& cell may contain font + {\Large\begin{matrix}...\end{matrix}} renders the entire array + in font size 4. In addition, any &...& cell may contain font size declarations which are always local to that cell, e.g., &\fs{-1}...& renders that one cell one font size smaller than current. @@ -2536,7 +3187,7 @@ Raise and rotate, Compose, Abb (50,35){\circle(50,45;34)} %%lower lip%% }Have a nice day! \stackrel{ }{ } and -\relstack{ }{ }...+\overset{ }{ } or +\stackrel{ }{ } and +\underset{ }{ } or \relstack{ }{ } +...\stackrel{ }{ } behaves as usual in LaTeX, rendering its first argument one font size smaller and centered above its second. And the amsmath-style \overset{ }{ } is identical. For example, "Conversely" to \stackrel{ }{ }, mimeTeX provides @@ -2586,10 +3239,10 @@ Raise and rotate, Compose, Abb first argument one font size smaller and centered below its second. For example, the \log function name doesn't treat limits like \lim_, but you can write, for example, MimeTeX's \limits provides an easier but non-standard @@ -2612,7 +3265,7 @@ Raise and rotate, Compose, Abb the usual \fbox{expression} command, e.g., You can also write \fbox[width]{expression} @@ -2620,6 +3273,58 @@ Raise and rotate, Compose, Abb \fbox[width][height]{expression} to explicitly set both width and height. +\today and \calendar...+ +\today renders + + in the usual LaTeX text mode way. + That's \today's default format#1. MimeTeX has + an optional format argument so that, for example, + \blue\today[2] renders + , + showing both date and time. And + \red\today[3] renders + , + showing time only. + +To accommodate time zones, you may also write, for example, + \small\blue\today[2,+3], which renders + , + adding three hours to format#2. + The arguments may be in either order. The time zone increment + must always be preceded by either + or -, + and must be in the range -23 to +23. + +\calendar renders a calendar for + the current month, as illustrated by the left-hand image below. + For a different month, the optional argument   + \small\blue\calendar[2001,9] renders the right-hand + image, for the requested year and month. Years must be + 1973...2099 and months must be 1...12. +The default calendar emphasizes the current day of the current month, + while any other month emphasizes no day. Day emphasis is controlled + by an optional third argument. \calendar[0,0,1] + emphasizes the first day of the current month, and + \calendar[2001,9,11] emphasizes the eleventh + day of that month. \calendar[0,0,99] + renders the current month with no day emphasized. +\input{ }...@@ -2686,7 +3391,7 @@ Raise and rotate, Compose, Abb Somewhat more detailed log information can be accumulated in the optional logfile. If you provide that filename, mimeTeX writes a line to it of the form - 2004-09-20:12:59:33pm <tag>=99 192.168.1.1 http_referer + 2008-09-07:12:59:33pm <tag>=99 192.168.1.1 http_referer containing a timestamp, the counter tag and its current value, and the user's IP address and http_referer page if they're available. @@ -2739,13 +3444,14 @@ SECTION IV. APPENDICES (supplied with your mimeTeX distribution).The final output from each such sequence of three runs - (metafont > gftype -i > gfuntype) gives mimeTeX the information - it needs to render one particular font family at one particular - size. The file texfonts.h supplied with your mimeTeX - distribution collects the output from 36 such (sequences of) - runs, representing six font families at six sizes each. + (metafont > gftype -i > gfuntype) gives mimeTeX the + bitmap information it needs to render one particular font + family at one particular size. The file texfonts.h + supplied with your mimeTeX distribution collects the output + from 72 such (sequences of) runs, representing nine font + families at eight sizes each. -This collection of information in texfonts.h is + This collection of information in texfonts.h is "wired" into mimeTeX through tables maintained in mimetex.h. To change mimeTeX's fonts, you'll have to first modify (or totally replace) texfonts.h using your own gfuntype output, and then @@ -2762,7 +3468,8 @@ SECTION IV. APPENDICES Running metafont to generate a .gf file from .mf source will usually be your very first step. A typical such run might be -which in this case generates output file cmmi10.131gf (which is mimeTeX's font size 3 for the cmmi family). @@ -2788,39 +3495,54 @@ SECTION IV. APPENDICES Then pull all the output files into one big texfonts.h file (or write a small texfonts.h which just #include's them all). -For your information, the 36 sequences of runs represented + For your information, the 72 sequences of runs represented in the texfonts.h file supplied with your mimeTeX distribution - correspond to the following six inital metafont runs for cmr10 -size=0 (.83gf) mf '\mode=eighthre; input cmr10' + correspond to the following eight inital metafont runs for cmr10 + +size=0 (.83gf) mf '\mode=eighthre; input cmr10' + 1 (.100gf) mf '\mode=preview; mag=magstep(-17.874274); input cmr10' + 2 (.118gf) mf '\mode=preview; mag=magstep(-16.966458); input cmr10' + 3 (.131gf) mf '\mode=preview; mag=magstep(-16.393225); input cmr10' + 4 (.160gf) mf '\mode=preview; mag=magstep(-15.296391); input cmr10' + 5 (.180gf) mf '\mode=preview; mag=magstep(-14.650373); input cmr10' + 6 (.210gf) mf '\mode=preview; mag=magstep(-13.804885); input cmr10' + 7 (.250gf) mf '\mode=preview; mag=magstep(-12.848589); input cmr10' Cut-and-paste as before, compile like
|