File:
[LON-CAPA] /
loncom /
cgi /
mimeTeX /
mimetex.h
Revision
1.1:
download - view:
text,
annotated -
select for diffs
Mon Feb 28 19:08:11 2005 UTC (20 years ago) by
albertel
Branches:
MAIN
CVS tags:
version_2_1_X,
version_2_1_3,
version_2_1_2,
version_2_1_1,
version_2_1_0,
version_2_0_X,
version_2_0_99_1,
version_2_0_2,
version_2_0_1,
version_2_0_0,
version_1_99_3,
version_1_99_2,
version_1_99_1_tmcc,
version_1_99_1,
version_1_99_0_tmcc,
version_1_99_0,
HEAD
- adding tex->image convertor (mimeTeX)
#ifndef _MIMETEX
#define _MIMETEX
/****************************************************************************
*
* Copyright(c) 2002-2003, John Forkosh Associates, Inc. All rights reserved.
* --------------------------------------------------------------------------
* This file is part of mimeTeX, which is free software. You may redistribute
* and/or modify it under the terms of the GNU General Public License,
* version 2 or later, as published by the Free Software Foundation.
* MimeTeX is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY, not even the implied warranty of MERCHANTABILITY.
* See the GNU General Public License for specific details.
* By using mimeTeX, you warrant that you have read, understood and
* agreed to these terms and conditions, and that you are at least 18 years
* of age and possess the legal right and ability to enter into this
* agreement and to use mimeTeX in accordance with it.
* Your mimeTeX distribution should contain a copy of the GNU General
* Public License. If not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA,
* or point your browser to http://www.gnu.org/licenses/gpl.html
* --------------------------------------------------------------------------
*
* Purpose: Structures, macros, symbols,
* and static font data for mimetex (and friends)
*
* Source: mimetex.h
*
* Notes: o #define TEXFONTS before #include "mimetex.h"
* if you need the fonttable[] (of fontfamily's) set up.
* mimetex.c needs this; other modules probably don't
* because they'll call access functions from mimetex.c
* that hide the underlying font data
*
* --------------------------------------------------------------------------
* Revision History:
* 09/18/02 J.Forkosh Installation.
* 12/11/02 J.Forkosh Version 1.00 released.
* 07/06/03 J.Forkosh Version 1.10 begun.
*
***************************************************************************/
/* --------------------------------------------------------------------------
check for compilation by parts (not supported yet)
-------------------------------------------------------------------------- */
/* --- check for (up to) five parts --- */
#if defined(PART1) || defined(PART2) || defined(PART3) \
|| defined(PART4) || defined(PART5)
#define PARTS
#endif
/* --- default STATIC=static, else set up static for parts --- */
#if defined(PARTS)
#if defined(PART1)
#define STATIC /* not static */
#define INITVALS
#else
#define STATIC extern
#endif
#else
#define STATIC static
#define INITVALS
#endif
/* --- declare global symbol --- */
#ifdef INITVALS
#define GLOBAL(type,variable,value) STATIC type variable = (value)
#else
#define GLOBAL(type,variable,value) STATIC type variable
#endif
/* --------------------------------------------------------------------------
macros to get/set/unset a single bit (in rasters), and some bitfield macros
-------------------------------------------------------------------------- */
/* --- single-bit operations on a scalar argument (x) --- */
#define get1bit(x,bit) ( ((x)>>(bit)) & 1 ) /* get the bit-th bit of x */
#define set1bit(x,bit) ( (x) |= (1<<(bit)) ) /* set the bit-th bit of x */
#define unset1bit(x,bit) ( (x) &= ~(1<<(bit)) ) /*unset the bit-th bit of x*/
/* --- single-bit operations on a byte-addressable argument (x) --- */
#define getlongbit(x,bit) get1bit(*((x)+(bit)/8),(bit)%8) /* get bit */
#define setlongbit(x,bit) set1bit(*((x)+(bit)/8),(bit)%8) /* set bit */
#define unsetlongbit(x,bit) unset1bit(*((x)+(bit)/8),(bit)%8) /*unset bit*/
/* --- a few bitfield macros --- */
#define bitmask(nbits) ((1<<(nbits))-1) /* a mask of nbits 1's */
#define getbitfld(x,bit1,nbits) (((x)>>(bit1)) & (bitmask(nbits)))
/* -------------------------------------------------------------------------
Raster structure (bitmap or bytemap, along with its width and height in bits)
-------------------------------------------------------------------------- */
/* --- 8-bit datatype (always unsigned) --- */
#define intbyte unsigned char
/* --- datatype for pixels --- */
/* --- #if !defined(UNSIGNEDCHAR) && !defined(SIGNEDCHAR)
#define SIGNEDCHAR
#endif --- */
#ifndef SIGNEDCHAR
#define pixbyte unsigned char
#else
#define pixbyte char
#endif
/* --- raster structure --- */
#define raster struct raster_struct /* "typedef" for raster_struct*/
raster
{
/* -----------------------------------------------------------------------
dimensions of raster
------------------------------------------------------------------------ */
int width; /* #pixels wide */
int height; /* #pixels high */
int pixsz; /* #bits per pixel, 1 or 8 */
/* -----------------------------------------------------------------------
memory for raster
------------------------------------------------------------------------ */
pixbyte *pixmap; /* memory for width*height bits or bytes */
} ; /* --- end-of-raster_struct --- */
/* ---
* associated raster constants and macros
* -------------------------------------- */
#define maxraster 99999 /* max #pixels for raster pixmap */
/* --- #bytes in pixmap raster needed to contain width x height pixels --- */
#define bitmapsz(width,height) (((width)*(height)+7)/8) /*#bytes if a bitmap*/
#define pixmapsz(rp) (((rp)->pixsz)*bitmapsz((rp)->width,(rp)->height))
/* --- pixel index calculation used by getpixel() and setpixel() below --- */
#define PIXDEX(rp,irow,icol) (((irow)*((rp)->width))+(icol))/*irow,icol indx*/
/* --- get value of pixel, either one bit or one byte, at (irow,icol) --- */
#define getpixel(rp,irow,icol) /*get bit or byte based on pixsz*/ \
((rp)->pixsz==1? getlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))) :\
((rp)->pixsz==8? ((rp)->pixmap)[PIXDEX(rp,(irow),(icol))] : (-1)) )
/* --- set value of pixel, either one bit or one byte, at (irow,icol) --- */
#define setpixel(rp,irow,icol,value) /*set bit or byte based on pixsz*/ \
if ( (rp)->pixsz == 1 ) /*set pixel to 1 or 0 for bitmap*/ \
if ( (value) != 0 ) /* turn bit pixel on */ \
{ setlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))); } \
else /* or turn bit pixel 0ff */ \
{ unsetlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))); } \
else /* set 8-bit bytemap pixel value */ \
if ( (rp)->pixsz == 8 ) /* check pixsz=8 for bytemap */ \
((rp)->pixmap)[PIXDEX(rp,(irow),(icol))]=(pixbyte)(value); \
else /* user supplies final ; */
/* --------------------------------------------------------------------------
some char classes tokenizer needs to recognize, and macros to check for them
-------------------------------------------------------------------------- */
/* --- some character classes --- */
#define WHITEMATH "~ \t\n\r\f\v" /* white chars in display/math mode*/
#define WHITETEXT "\t\n\r\f\v" /* white chars in text mode */
#define WHITEDELIM "~ " /*always ignored following \sequence*/
#define WHITESPACE (istext>0&&istext!=3?WHITETEXT:WHITEMATH) /* white */
#define LEFTBRACES "{([<|-=" /* opening delims are left{([< |,|| */
#define RIGHTBRACES "})]>|-=" /* corresponding closing delims */
#define ESCAPE "\\" /* introduce escape sequence */
#define SUPERSCRIPT "^" /* introduce superscript */
#define SUBSCRIPT "_" /* introduce subscript */
#define SCRIPTS SUPERSCRIPT SUBSCRIPT /* either "script" */
/* --- macros to check for them --- */
#define isthischar(thischar,accept) \
( (thischar)!='\000' && *(accept)!='\000' \
&& strchr(accept,(thischar))!=(char *)NULL )
#define isthisstr(thisstr,accept) \
((*(thisstr))!='\000' && strspn(thisstr,accept)==strlen(thisstr))
#define skipwhite(thisstr) if ( (thisstr) != NULL ) \
while ( isthischar(*(thisstr),WHITESPACE) ) (thisstr)++
#define isnextchar(thisstr,accept) \
({skipwhite(thisstr);},isthischar(*thisstr,accept))
/* -------------------------------------------------------------------------
character definition struct (font info from .gf file describing a char)
-------------------------------------------------------------------------- */
#define chardef struct chardef_struct /* "typedef" for chardef_struct*/
chardef
{
/* -----------------------------------------------------------------------
character description
------------------------------------------------------------------------ */
/* --- character identification as given in .gf font file --- */
int charnum; /*different gf files resuse same num*/
int location; /* location in font */
/* --- upper-left and lower-left corners of char (topcol=botcol?) --- */
int toprow, topleftcol; /* upper-left corner */
int botrow, botleftcol; /* lower-left corner */
/* -----------------------------------------------------------------------
character bitmap raster (image.width is character width, ditto height)
------------------------------------------------------------------------ */
raster image; /* bitmap image of character */
} ; /* --- end-of-chardef_struct --- */
/* -------------------------------------------------------------------------
Font info corresponding to TeX \matchardef, see TeXbook Appendix F (page 431)
-------------------------------------------------------------------------- */
typedef void *((*HANDLER)()); /* ptr to function returning void* */
#define mathchardef struct mathchardef_struct /*typedef for mathchardef*/
mathchardef
{
/* -----------------------------------------------------------------------
symbol name ("a", "\alpha", "1", etc)
------------------------------------------------------------------------ */
char *symbol; /* as it appears in a source file */
/* -----------------------------------------------------------------------
components of \mathchardef hexadecimal code assigned to this symbol
------------------------------------------------------------------------ */
int charnum; /* char# (as given in .gf file) */
int family; /* font family e.g., 2=math symbol */
int class; /* e.g., 3=relation, TexBook pg.154*/
/* ------------------------------------------------------------------------
Extra info: some math "functions" require special processing (e.g., \frac)
------------------------------------------------------------------------ */
/* --- function that performs special processing required by symbol --- */
/* subraster *((*handler)()); -- handler is ultimately recast like this */
HANDLER handler; /* e.g., rastfrac() for \frac's */
} ; /* --- end-of-mathchardef_struct --- */
/* ---
* classes for mathchardef (TeXbook pg.154)
* ---------------------------------------- */
#define ORDINARY (0) /* e.g., / */
#define OPERATOR (1) /* e.g., \sum */
#define BINARYOP (2) /* e.g., + */
#define RELATION (3) /* e.g., = */
#define OPENING (4) /* e.g., ( */
#define CLOSING (5) /* e.g., } */
#define PUNCTION (6) /* e.g., , (punctuation) */
#define VARIABLE (7) /* e.g., x */
#define DISPOPER (8) /* e.g., Bigint (displaymath opers)*/
#define MAXCLASS (8) /* just for index checks */
#define UPPERBIG DISPOPER /*how to interpret Bigxxx operators*/
#define LOWERBIG DISPOPER /*how to interpret bigxxx operators*/
/* --- class aliases --- */
#define ARROW RELATION
/* --- families for mathchardef (TeXbook, top of pg.431) --- */
#define CMR10 (0) /* normal roman */
#define CMMI10 (1) /* math italic */
#define CMMIB10 (2) /* math italic bold */
#define CMSY10 (3) /* math symbol */
#define CMEX10 (4) /* math extension */
#define RSFS10 (5) /* rsfs \scrA ... \scrZ */
#define BBOLD10 (6) /* blackboard bold \mathbb A ... */
#define NOTACHAR (99) /* e.g., \frac */
/* --- dummy argument value for handlers --- */
#define NOVALUE (-989898) /*charnum,family,class used as args*/
/* ---
* additional font attributes (only size is implemented)
* ----------------------------------------------------- */
/* --- font sizes 0-5 = tiny,small,normal,large,Large,LARGE (roughly) --- */
#define LARGESTSIZE (5)
#ifndef NORMALSIZE
#define NORMALSIZE (2)
#endif
#ifndef DISPLAYSIZE
/* --- automatically sets scripts in \displaystyle when fontsize>= --- */
#define DISPLAYSIZE (3) /*(NORMALSIZE+1)*/
#endif
/* ---
aspect ratio is width/height of the displayed image of a pixel
-------------------------------------------------------------- */
#define ASPECTRATIO 1.0 /*(16.0/9.0)*/
#define SQRTWIDTH(sqrtht) ((int)(.5*((double)(sqrtht+1))*ASPECTRATIO + 0.5))
/* ---
* space between adjacent symbols, e.g., symspace[RELATION][VARIABLE]
* ------------------------------------------------------------------ */
STATIC int symspace[10][10]
#ifdef INITVALS
=
{ /* ---------------------------------------------------------------
Right... ORD OPER BIN REL OPEN CLOS PUNC VAR DISP unused
Left... ------------------------------------------------------ */
/*ORDINARY*/ { 2, 3, 3, 5, 3, 2, 2, 2, 3, 0 },
/*OPERATOR*/ { 3, 1, 1, 5, 3, 2, 2, 2, 3, 0 },
/*BINARYOP*/ { 2, 1, 1, 5, 3, 2, 2, 2, 3, 0 },
/*RELATION*/ { 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 },
/*OPENING*/ { 2, 2, 2, 5, 2, 4, 2, 2, 3, 0 },
/*CLOSING*/ { 2, 3, 3, 5, 4, 2, 1, 2, 3, 0 },
/*PUNCTION*/ { 2, 2, 2, 5, 2, 2, 1, 2, 2, 0 },
/*VARIABLE*/ { 2, 2, 2, 5, 2, 2, 1, 2, 2, 0 },
/*DISPOPER*/ { 2, 3, 3, 5, 2, 3, 2, 2, 2, 0 },
/*unused*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
}
#endif
; /* --- end-of-symspace[][] --- */
/* -------------------------------------------------------------------------
subraster (bitmap image, its attributes, overlaid position in raster, etc)
-------------------------------------------------------------------------- */
#define subraster struct subraster_struct /* "typedef" for subraster_struct*/
subraster
{
/* --- subraster type --- */
int type; /* charcter or image raster */
/* --- character info (if subraster represents a character) --- */
mathchardef *symdef; /* mathchardef identifying image */
int baseline; /*0 if image is entirely descending*/
int size; /* font size 0-4 */
/* --- upper-left corner for bitmap (as overlaid on a larger raster) --- */
int toprow, leftcol; /* upper-left corner of subraster */
/* --- pointer to raster bitmap image of subraster --- */
raster *image; /*ptr to bitmap image of subraster*/
} ; /* --- end-of-subraster_struct --- */
/* --- subraster types --- */
#define CHARASTER (1) /* character */
#define STRINGRASTER (2) /* string of characters */
#define IMAGERASTER (3) /* image */
#define ASCIISTRING (4) /* ascii string (not a raster) */
/* ---
* issue rasterize() call end extract embedded raster from returned subraster
* -------------------------------------------------------------------------- */
subraster *rasterize(); /* declare rasterize */
#define make_raster(expression,size) ((rasterize(expression,size))->image)
/* -------------------------------------------------------------------------
font family
-------------------------------------------------------------------------- */
#define fontfamily struct fontfamily_struct /* typedef for fontfamily */
fontfamily
{
/* -----------------------------------------------------------------------
several sizes, fontdef[0...4] = footnote, small, normal, large, Large
------------------------------------------------------------------------ */
int family; /* font family e.g., 2=math symbol */
chardef *fontdef[LARGESTSIZE+2]; /*small=(fontdef[1])[charnum].image*/
} ; /* --- end-of-fontfamily_struct --- */
/* --- dummy font table (for contexts requiring const) --- */
#define dummyfonttable \
{ \
{ -999,{ NULL, NULL, NULL, NULL, NULL, NULL}} \
}
/* -------------------------------------------------------------------------
S t a t i c F o n t D a t a u s e d b y M i m e t e x
-------------------------------------------------------------------------- */
#ifdef TEXFONTS
/* ---
* font info generated for us by gfuntype
* -------------------------------------- */
#ifdef INITVALS
#include "texfonts.h"
#endif
/* ---
* font families (by size), just a table of preceding font info
* ------------------------------------------------------------ */
/* --- for low-pass anti-aliasing --- */
STATIC fontfamily aafonttable[]
#ifdef INITVALS
=
{/* ------------------------------------------------------------------------
family size=0, 1, 2, 3, 4, 5
------------------------------------------------------------------------ */
{ CMR10,{ cmr83, cmr100, cmr118, cmr131, cmr160, cmr180}},
{ CMMI10,{ cmmi83, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
{ CMSY10,{ cmsy83, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
{ CMEX10,{ cmex83, cmex100, cmex118, cmex131, cmex160, cmex180}},
{ RSFS10,{ rsfs83, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
{BBOLD10,{bbold83,bbold100,bbold118,bbold131,bbold160,bbold180}},
{ -999,{ NULL, NULL, NULL, NULL, NULL, NULL}}
}
#endif
; /* --- end-of-aafonttable[] --- */
/* --- for super-sampling anti-aliasing --- */
#ifdef SSFONTS
STATIC fontfamily ssfonttable[]
#ifdef INITVALS
=
{/* -----------------------------------------------------------------------
family size=0, 1, 2, 3, 4, 5
----------------------------------------------------------------------- */
{ CMR10,{ cmr180, cmr1200, cmr1200, cmr1200, cmr1200, cmr1200}},
{ CMMI10,{cmmi180, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
{ CMSY10,{cmsy180, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
{ CMEX10,{cmex180, cmex100, cmex118, cmex131, cmex160, cmex180}},
{ RSFS10,{rsfs180, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
{BBOLD10,{bbold180,bbold100,bbold118,bbold131,bbold160,bbold180}},
{ -999,{ NULL, NULL, NULL, NULL, NULL, NULL}}
}
#endif
; /* --- end-of-ssfonttable[] --- */
#else
/*GLOBAL(fontfamily,ssfonttable[],dummyfonttable);*/
STATIC fontfamily ssfonttable[]
#ifdef INITVALS
= dummyfonttable
#endif
;
#endif /* #ifdef SSFONTS */
#else
/*GLOBAL(fontfamily,aafonttable[],dummyfonttable);*/
/*GLOBAL(fontfamily,ssfonttable[],dummyfonttable);*/
STATIC fontfamily
aafonttable[]
#ifdef INITVALS
= dummyfonttable
#endif
,
ssfonttable[]
#ifdef INITVALS
= dummyfonttable
#endif
;
#endif /* #ifdef TEXFONTS */
/* --- select current font table (for lowpass or supersampling) --- */
#ifndef ISSUPERSAMPLING
#define ISSUPERSAMPLING 0
#endif
GLOBAL(fontfamily,*fonttable,(ISSUPERSAMPLING?ssfonttable:aafonttable));
/* --- supersampling shrink factors corresponding to displayed sizes --- */
STATIC int shrinkfactors[] /*supersampling shrinkfactor by size*/
#ifdef INITVALS
=
{ 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
/*{ 15,13,11, 9, 7, 5, 3, 1 }*/
#endif
;
/* ---
* handler functions for math operations
* ------------------------------------- */
subraster *rastflags(); /* set flags, e.g., for \rm */
subraster *rastfrac(); /* handle \frac \atop expressions */
subraster *rastackrel(); /* handle \stackrel expressions */
subraster *rastmathfunc(); /* handle \lim,\log,etc expressions*/
subraster *rastoverlay(); /* handle \not */
subraster *rastspace(); /* handle math space, \hspace,\hfill*/
subraster *rastnewline(); /* handle \\ newline */
subraster *rastarrow(); /* handle \longrightarrow, etc */
subraster *rastuparrow(); /* handle \longuparrow, etc */
subraster *rastsqrt(); /* handle \sqrt */
subraster *rastaccent(); /* handle \hat \vec \braces, etc */
subraster *rastfont(); /* handle \cal{} \scr{}, etc */
subraster *rastbegin(); /* handle \begin{}...\end{} */
subraster *rastleft(); /* handle \left{}...\right{} */
subraster *rastarray(); /* handle \array{...} */
subraster *rastpicture(); /* handle \picture(,){...} */
subraster *rastline(); /* handle \line(xinc,yinc){xlen} */
subraster *rastcircle(); /* handle \circle(xdiam[,ydiam]) */
subraster *rastbezier(); /*handle\bezier(c0,r0)(c1,r1)(ct,rt)*/
subraster *rastraise(); /* handle \raisebox{lift}{expr} */
subraster *rastrotate(); /* handle \rotatebox{degs}{expr} */
subraster *rastfbox(); /* handle \fbox{expr} */
subraster *rastinput(); /* handle \input{filename} */
subraster *rastcounter(); /* handle \counter{filename} */
subraster *rastnoop(); /* handle \escape's to be flushed */
/* --- sqrt --- */
#define SQRTACCENT (1) /* \sqrt */
/* --- accents --- */
#define BARACCENT (11) /* \bar \overline*/
#define UNDERBARACCENT (12) /* \underline */
#define HATACCENT (13) /* \hat */
#define DOTACCENT (14) /* \dot */
#define DDOTACCENT (15) /* \ddot */
#define VECACCENT (16) /* \vec */
#define TILDEACCENT (17) /* \tilde */
#define OVERBRACE (18) /* \overbrace */
#define UNDERBRACE (19) /* \underbrace */
/* --- flags/modes --- */
#define ISTEXT (1) /* set istext */
#define ISDISPLAYSTYLE (2) /* set isdisplaystyle */
#define ISDISPLAYSIZE (21) /* set displaysize */
#define ISFONTSIZE (3) /* set fontsize */
#define ISWEIGHT (4) /* set aa params */
#define ISOPAQUE (5) /* set background opaque */
#define ISSUPER (6) /* set supersampling/lowpass */
#define ISAAALGORITHM (61) /* set anti-aliasing algorithm */
#define ISCENTERWT (62) /* set anti-aliasing center weight */
#define ISADJACENTWT (63) /* set anti-aliasing adjacent weight*/
#define ISCORNERWT (64) /* set anti-aliasing adjacent weight*/
#define PNMPARAMS (65) /* set fgalias,fgonly,bgalias,bgonly*/
#define ISSHRINK (7) /* set supersampling shrinkfactor */
#define UNITLENGTH (8) /* set unitlength */
#define ISCOLOR (9) /* set color */
#define ISREVERSE (10) /* set reverse video colors */
#define ISSTRING (11) /* set ascii string mode */
#define ISSQUASH (12) /* set (minimum) "squash" margin */
/* ---
* mathchardefs for symbols recognized by mimetex
* ---------------------------------------------- */
STATIC mathchardef symtable[]
#ifdef INITVALS
=
{
/* ---------- c o m m a n d h a n d l e r s --------------
symbol arg1 arg2 arg3 function
-------------------------------------------------------- */
/* --- commands --- */
{ "\\left", NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastleft) },
{ "\\frac", 1, NOVALUE,NOVALUE, (HANDLER)(rastfrac) },
{ "\\over", 1, NOVALUE,NOVALUE, (HANDLER)(rastfrac) },
{ "\\atop", 0, NOVALUE,NOVALUE, (HANDLER)(rastfrac) },
{ "\\choose", 0, NOVALUE,NOVALUE, (HANDLER)(rastfrac) },
{ "\\not", 1, 0,NOVALUE, (HANDLER)(rastoverlay) },
{ "\\Not", 2, 0,NOVALUE, (HANDLER)(rastoverlay) },
{ "\\widenot",2, 0,NOVALUE, (HANDLER)(rastoverlay) },
{ "\\sout", 3, NOVALUE,NOVALUE, (HANDLER)(rastoverlay) },
{ "\\strikeout",3, NOVALUE,NOVALUE, (HANDLER)(rastoverlay) },
{ "\\compose",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastoverlay) },
{ "\\stackrel", 2, NOVALUE,NOVALUE, (HANDLER)(rastackrel) },
{ "\\relstack", 1, NOVALUE,NOVALUE, (HANDLER)(rastackrel) },
{ "\\sqrt", NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastsqrt) },
{ "\\overbrace", OVERBRACE,1, 1, (HANDLER)(rastaccent) },
{ "\\underbrace",UNDERBRACE,0, 1, (HANDLER)(rastaccent) },
{ "\\overline", BARACCENT,1, 0, (HANDLER)(rastaccent) },
{ "\\underline",UNDERBARACCENT,0, 0, (HANDLER)(rastaccent) },
{ "\\begin",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastbegin) },
{ "\\array",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastarray) },
{ "\\matrix",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastarray) },
{ "\\tabular",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastarray) },
{ "\\picture",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastpicture) },
{ "\\line", NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastline) },
{ "\\circle", NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcircle) },
{ "\\bezier", NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastbezier) },
{ "\\qbezier",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastbezier) },
{ "\\raisebox",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastraise) },
{ "\\rotatebox",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastrotate) },
{ "\\fbox", NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastfbox) },
{ "\\input",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastinput) },
{ "\\counter",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcounter) },
/* --- spaces --- */
{ "\\/", 1, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\,", 2, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\:", 4, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\;", 6, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\\n", 3, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\\r", 3, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\\t", 3, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
/*{ "\\~",5,NOVALUE,NOVALUE,(HANDLER)(rastspace) },*/
{ "~", 5, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\ ", 5, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ " ", 5, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\quad", 6, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\qquad",10, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\hspace",0, NOVALUE,NOVALUE, (HANDLER)(rastspace) },
{ "\\vspace",0, NOVALUE, 1, (HANDLER)(rastspace) },
{ "\\hfill",0, 1,NOVALUE, (HANDLER)(rastspace) },
/* --- newline --- */
{ "\\\\", NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastnewline) },
/* --- arrows --- */
{ "\\longrightarrow", 1,0,NOVALUE, (HANDLER)(rastarrow) },
{ "\\Longrightarrow", 1,1,NOVALUE, (HANDLER)(rastarrow) },
{ "\\longleftarrow", -1,0,NOVALUE, (HANDLER)(rastarrow) },
{ "\\Longleftarrow", -1,1,NOVALUE, (HANDLER)(rastarrow) },
{ "\\longleftrightarrow",0,0,NOVALUE, (HANDLER)(rastarrow) },
{ "\\Longleftrightarrow",0,1,NOVALUE, (HANDLER)(rastarrow) },
{ "\\longuparrow", 1,0,NOVALUE, (HANDLER)(rastuparrow) },
{ "\\Longuparrow", 1,1,NOVALUE, (HANDLER)(rastuparrow) },
{ "\\longdownarrow", -1,0,NOVALUE, (HANDLER)(rastuparrow) },
{ "\\Longdownarrow", -1,1,NOVALUE, (HANDLER)(rastuparrow) },
{ "\\longupdownarrow", 0,0,NOVALUE, (HANDLER)(rastuparrow) },
{ "\\Longupdownarrow", 0,1,NOVALUE, (HANDLER)(rastuparrow) },
/* --- modes and values --- */
{ "\\cal", 1, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathcal", 1, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\scr", 2, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathscr", 2, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathfrak", 2, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathbb", 5, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\rm", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\text", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\textrm", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathrm", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathbf", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathtt", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathsf", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mbox", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\operatorname", 3, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\it", 4, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\textit", 4, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\mathit", 4, NOVALUE,NOVALUE, (HANDLER)(rastfont) },
{ "\\rm", ISTEXT, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\it", ISTEXT, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\sl", ISTEXT, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\bb", ISTEXT, 3,NOVALUE, (HANDLER)(rastflags) },
{ "\\bf", ISTEXT, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\text", ISTEXT, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\norm", ISTEXT, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\ascii", ISSTRING, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\image", ISSTRING, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\limits", ISDISPLAYSTYLE, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\nolimits", ISDISPLAYSTYLE, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\displaystyle",ISDISPLAYSTYLE, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\textstyle", ISDISPLAYSTYLE, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\displaysize",ISDISPLAYSIZE,NOVALUE,NOVALUE,(HANDLER)(rastflags)},
{ "\\tiny", ISFONTSIZE, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\scriptsize",ISFONTSIZE, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\footnotesize",ISFONTSIZE, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\small", ISFONTSIZE, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\normalsize",ISFONTSIZE, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\large", ISFONTSIZE, 3,NOVALUE, (HANDLER)(rastflags) },
{ "\\Large", ISFONTSIZE, 4,NOVALUE, (HANDLER)(rastflags) },
{ "\\LARGE", ISFONTSIZE, 5,NOVALUE, (HANDLER)(rastflags) },
{ "\\huge", ISFONTSIZE, 5,NOVALUE, (HANDLER)(rastflags) },
{ "\\Huge", ISFONTSIZE, 5,NOVALUE, (HANDLER)(rastflags) },
{ "\\HUGE", ISFONTSIZE, 5,NOVALUE, (HANDLER)(rastflags) },
{ "\\fontsize", ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\fs", ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\shrinkfactor",ISSHRINK, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\sf", ISSHRINK, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\light", ISWEIGHT, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\regular", ISWEIGHT, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\semibold", ISWEIGHT, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\bold", ISWEIGHT, 3,NOVALUE, (HANDLER)(rastflags) },
{ "\\fontweight",ISWEIGHT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\fw", ISWEIGHT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\centerwt", ISCENTERWT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\adjacentwt",ISADJACENTWT,NOVALUE,NOVALUE,(HANDLER)(rastflags) },
{ "\\cornerwt", ISCORNERWT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\ssampling", ISSUPER, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\lowpass", ISSUPER, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\aaalg",ISAAALGORITHM, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\pnmparams",PNMPARAMS, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\opaque", ISOPAQUE, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\squash", ISSQUASH, 3,1, (HANDLER)(rastflags) },
{ "\\nosquash", ISSQUASH, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\squashmargin",ISSQUASH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\unitlength",UNITLENGTH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\reverse", ISREVERSE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\reversefg", ISREVERSE, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\reversebg", ISREVERSE, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\color", ISCOLOR, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
{ "\\red", ISCOLOR, 1,NOVALUE, (HANDLER)(rastflags) },
{ "\\green", ISCOLOR, 2,NOVALUE, (HANDLER)(rastflags) },
{ "\\blue", ISCOLOR, 3,NOVALUE, (HANDLER)(rastflags) },
{ "\\black", ISCOLOR, 0,NOVALUE, (HANDLER)(rastflags) },
{ "\\white", ISCOLOR, 7,NOVALUE, (HANDLER)(rastflags) },
/* --- accents --- */
{ "\\vec", VECACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\widevec", VECACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\bar", BARACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\widebar", BARACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\hat", HATACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\widehat", HATACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\tilde", TILDEACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\widetilde",TILDEACCENT,1, 0, (HANDLER)(rastaccent) },
{ "\\dot", DOTACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\widedot", DOTACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\ddot", DDOTACCENT, 1, 0, (HANDLER)(rastaccent) },
{ "\\wideddot",DDOTACCENT,1, 0, (HANDLER)(rastaccent) },
/* --- math functions --- */
{ "\\arccos", 1, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\arcsin", 2, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\arctan", 3, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\arg", 4, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\cos", 5, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\cosh", 6, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\cot", 7, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\coth", 8, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\csc", 9, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\deg", 10, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\det", 11, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\dim", 12, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\exp", 13, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\gcd", 14, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\hom", 15, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\inf", 16, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\ker", 17, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\lg", 18, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\lim", 19, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\liminf", 20, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\limsup", 21, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\ln", 22, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\log", 23, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\max", 24, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\min", 25, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\Pr", 26, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\sec", 27, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\sin", 28, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\sinh", 29, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\sup", 30, 1, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\tan", 31, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\tanh", 32, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\tr", 33, 0, NOVALUE, (HANDLER)(rastmathfunc) },
{ "\\pmod", 34, 0, NOVALUE, (HANDLER)(rastmathfunc) },
/* --- flush -- recognized but not yet handled by mimeTeX --- */
{ "\\nooperation",0,NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
{ "\\bigskip", 0, NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
{ "\\phantom", 1, NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
{ "\\nocaching", 0, NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
{ "\\nonumber", 0, NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
{ "\\!", 0, NOVALUE,NOVALUE, (HANDLER)(rastnoop) },
/* --------------------- C M M I --------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- uppercase greek letters --- */
{ "\\Gamma", 0, CMMI10, VARIABLE, NULL },
{ "\\Delta", 1, CMMI10, VARIABLE, NULL },
{ "\\Theta", 2, CMMI10, VARIABLE, NULL },
{ "\\Lambda", 3, CMMI10, VARIABLE, NULL },
{ "\\Xi", 4, CMMI10, VARIABLE, NULL },
{ "\\Pi", 5, CMMI10, VARIABLE, NULL },
{ "\\Sigma", 6, CMMI10, VARIABLE, NULL },
{ "\\smallsum", 6, CMMI10, OPERATOR, NULL },
{ "\\Upsilon", 7, CMMI10, VARIABLE, NULL },
{ "\\Phi", 8, CMMI10, VARIABLE, NULL },
{ "\\Psi", 9, CMMI10, VARIABLE, NULL },
{ "\\Omega", 10, CMMI10, VARIABLE, NULL },
/* --- lowercase greek letters --- */
{ "\\alpha", 11, CMMI10, VARIABLE, NULL },
{ "\\beta", 12, CMMI10, VARIABLE, NULL },
{ "\\gamma", 13, CMMI10, VARIABLE, NULL },
{ "\\delta", 14, CMMI10, VARIABLE, NULL },
{ "\\epsilon", 15, CMMI10, VARIABLE, NULL },
{ "\\zeta", 16, CMMI10, VARIABLE, NULL },
{ "\\eta", 17, CMMI10, VARIABLE, NULL },
{ "\\theta", 18, CMMI10, VARIABLE, NULL },
{ "\\iota", 19, CMMI10, VARIABLE, NULL },
{ "\\kappa", 20, CMMI10, VARIABLE, NULL },
{ "\\lambda", 21, CMMI10, VARIABLE, NULL },
{ "\\mu", 22, CMMI10, VARIABLE, NULL },
{ "\\nu", 23, CMMI10, VARIABLE, NULL },
{ "\\xi", 24, CMMI10, VARIABLE, NULL },
{ "\\pi", 25, CMMI10, VARIABLE, NULL },
{ "\\rho", 26, CMMI10, VARIABLE, NULL },
{ "\\sigma", 27, CMMI10, VARIABLE, NULL },
{ "\\tau", 28, CMMI10, VARIABLE, NULL },
{ "\\upsilon", 29, CMMI10, VARIABLE, NULL },
{ "\\phi", 30, CMMI10, VARIABLE, NULL },
{ "\\chi", 31, CMMI10, VARIABLE, NULL },
{ "\\psi", 32, CMMI10, VARIABLE, NULL },
{ "\\omega", 33, CMMI10, VARIABLE, NULL },
{ "\\varepsilon", 34, CMMI10, VARIABLE, NULL },
{ "\\vartheta", 35, CMMI10, VARIABLE, NULL },
{ "\\varpi", 36, CMMI10, VARIABLE, NULL },
{ "\\varrho", 37, CMMI10, VARIABLE, NULL },
{ "\\varsigma", 38, CMMI10, VARIABLE, NULL },
{ "\\varphi", 39, CMMI10, VARIABLE, NULL },
/* --- arrow relations --- */
{ "\\leftharpoonup", 40, CMMI10, ARROW, NULL },
{ "\\leftharpoondown", 41, CMMI10, ARROW, NULL },
{ "\\rightharpoonup", 42, CMMI10, ARROW, NULL },
{ "\\rightharpoondown", 43, CMMI10, ARROW, NULL },
/* --- punctuation --- */
{ "`", 44, CMMI10, PUNCTION, NULL },
{ "\'", 45, CMMI10, PUNCTION, NULL },
/* --- triangle binary relations --- */
{ "\\triangleright", 46, CMMI10, RELATION, NULL },
{ "\\triangleleft", 47, CMMI10, RELATION, NULL },
/* --- digits 0-9 --- */
{ "\\0", 48, CMMI10, ORDINARY, NULL },
{ "\\1", 49, CMMI10, ORDINARY, NULL },
{ "\\2", 50, CMMI10, ORDINARY, NULL },
{ "\\3", 51, CMMI10, ORDINARY, NULL },
{ "\\4", 52, CMMI10, ORDINARY, NULL },
{ "\\5", 53, CMMI10, ORDINARY, NULL },
{ "\\6", 54, CMMI10, ORDINARY, NULL },
{ "\\7", 55, CMMI10, ORDINARY, NULL },
{ "\\8", 56, CMMI10, ORDINARY, NULL },
{ "\\9", 57, CMMI10, ORDINARY, NULL },
/* --- punctuation --- */
{ ".", 58, CMMI10, PUNCTION, NULL },
{ ",", 59, CMMI10, PUNCTION, NULL },
/* --- operations (some ordinary) --- */
{ "<", 60, CMMI10, OPENING, NULL },
{ "\\<", 60, CMMI10, OPENING, NULL },
{ "\\lt", 60, CMMI10, OPENING, NULL },
{ "/", 61, CMMI10, BINARYOP, NULL },
{ ">", 62, CMMI10, CLOSING, NULL },
{ "\\>", 62, CMMI10, CLOSING, NULL },
{ "\\gt", 62, CMMI10, CLOSING, NULL },
{ "\\star", 63, CMMI10, BINARYOP, NULL },
{ "\\partial", 64, CMMI10, VARIABLE, NULL },
/* --- uppercase letters --- */
{ "A", 65, CMMI10, VARIABLE, NULL },
{ "B", 66, CMMI10, VARIABLE, NULL },
{ "C", 67, CMMI10, VARIABLE, NULL },
{ "D", 68, CMMI10, VARIABLE, NULL },
{ "E", 69, CMMI10, VARIABLE, NULL },
{ "F", 70, CMMI10, VARIABLE, NULL },
{ "G", 71, CMMI10, VARIABLE, NULL },
{ "H", 72, CMMI10, VARIABLE, NULL },
{ "I", 73, CMMI10, VARIABLE, NULL },
{ "J", 74, CMMI10, VARIABLE, NULL },
{ "K", 75, CMMI10, VARIABLE, NULL },
{ "L", 76, CMMI10, VARIABLE, NULL },
{ "M", 77, CMMI10, VARIABLE, NULL },
{ "N", 78, CMMI10, VARIABLE, NULL },
{ "O", 79, CMMI10, VARIABLE, NULL },
{ "P", 80, CMMI10, VARIABLE, NULL },
{ "Q", 81, CMMI10, VARIABLE, NULL },
{ "R", 82, CMMI10, VARIABLE, NULL },
{ "S", 83, CMMI10, VARIABLE, NULL },
{ "T", 84, CMMI10, VARIABLE, NULL },
{ "U", 85, CMMI10, VARIABLE, NULL },
{ "V", 86, CMMI10, VARIABLE, NULL },
{ "W", 87, CMMI10, VARIABLE, NULL },
{ "X", 88, CMMI10, VARIABLE, NULL },
{ "Y", 89, CMMI10, VARIABLE, NULL },
{ "Z", 90, CMMI10, VARIABLE, NULL },
/* --- miscellaneous symbols and relations --- */
{ "\\flat", 91, CMMI10, ORDINARY, NULL },
{ "\\natural", 92, CMMI10, ORDINARY, NULL },
{ "\\sharp", 93, CMMI10, ORDINARY, NULL },
{ "\\smile", 94, CMMI10, RELATION, NULL },
{ "\\frown", 95, CMMI10, RELATION, NULL },
{ "\\ell", 96, CMMI10, ORDINARY, NULL },
/* --- lowercase letters --- */
{ "a", 97, CMMI10, VARIABLE, NULL },
{ "b", 98, CMMI10, VARIABLE, NULL },
{ "c", 99, CMMI10, VARIABLE, NULL },
{ "d", 100, CMMI10, VARIABLE, NULL },
{ "e", 101, CMMI10, VARIABLE, NULL },
{ "f", 102, CMMI10, VARIABLE, NULL },
{ "g", 103, CMMI10, VARIABLE, NULL },
{ "h", 104, CMMI10, VARIABLE, NULL },
{ "i", 105, CMMI10, VARIABLE, NULL },
{ "j", 106, CMMI10, VARIABLE, NULL },
{ "k", 107, CMMI10, VARIABLE, NULL },
{ "l", 108, CMMI10, VARIABLE, NULL },
{ "m", 109, CMMI10, VARIABLE, NULL },
{ "n", 110, CMMI10, VARIABLE, NULL },
{ "o", 111, CMMI10, VARIABLE, NULL },
{ "p", 112, CMMI10, VARIABLE, NULL },
{ "q", 113, CMMI10, VARIABLE, NULL },
{ "r", 114, CMMI10, VARIABLE, NULL },
{ "s", 115, CMMI10, VARIABLE, NULL },
{ "t", 116, CMMI10, VARIABLE, NULL },
{ "u", 117, CMMI10, VARIABLE, NULL },
{ "v", 118, CMMI10, VARIABLE, NULL },
{ "w", 119, CMMI10, VARIABLE, NULL },
{ "x", 120, CMMI10, VARIABLE, NULL },
{ "y", 121, CMMI10, VARIABLE, NULL },
{ "z", 122, CMMI10, VARIABLE, NULL },
/* --- miscellaneous symbols and relations --- */
{ "\\imath", 123, CMMI10, ORDINARY, NULL },
{ "\\jmath", 124, CMMI10, ORDINARY, NULL },
{ "\\wp", 125, CMMI10, ORDINARY, NULL },
{ "\\vec", 126, CMMI10, ORDINARY, NULL },
/* --------------------------------------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- operations --- */
{ "-", 0, CMSY10, BINARYOP, NULL },
{ "\\cdot", 1, CMSY10, BINARYOP, NULL },
{ "\\times", 2, CMSY10, BINARYOP, NULL },
{ "\\ast", 3, CMSY10, BINARYOP, NULL },
{ "\\div", 4, CMSY10, BINARYOP, NULL },
{ "\\diamond", 5, CMSY10, BINARYOP, NULL },
{ "\\pm", 6, CMSY10, BINARYOP, NULL },
{ "\\mp", 7, CMSY10, BINARYOP, NULL },
{ "\\oplus", 8, CMSY10, BINARYOP, NULL },
{ "\\ominus", 9, CMSY10, BINARYOP, NULL },
{ "\\otimes", 10, CMSY10, BINARYOP, NULL },
{ "\\oslash", 11, CMSY10, BINARYOP, NULL },
{ "\\odot", 12, CMSY10, BINARYOP, NULL },
{ "\\bigcirc", 13, CMSY10, BINARYOP, NULL },
{ "\\circ", 14, CMSY10, BINARYOP, NULL },
{ "\\bullet", 15, CMSY10, BINARYOP, NULL },
/* --- relations --- */
{ "\\asymp", 16, CMSY10, RELATION, NULL },
{ "\\equiv", 17, CMSY10, RELATION, NULL },
{ "\\subseteq", 18, CMSY10, RELATION, NULL },
{ "\\supseteq", 19, CMSY10, RELATION, NULL },
{ "\\leq", 20, CMSY10, RELATION, NULL },
{ "\\geq", 21, CMSY10, RELATION, NULL },
{ "\\preceq", 22, CMSY10, RELATION, NULL },
{ "\\succeq", 23, CMSY10, RELATION, NULL },
{ "\\sim", 24, CMSY10, RELATION, NULL },
{ "\\approx", 25, CMSY10, RELATION, NULL },
{ "\\subset", 26, CMSY10, RELATION, NULL },
{ "\\supset", 27, CMSY10, RELATION, NULL },
{ "\\ll", 28, CMSY10, RELATION, NULL },
{ "\\gg", 29, CMSY10, RELATION, NULL },
{ "\\prec", 30, CMSY10, RELATION, NULL },
{ "\\succ", 31, CMSY10, RELATION, NULL },
/* --- (mostly) arrows --- */
{ "\\leftarrow", 32, CMSY10, ARROW, NULL },
{ "\\rightarrow", 33, CMSY10, ARROW, NULL },
{ "\\to", 33, CMSY10, ARROW, NULL },
{ "\\mapsto", 33, CMSY10, ARROW, NULL },
{ "\\uparrow", 34, CMSY10, ARROW, NULL },
{ "\\downarrow", 35, CMSY10, ARROW, NULL },
{ "\\leftrightarrow", 36, CMSY10, ARROW, NULL },
{ "\\nearrow", 37, CMSY10, ARROW, NULL },
{ "\\searrow", 38, CMSY10, ARROW, NULL },
{ "\\simeq", 39, CMSY10, RELATION, NULL },
{ "\\Leftarrow", 40, CMSY10, ARROW, NULL },
{ "\\Rightarrow", 41, CMSY10, ARROW, NULL },
{ "\\Uparrow", 42, CMSY10, ARROW, NULL },
{ "\\Downarrow", 43, CMSY10, ARROW, NULL },
{ "\\Leftrightarrow", 44, CMSY10, ARROW, NULL },
{ "\\nwarrow", 45, CMSY10, ARROW, NULL },
{ "\\swarrow", 46, CMSY10, ARROW, NULL },
{ "\\propto", 47, CMSY10, RELATION, NULL },
/* --- symbols --- */
{ "\\prime", 48, CMSY10, ORDINARY, NULL },
{ "\\infty", 49, CMSY10, ORDINARY, NULL },
/* --- relations --- */
{ "\\in", 50, CMSY10, RELATION, NULL },
{ "\\ni", 51, CMSY10, RELATION, NULL },
/* --- symbols --- */
{ "\\triangle", 52, CMSY10, ORDINARY, NULL },
{ "\\bigtriangleup", 52, CMSY10, ORDINARY, NULL },
{ "\\bigtriangledown", 53, CMSY10, ORDINARY, NULL },
{ "/", 54, CMSY10, BINARYOP, NULL },
{ "\\'", 55, CMSY10, ORDINARY, NULL },
{ "\\forall", 56, CMSY10, OPERATOR, NULL },
{ "\\exists", 57, CMSY10, OPERATOR, NULL },
{ "\\neg", 58, CMSY10, OPERATOR, NULL },
{ "\\emptyset", 59, CMSY10, ORDINARY, NULL },
{ "\\Re", 60, CMSY10, ORDINARY, NULL },
{ "\\Im", 61, CMSY10, ORDINARY, NULL },
{ "\\top", 62, CMSY10, ORDINARY, NULL },
{ "\\bot", 63, CMSY10, ORDINARY, NULL },
{ "\\perp", 63, CMSY10, BINARYOP, NULL },
{ "\\aleph", 64, CMSY10, ORDINARY, NULL },
/* --- calligraphic letters (we use \\calA...\\calZ --- */
{ "\\calA", 65, CMSY10, VARIABLE, NULL },
{ "\\calB", 66, CMSY10, VARIABLE, NULL },
{ "\\calC", 67, CMSY10, VARIABLE, NULL },
{ "\\calD", 68, CMSY10, VARIABLE, NULL },
{ "\\calE", 69, CMSY10, VARIABLE, NULL },
{ "\\calF", 70, CMSY10, VARIABLE, NULL },
{ "\\calG", 71, CMSY10, VARIABLE, NULL },
{ "\\calH", 72, CMSY10, VARIABLE, NULL },
{ "\\calI", 73, CMSY10, VARIABLE, NULL },
{ "\\calJ", 74, CMSY10, VARIABLE, NULL },
{ "\\calK", 75, CMSY10, VARIABLE, NULL },
{ "\\calL", 76, CMSY10, VARIABLE, NULL },
{ "\\calM", 77, CMSY10, VARIABLE, NULL },
{ "\\calN", 78, CMSY10, VARIABLE, NULL },
{ "\\calO", 79, CMSY10, VARIABLE, NULL },
{ "\\calP", 80, CMSY10, VARIABLE, NULL },
{ "\\calQ", 81, CMSY10, VARIABLE, NULL },
{ "\\calR", 82, CMSY10, VARIABLE, NULL },
{ "\\calS", 83, CMSY10, VARIABLE, NULL },
{ "\\calT", 84, CMSY10, VARIABLE, NULL },
{ "\\calU", 85, CMSY10, VARIABLE, NULL },
{ "\\calV", 86, CMSY10, VARIABLE, NULL },
{ "\\calW", 87, CMSY10, VARIABLE, NULL },
{ "\\calX", 88, CMSY10, VARIABLE, NULL },
{ "\\calY", 89, CMSY10, VARIABLE, NULL },
{ "\\calZ", 90, CMSY10, VARIABLE, NULL },
/* --- operations and relations --- */
{ "\\cup", 91, CMSY10, OPERATOR, NULL },
{ "\\cap", 92, CMSY10, OPERATOR, NULL },
{ "\\uplus", 93, CMSY10, OPERATOR, NULL },
{ "\\wedge", 94, CMSY10, OPERATOR, NULL },
{ "\\vee", 95, CMSY10, OPERATOR, NULL },
{ "\\vdash", 96, CMSY10, RELATION, NULL },
{ "\\dashv", 97, CMSY10, RELATION, NULL },
/* --- brackets --- */
{ "\\lfloor", 98, CMSY10, OPENING, NULL },
{ "\\rfloor", 99, CMSY10, CLOSING, NULL },
{ "\\lceil", 100, CMSY10, OPENING, NULL },
{ "\\rceil", 101, CMSY10, CLOSING, NULL },
{ "\\lbrace", 102, CMSY10, OPENING, NULL },
{ "{", 102, CMSY10, OPENING, NULL },
{ "\\{", 102, CMSY10, OPENING, NULL },
{ "\\rbrace", 103, CMSY10, CLOSING, NULL },
{ "}", 103, CMSY10, CLOSING, NULL },
{ "\\}", 103, CMSY10, CLOSING, NULL },
{ "\\langle", 104, CMSY10, OPENING, NULL },
{ "\\rangle", 105, CMSY10, CLOSING, NULL },
{ "\\mid", 106, CMSY10, ORDINARY, NULL },
{ "|", 106, CMSY10, BINARYOP, NULL },
{ "\\parallel", 107, CMSY10, BINARYOP, NULL },
{ "\\|", 107, CMSY10, BINARYOP, NULL },
/* --- arrows --- */
{ "\\updownarrow", 108, CMSY10, ARROW, NULL },
{ "\\Updownarrow", 109, CMSY10, ARROW, NULL },
/* --- symbols and operations and relations --- */
{ "\\setminus", 110, CMSY10, BINARYOP, NULL },
{ "\\backslash", 110, CMSY10, BINARYOP, NULL },
{ "\\wr", 111, CMSY10, BINARYOP, NULL },
{ "\\surd", 112, CMSY10, OPERATOR, NULL },
{ "\\amalg", 113, CMSY10, BINARYOP, NULL },
{ "\\nabla", 114, CMSY10, VARIABLE, NULL },
{ "\\smallint", 115, CMSY10, OPERATOR, NULL },
{ "\\sqcup", 116, CMSY10, OPERATOR, NULL },
{ "\\sqcap", 117, CMSY10, OPERATOR, NULL },
{ "\\sqsubseteq", 118, CMSY10, RELATION, NULL },
{ "\\sqsupseteq", 119, CMSY10, RELATION, NULL },
/* --- special characters --- */
{ "\\S", 120, CMSY10, ORDINARY, NULL },
{ "\\dag", 121, CMSY10, ORDINARY, NULL },
{ "\\dagger", 121, CMSY10, ORDINARY, NULL },
{ "\\ddag", 122, CMSY10, ORDINARY, NULL },
{ "\\ddagger", 122, CMSY10, ORDINARY, NULL },
{ "\\P", 123, CMSY10, ORDINARY, NULL },
{ "\\clubsuit", 124, CMSY10, ORDINARY, NULL },
{ "\\Diamond", 125, CMSY10, ORDINARY, NULL },
{ "\\Heart", 126, CMSY10, ORDINARY, NULL },
{ "\\spadesuit", 127, CMSY10, ORDINARY, NULL },
/* --------------------------------------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- foreign letters --- */
{ "\\ss", 25, CMR10, ORDINARY, NULL },
{ "\\ae", 26, CMR10, ORDINARY, NULL },
{ "\\oe", 27, CMR10, ORDINARY, NULL },
{ "\\AE", 29, CMR10, ORDINARY, NULL },
{ "\\OE", 30, CMR10, ORDINARY, NULL },
/* --- digits 0-9 --- */
{ "0", 48, CMR10, ORDINARY, NULL },
{ "1", 49, CMR10, ORDINARY, NULL },
{ "2", 50, CMR10, ORDINARY, NULL },
{ "3", 51, CMR10, ORDINARY, NULL },
{ "4", 52, CMR10, ORDINARY, NULL },
{ "5", 53, CMR10, ORDINARY, NULL },
{ "6", 54, CMR10, ORDINARY, NULL },
{ "7", 55, CMR10, ORDINARY, NULL },
{ "8", 56, CMR10, ORDINARY, NULL },
{ "9", 57, CMR10, ORDINARY, NULL },
/* --- symbols, relations, etc --- */
{ "!", 33, CMR10, BINARYOP, NULL },
{ "\"", 34, CMR10, ORDINARY, NULL },
{ "\\quote", 34, CMR10, ORDINARY, NULL },
{ "#", 35, CMR10, BINARYOP, NULL },
{ "\\#", 35, CMR10, BINARYOP, NULL },
{ "$", 36, CMR10, BINARYOP, NULL },
{ "\\$", 36, CMR10, BINARYOP, NULL },
{ "%", 37, CMR10, BINARYOP, NULL },
{ "\\%", 37, CMR10, BINARYOP, NULL },
{ "\\percent", 37, CMR10, BINARYOP, NULL },
{ "&", 38, CMR10, BINARYOP, NULL },
{ "\\&", 38, CMR10, BINARYOP, NULL },
{ "\'", 39, CMR10, BINARYOP, NULL },
{ "\\apostrophe", 39, CMR10, ORDINARY, NULL },
{ "(", 40, CMR10, OPENING, NULL },
{ "\\(", 40, CMR10, OPENING, NULL },
{ ")", 41, CMR10, CLOSING, NULL },
{ "\\)", 41, CMR10, CLOSING, NULL },
{ "*", 42, CMR10, BINARYOP, NULL },
{ "+", 43, CMR10, BINARYOP, NULL },
{ "/", 47, CMR10, BINARYOP, NULL },
{ ":", 58, CMR10, BINARYOP, NULL },
{ ";", 59, CMR10, BINARYOP, NULL },
{ "=", 61, CMR10, RELATION, NULL },
{ "?", 63, CMR10, BINARYOP, NULL },
{ "@", 64, CMR10, BINARYOP, NULL },
{ "[", 91, CMR10, OPENING, NULL },
{ "\\[", 91, CMR10, OPENING, NULL },
{ "]", 93, CMR10, CLOSING, NULL },
{ "\\]", 93, CMR10, CLOSING, NULL },
{ "\\^", 94, CMR10, BINARYOP, NULL },
{ "\\~", 126, CMR10, OPERATOR, NULL },
/* --- uppercase letters --- */
{ "A", 65, CMR10, VARIABLE, NULL },
{ "B", 66, CMR10, VARIABLE, NULL },
{ "C", 67, CMR10, VARIABLE, NULL },
{ "D", 68, CMR10, VARIABLE, NULL },
{ "E", 69, CMR10, VARIABLE, NULL },
{ "F", 70, CMR10, VARIABLE, NULL },
{ "G", 71, CMR10, VARIABLE, NULL },
{ "H", 72, CMR10, VARIABLE, NULL },
{ "I", 73, CMR10, VARIABLE, NULL },
{ "J", 74, CMR10, VARIABLE, NULL },
{ "K", 75, CMR10, VARIABLE, NULL },
{ "L", 76, CMR10, VARIABLE, NULL },
{ "M", 77, CMR10, VARIABLE, NULL },
{ "N", 78, CMR10, VARIABLE, NULL },
{ "O", 79, CMR10, VARIABLE, NULL },
{ "P", 80, CMR10, VARIABLE, NULL },
{ "Q", 81, CMR10, VARIABLE, NULL },
{ "R", 82, CMR10, VARIABLE, NULL },
{ "S", 83, CMR10, VARIABLE, NULL },
{ "T", 84, CMR10, VARIABLE, NULL },
{ "U", 85, CMR10, VARIABLE, NULL },
{ "V", 86, CMR10, VARIABLE, NULL },
{ "W", 87, CMR10, VARIABLE, NULL },
{ "X", 88, CMR10, VARIABLE, NULL },
{ "Y", 89, CMR10, VARIABLE, NULL },
{ "Z", 90, CMR10, VARIABLE, NULL },
/* --- lowercase letters --- */
{ "a", 97, CMR10, VARIABLE, NULL },
{ "b", 98, CMR10, VARIABLE, NULL },
{ "c", 99, CMR10, VARIABLE, NULL },
{ "d", 100, CMR10, VARIABLE, NULL },
{ "e", 101, CMR10, VARIABLE, NULL },
{ "f", 102, CMR10, VARIABLE, NULL },
{ "g", 103, CMR10, VARIABLE, NULL },
{ "h", 104, CMR10, VARIABLE, NULL },
{ "i", 105, CMR10, VARIABLE, NULL },
{ "j", 106, CMR10, VARIABLE, NULL },
{ "k", 107, CMR10, VARIABLE, NULL },
{ "l", 108, CMR10, VARIABLE, NULL },
{ "m", 109, CMR10, VARIABLE, NULL },
{ "n", 110, CMR10, VARIABLE, NULL },
{ "o", 111, CMR10, VARIABLE, NULL },
{ "p", 112, CMR10, VARIABLE, NULL },
{ "q", 113, CMR10, VARIABLE, NULL },
{ "r", 114, CMR10, VARIABLE, NULL },
{ "s", 115, CMR10, VARIABLE, NULL },
{ "t", 116, CMR10, VARIABLE, NULL },
{ "u", 117, CMR10, VARIABLE, NULL },
{ "v", 118, CMR10, VARIABLE, NULL },
{ "w", 119, CMR10, VARIABLE, NULL },
{ "x", 120, CMR10, VARIABLE, NULL },
{ "y", 121, CMR10, VARIABLE, NULL },
{ "z", 122, CMR10, VARIABLE, NULL },
/* --------------------------------------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- parens ()'s --- */
{ "\\big(", 0, CMEX10, OPENING, NULL },
{ "\\big)", 1, CMEX10, CLOSING, NULL },
{ "\\Big(", 16, CMEX10, OPENING, NULL },
{ "\\Big)", 17, CMEX10, CLOSING, NULL },
{ "\\bigg(", 18, CMEX10, OPENING, NULL },
{ "\\bigg)", 19, CMEX10, CLOSING, NULL },
{ "\\Bigg(", 32, CMEX10, OPENING, NULL },
{ "\\Bigg)", 33, CMEX10, CLOSING, NULL },
{ "\\bigl(", 0, CMEX10, OPENING, NULL },
{ "\\bigr)", 1, CMEX10, CLOSING, NULL },
{ "\\Bigl(", 16, CMEX10, OPENING, NULL },
{ "\\Bigr)", 17, CMEX10, CLOSING, NULL },
{ "\\biggl(", 18, CMEX10, OPENING, NULL },
{ "\\biggr)", 19, CMEX10, CLOSING, NULL },
{ "\\Biggl(", 32, CMEX10, OPENING, NULL },
{ "\\Biggr)", 33, CMEX10, CLOSING, NULL },
/* --- brackets []'s --- */
{ "\\big[", 2, CMEX10, OPENING, NULL },
{ "\\big]", 3, CMEX10, CLOSING, NULL },
{ "\\bigg[", 20, CMEX10, OPENING, NULL },
{ "\\bigg]", 21, CMEX10, CLOSING, NULL },
{ "\\Bigg[", 34, CMEX10, OPENING, NULL },
{ "\\Bigg]", 35, CMEX10, CLOSING, NULL },
{ "\\Big[", 104, CMEX10, OPENING, NULL },
{ "\\Big]", 105, CMEX10, CLOSING, NULL },
{ "\\bigl[", 2, CMEX10, OPENING, NULL },
{ "\\bigr]", 3, CMEX10, CLOSING, NULL },
{ "\\biggl[", 20, CMEX10, OPENING, NULL },
{ "\\biggr]", 21, CMEX10, CLOSING, NULL },
{ "\\Biggl[", 34, CMEX10, OPENING, NULL },
{ "\\Biggr]", 35, CMEX10, CLOSING, NULL },
{ "\\Bigl[", 104, CMEX10, OPENING, NULL },
{ "\\Bigr]", 105, CMEX10, CLOSING, NULL },
/* --- braces {}'s --- */
{ "\\big{", 8, CMEX10, OPENING, NULL },
{ "\\big}", 9, CMEX10, CLOSING, NULL },
{ "\\bigg{", 26, CMEX10, OPENING, NULL },
{ "\\bigg}", 27, CMEX10, CLOSING, NULL },
{ "\\Bigg{", 40, CMEX10, OPENING, NULL },
{ "\\Bigg}", 41, CMEX10, CLOSING, NULL },
{ "\\Big{", 110, CMEX10, OPENING, NULL },
{ "\\Big}", 111, CMEX10, CLOSING, NULL },
{ "\\bigl{", 8, CMEX10, OPENING, NULL },
{ "\\bigr}", 9, CMEX10, CLOSING, NULL },
{ "\\biggl{", 26, CMEX10, OPENING, NULL },
{ "\\biggr}", 27, CMEX10, CLOSING, NULL },
{ "\\Biggl{", 40, CMEX10, OPENING, NULL },
{ "\\Biggr}", 41, CMEX10, CLOSING, NULL },
{ "\\Bigl{", 110, CMEX10, OPENING, NULL },
{ "\\Bigr}", 111, CMEX10, CLOSING, NULL },
{ "\\big\\{", 8, CMEX10, OPENING, NULL },
{ "\\big\\}", 9, CMEX10, CLOSING, NULL },
{ "\\bigg\\{", 26, CMEX10, OPENING, NULL },
{ "\\bigg\\}", 27, CMEX10, CLOSING, NULL },
{ "\\Bigg\\{", 40, CMEX10, OPENING, NULL },
{ "\\Bigg\\}", 41, CMEX10, CLOSING, NULL },
{ "\\Big\\{", 110, CMEX10, OPENING, NULL },
{ "\\Big\\}", 111, CMEX10, CLOSING, NULL },
{ "\\bigl\\{", 8, CMEX10, OPENING, NULL },
{ "\\bigr\\}", 9, CMEX10, CLOSING, NULL },
{ "\\biggl\\{", 26, CMEX10, OPENING, NULL },
{ "\\biggr\\}", 27, CMEX10, CLOSING, NULL },
{ "\\Biggl\\{", 40, CMEX10, OPENING, NULL },
{ "\\Biggr\\}", 41, CMEX10, CLOSING, NULL },
{ "\\Bigl\\{", 110, CMEX10, OPENING, NULL },
{ "\\Bigr\\}", 111, CMEX10, CLOSING, NULL },
{ "\\big\\lbrace", 8, CMEX10, OPENING, NULL },
{ "\\big\\rbrace", 9, CMEX10, CLOSING, NULL },
{ "\\bigg\\lbrace", 26, CMEX10, OPENING, NULL },
{ "\\bigg\\rbrace", 27, CMEX10, CLOSING, NULL },
{ "\\Bigg\\lbrace", 40, CMEX10, OPENING, NULL },
{ "\\Bigg\\rbrace", 41, CMEX10, CLOSING, NULL },
{ "\\Big\\lbrace", 110, CMEX10, OPENING, NULL },
{ "\\Big\\rbrace", 111, CMEX10, CLOSING, NULL },
/* --- angles <>'s --- */
{ "\\big<", 10, CMEX10, OPENING, NULL },
{ "\\big>", 11, CMEX10, CLOSING, NULL },
{ "\\bigg<", 28, CMEX10, OPENING, NULL },
{ "\\bigg>", 29, CMEX10, CLOSING, NULL },
{ "\\Bigg<", 42, CMEX10, OPENING, NULL },
{ "\\Bigg>", 43, CMEX10, CLOSING, NULL },
{ "\\Big<", 68, CMEX10, OPENING, NULL },
{ "\\Big>", 69, CMEX10, CLOSING, NULL },
{ "\\bigl<", 10, CMEX10, OPENING, NULL },
{ "\\bigr>", 11, CMEX10, CLOSING, NULL },
{ "\\biggl<", 28, CMEX10, OPENING, NULL },
{ "\\biggr>", 29, CMEX10, CLOSING, NULL },
{ "\\Biggl<", 42, CMEX10, OPENING, NULL },
{ "\\Biggr>", 43, CMEX10, CLOSING, NULL },
{ "\\Bigl<", 68, CMEX10, OPENING, NULL },
{ "\\Bigr>", 69, CMEX10, CLOSING, NULL },
{ "\\big\\langle", 10, CMEX10, OPENING, NULL },
{ "\\big\\rangle", 11, CMEX10, CLOSING, NULL },
{ "\\bigg\\langle", 28, CMEX10, OPENING, NULL },
{ "\\bigg\\rangle", 29, CMEX10, CLOSING, NULL },
{ "\\Bigg\\langle", 42, CMEX10, OPENING, NULL },
{ "\\Bigg\\rangle", 43, CMEX10, CLOSING, NULL },
{ "\\Big\\langle", 68, CMEX10, OPENING, NULL },
{ "\\Big\\rangle", 69, CMEX10, CLOSING, NULL },
/* --- hats ^ --- */
{ "^", 98, CMEX10, OPERATOR, NULL },
{ "^", 99, CMEX10, OPERATOR, NULL },
{ "^", 100, CMEX10, OPERATOR, NULL },
/* --- tildes --- */
{ "~", 101, CMEX10, OPERATOR, NULL },
{ "~", 102, CMEX10, OPERATOR, NULL },
{ "~", 103, CMEX10, OPERATOR, NULL },
/* --- \sum, \int and other (displaymath) symbols --- */
{ "\\bigsqcup", 70, CMEX10, LOWERBIG, NULL },
{ "\\Bigsqcup", 71, CMEX10, UPPERBIG, NULL },
{ "\\oint", 72, CMEX10, OPERATOR, NULL },
{ "\\bigoint", 72, CMEX10, LOWERBIG, NULL },
{ "\\Bigoint", 73, CMEX10, UPPERBIG, NULL },
{ "\\bigodot", 74, CMEX10, LOWERBIG, NULL },
{ "\\Bigodot", 75, CMEX10, UPPERBIG, NULL },
{ "\\bigoplus", 76, CMEX10, LOWERBIG, NULL },
{ "\\Bigoplus", 77, CMEX10, UPPERBIG, NULL },
{ "\\bigotimes", 78, CMEX10, LOWERBIG, NULL },
{ "\\Bigotimes", 79, CMEX10, UPPERBIG, NULL },
{ "\\sum", 80, CMEX10, OPERATOR, NULL },
{ "\\bigsum", 80, CMEX10, LOWERBIG, NULL },
{ "\\prod", 81, CMEX10, OPERATOR, NULL },
{ "\\bigprod", 81, CMEX10, LOWERBIG, NULL },
{ "\\int", 82, CMEX10, OPERATOR, NULL },
{ "\\bigint", 82, CMEX10, LOWERBIG, NULL },
{ "\\bigcup", 83, CMEX10, LOWERBIG, NULL },
{ "\\bigcap", 84, CMEX10, LOWERBIG, NULL },
{ "\\biguplus", 85, CMEX10, LOWERBIG, NULL },
{ "\\bigwedge", 86, CMEX10, LOWERBIG, NULL },
{ "\\bigvee", 87, CMEX10, LOWERBIG, NULL },
{ "\\Bigsum", 88, CMEX10, UPPERBIG, NULL },
{ "\\big\\sum", 88, CMEX10, UPPERBIG, NULL },
{ "\\Big\\sum", 88, CMEX10, UPPERBIG, NULL },
{ "\\bigg\\sum", 88, CMEX10, UPPERBIG, NULL },
{ "\\Bigg\\sum", 88, CMEX10, UPPERBIG, NULL },
{ "\\Bigprod", 89, CMEX10, UPPERBIG, NULL },
{ "\\Bigint", 90, CMEX10, UPPERBIG, NULL },
{ "\\big\\int", 90, CMEX10, UPPERBIG, NULL },
{ "\\Big\\int", 90, CMEX10, UPPERBIG, NULL },
{ "\\bigg\\int", 90, CMEX10, UPPERBIG, NULL },
{ "\\Bigg\\int", 90, CMEX10, UPPERBIG, NULL },
{ "\\Bigcup", 91, CMEX10, UPPERBIG, NULL },
{ "\\Bigcap", 92, CMEX10, UPPERBIG, NULL },
{ "\\Biguplus", 93, CMEX10, UPPERBIG, NULL },
{ "\\Bigwedge", 94, CMEX10, UPPERBIG, NULL },
{ "\\Bigvee", 95, CMEX10, UPPERBIG, NULL },
{ "\\coprod", 96, CMEX10, LOWERBIG, NULL },
{ "\\bigcoprod", 96, CMEX10, LOWERBIG, NULL },
{ "\\Bigcoprod", 97, CMEX10, UPPERBIG, NULL },
/* --------------------------------------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- rsfs script letters (we use \\scrA...\\scrZ --- */
{ "\\scrA", 0, RSFS10, VARIABLE, NULL },
{ "\\scrB", 1, RSFS10, VARIABLE, NULL },
{ "\\scrC", 2, RSFS10, VARIABLE, NULL },
{ "\\scrD", 3, RSFS10, VARIABLE, NULL },
{ "\\scrE", 4, RSFS10, VARIABLE, NULL },
{ "\\scrF", 5, RSFS10, VARIABLE, NULL },
{ "\\scrG", 6, RSFS10, VARIABLE, NULL },
{ "\\scrH", 7, RSFS10, VARIABLE, NULL },
{ "\\scrI", 8, RSFS10, VARIABLE, NULL },
{ "\\scrJ", 9, RSFS10, VARIABLE, NULL },
{ "\\scrK", 10, RSFS10, VARIABLE, NULL },
{ "\\scrL", 11, RSFS10, VARIABLE, NULL },
{ "\\scrM", 12, RSFS10, VARIABLE, NULL },
{ "\\scrN", 13, RSFS10, VARIABLE, NULL },
{ "\\scrO", 14, RSFS10, VARIABLE, NULL },
{ "\\scrP", 15, RSFS10, VARIABLE, NULL },
{ "\\scrQ", 16, RSFS10, VARIABLE, NULL },
{ "\\scrR", 17, RSFS10, VARIABLE, NULL },
{ "\\scrS", 18, RSFS10, VARIABLE, NULL },
{ "\\scrT", 19, RSFS10, VARIABLE, NULL },
{ "\\scrU", 20, RSFS10, VARIABLE, NULL },
{ "\\scrV", 21, RSFS10, VARIABLE, NULL },
{ "\\scrW", 22, RSFS10, VARIABLE, NULL },
{ "\\scrX", 23, RSFS10, VARIABLE, NULL },
{ "\\scrY", 24, RSFS10, VARIABLE, NULL },
{ "\\scrZ", 25, RSFS10, VARIABLE, NULL },
/* -------------------- B B O L D -------------------------
symbol charnum family class function
-------------------------------------------------------- */
/* --- uppercase greek letters --- */
{ "\\Gamma", 0, BBOLD10, VARIABLE, NULL },
{ "\\Delta", 1, BBOLD10, VARIABLE, NULL },
{ "\\Theta", 2, BBOLD10, VARIABLE, NULL },
{ "\\Lambda", 3, BBOLD10, VARIABLE, NULL },
{ "\\Xi", 4, BBOLD10, VARIABLE, NULL },
{ "\\Pi", 5, BBOLD10, VARIABLE, NULL },
{ "\\Sigma", 6, BBOLD10, VARIABLE, NULL },
{ "\\smallsum", 6, BBOLD10, OPERATOR, NULL },
{ "\\Upsilon", 7, BBOLD10, VARIABLE, NULL },
{ "\\Phi", 8, BBOLD10, VARIABLE, NULL },
{ "\\Psi", 9, BBOLD10, VARIABLE, NULL },
{ "\\Omega", 10, BBOLD10, VARIABLE, NULL },
/* --- lowercase greek letters --- */
{ "\\alpha", 11, BBOLD10, VARIABLE, NULL },
{ "\\beta", 12, BBOLD10, VARIABLE, NULL },
{ "\\gamma", 13, BBOLD10, VARIABLE, NULL },
{ "\\delta", 14, BBOLD10, VARIABLE, NULL },
{ "\\epsilon", 15, BBOLD10, VARIABLE, NULL },
{ "\\zeta", 16, BBOLD10, VARIABLE, NULL },
{ "\\eta", 17, BBOLD10, VARIABLE, NULL },
{ "\\theta", 18, BBOLD10, VARIABLE, NULL },
{ "\\iota", 19, BBOLD10, VARIABLE, NULL },
{ "\\kappa", 20, BBOLD10, VARIABLE, NULL },
{ "\\lambda", 21, BBOLD10, VARIABLE, NULL },
{ "\\mu", 22, BBOLD10, VARIABLE, NULL },
{ "\\nu", 23, BBOLD10, VARIABLE, NULL },
{ "\\xi", 24, BBOLD10, VARIABLE, NULL },
{ "\\pi", 25, BBOLD10, VARIABLE, NULL },
{ "\\rho", 26, BBOLD10, VARIABLE, NULL },
{ "\\sigma", 27, BBOLD10, VARIABLE, NULL },
{ "\\tau", 28, BBOLD10, VARIABLE, NULL },
{ "\\upsilon", 29, BBOLD10, VARIABLE, NULL },
{ "\\phi", 30, BBOLD10, VARIABLE, NULL },
{ "\\chi", 31, BBOLD10, VARIABLE, NULL },
{ "\\psi", 32, BBOLD10, VARIABLE, NULL },
{ "\\omega", 127, BBOLD10, VARIABLE, NULL },
/* --- digits 0-9 --- */
{ "0", 48, BBOLD10, ORDINARY, NULL },
{ "1", 49, BBOLD10, ORDINARY, NULL },
{ "2", 50, BBOLD10, ORDINARY, NULL },
{ "3", 51, BBOLD10, ORDINARY, NULL },
{ "4", 52, BBOLD10, ORDINARY, NULL },
{ "5", 53, BBOLD10, ORDINARY, NULL },
{ "6", 54, BBOLD10, ORDINARY, NULL },
{ "7", 55, BBOLD10, ORDINARY, NULL },
{ "8", 56, BBOLD10, ORDINARY, NULL },
{ "9", 57, BBOLD10, ORDINARY, NULL },
{ "\\0", 48, BBOLD10, ORDINARY, NULL },
{ "\\1", 49, BBOLD10, ORDINARY, NULL },
{ "\\2", 50, BBOLD10, ORDINARY, NULL },
{ "\\3", 51, BBOLD10, ORDINARY, NULL },
{ "\\4", 52, BBOLD10, ORDINARY, NULL },
{ "\\5", 53, BBOLD10, ORDINARY, NULL },
{ "\\6", 54, BBOLD10, ORDINARY, NULL },
{ "\\7", 55, BBOLD10, ORDINARY, NULL },
{ "\\8", 56, BBOLD10, ORDINARY, NULL },
{ "\\9", 57, BBOLD10, ORDINARY, NULL },
/* --- uppercase letters --- */
{ "A", 65, BBOLD10, VARIABLE, NULL },
{ "B", 66, BBOLD10, VARIABLE, NULL },
{ "C", 67, BBOLD10, VARIABLE, NULL },
{ "D", 68, BBOLD10, VARIABLE, NULL },
{ "E", 69, BBOLD10, VARIABLE, NULL },
{ "F", 70, BBOLD10, VARIABLE, NULL },
{ "G", 71, BBOLD10, VARIABLE, NULL },
{ "H", 72, BBOLD10, VARIABLE, NULL },
{ "I", 73, BBOLD10, VARIABLE, NULL },
{ "J", 74, BBOLD10, VARIABLE, NULL },
{ "K", 75, BBOLD10, VARIABLE, NULL },
{ "L", 76, BBOLD10, VARIABLE, NULL },
{ "M", 77, BBOLD10, VARIABLE, NULL },
{ "N", 78, BBOLD10, VARIABLE, NULL },
{ "O", 79, BBOLD10, VARIABLE, NULL },
{ "P", 80, BBOLD10, VARIABLE, NULL },
{ "Q", 81, BBOLD10, VARIABLE, NULL },
{ "R", 82, BBOLD10, VARIABLE, NULL },
{ "S", 83, BBOLD10, VARIABLE, NULL },
{ "T", 84, BBOLD10, VARIABLE, NULL },
{ "U", 85, BBOLD10, VARIABLE, NULL },
{ "V", 86, BBOLD10, VARIABLE, NULL },
{ "W", 87, BBOLD10, VARIABLE, NULL },
{ "X", 88, BBOLD10, VARIABLE, NULL },
{ "Y", 89, BBOLD10, VARIABLE, NULL },
{ "Z", 90, BBOLD10, VARIABLE, NULL },
/* --- lowercase letters --- */
{ "a", 97, BBOLD10, VARIABLE, NULL },
{ "b", 98, BBOLD10, VARIABLE, NULL },
{ "c", 99, BBOLD10, VARIABLE, NULL },
{ "d", 100, BBOLD10, VARIABLE, NULL },
{ "e", 101, BBOLD10, VARIABLE, NULL },
{ "f", 102, BBOLD10, VARIABLE, NULL },
{ "g", 103, BBOLD10, VARIABLE, NULL },
{ "h", 104, BBOLD10, VARIABLE, NULL },
{ "i", 105, BBOLD10, VARIABLE, NULL },
{ "j", 106, BBOLD10, VARIABLE, NULL },
{ "k", 107, BBOLD10, VARIABLE, NULL },
{ "l", 108, BBOLD10, VARIABLE, NULL },
{ "m", 109, BBOLD10, VARIABLE, NULL },
{ "n", 110, BBOLD10, VARIABLE, NULL },
{ "o", 111, BBOLD10, VARIABLE, NULL },
{ "p", 112, BBOLD10, VARIABLE, NULL },
{ "q", 113, BBOLD10, VARIABLE, NULL },
{ "r", 114, BBOLD10, VARIABLE, NULL },
{ "s", 115, BBOLD10, VARIABLE, NULL },
{ "t", 116, BBOLD10, VARIABLE, NULL },
{ "u", 117, BBOLD10, VARIABLE, NULL },
{ "v", 118, BBOLD10, VARIABLE, NULL },
{ "w", 119, BBOLD10, VARIABLE, NULL },
{ "x", 120, BBOLD10, VARIABLE, NULL },
{ "y", 121, BBOLD10, VARIABLE, NULL },
{ "z", 122, BBOLD10, VARIABLE, NULL },
/* --- symbols, relations, etc --- */
{ "!", 33, BBOLD10, BINARYOP, NULL },
{ "#", 35, BBOLD10, BINARYOP, NULL },
{ "\\#", 35, BBOLD10, BINARYOP, NULL },
{ "$", 36, BBOLD10, BINARYOP, NULL },
{ "\\$", 36, BBOLD10, BINARYOP, NULL },
{ "%", 37, BBOLD10, BINARYOP, NULL },
{ "\\%", 37, BBOLD10, BINARYOP, NULL },
{ "\\percent", 37, BBOLD10, BINARYOP, NULL },
{ "&", 38, BBOLD10, BINARYOP, NULL },
{ "\\&", 38, BBOLD10, BINARYOP, NULL },
{ "\'", 39, BBOLD10, BINARYOP, NULL },
{ "\\apostrophe", 39, BBOLD10, ORDINARY, NULL },
{ "(", 40, BBOLD10, OPENING, NULL },
{ "\\(", 40, BBOLD10, OPENING, NULL },
{ ")", 41, BBOLD10, CLOSING, NULL },
{ "\\)", 41, BBOLD10, CLOSING, NULL },
{ "*", 42, BBOLD10, BINARYOP, NULL },
{ "+", 43, BBOLD10, BINARYOP, NULL },
{ ",", 44, BBOLD10, PUNCTION, NULL },
{ "-", 45, BBOLD10, BINARYOP, NULL },
{ ".", 46, BBOLD10, PUNCTION, NULL },
{ "/", 47, BBOLD10, BINARYOP, NULL },
{ ":", 58, BBOLD10, BINARYOP, NULL },
{ ";", 59, BBOLD10, BINARYOP, NULL },
{ "<", 60, BBOLD10, RELATION, NULL },
{ "\\<", 60, BBOLD10, RELATION, NULL },
{ "\\cdot", 61, BBOLD10, BINARYOP, NULL },
{ ">", 62, BBOLD10, RELATION, NULL },
{ "\\>", 62, BBOLD10, RELATION, NULL },
{ "?", 63, BBOLD10, BINARYOP, NULL },
{ "@", 64, BBOLD10, BINARYOP, NULL },
{ "[", 91, BBOLD10, OPENING, NULL },
{ "\\[", 91, BBOLD10, OPENING, NULL },
{ "\\\\", 92, BBOLD10, OPENING, NULL },
{ "\\backslash", 92, BBOLD10, OPENING, NULL },
{ "]", 93, BBOLD10, CLOSING, NULL },
{ "\\]", 93, BBOLD10, CLOSING, NULL },
{ "|", 124, BBOLD10, BINARYOP, NULL },
{ "\\-", 123, BBOLD10, BINARYOP, NULL },
/* --- trailer record --- */
{ NULL, -999, -999, -999, NULL }
}
#endif /* INITVALS */
; /* --- end-of-symtable[] --- */
/* ======================= END-OF-FILE MIMETEX.H ========================= */
#endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>