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

1.1     ! albertel    1: #ifndef	_MIMETEX
        !             2: #define	_MIMETEX
        !             3: /****************************************************************************
        !             4:  *
        !             5:  * Copyright(c) 2002-2003, John Forkosh Associates, Inc. All rights reserved.
        !             6:  * --------------------------------------------------------------------------
        !             7:  * This file is part of mimeTeX, which is free software. You may redistribute
        !             8:  * and/or modify it under the terms of the GNU General Public License,
        !             9:  * version 2 or later, as published by the Free Software Foundation.
        !            10:  *      MimeTeX is distributed in the hope that it will be useful, but
        !            11:  * WITHOUT ANY WARRANTY, not even the implied warranty of MERCHANTABILITY.
        !            12:  * See the GNU General Public License for specific details.
        !            13:  *      By using mimeTeX, you warrant that you have read, understood and
        !            14:  * agreed to these terms and conditions, and that you are at least 18 years
        !            15:  * of age and possess the legal right and ability to enter into this
        !            16:  * agreement and to use mimeTeX in accordance with it.
        !            17:  *      Your mimeTeX distribution should contain a copy of the GNU General
        !            18:  * Public License.  If not, write to the Free Software Foundation, Inc.,
        !            19:  * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA,
        !            20:  * or point your browser to  http://www.gnu.org/licenses/gpl.html
        !            21:  * --------------------------------------------------------------------------
        !            22:  *
        !            23:  * Purpose:	Structures, macros, symbols,
        !            24:  *		and static font data for mimetex (and friends)
        !            25:  * 
        !            26:  * Source:	mimetex.h
        !            27:  *
        !            28:  * Notes:     o	#define TEXFONTS before #include "mimetex.h"
        !            29:  *		if you need the fonttable[] (of fontfamily's) set up.
        !            30:  *		mimetex.c needs this; other modules probably don't
        !            31:  *		because they'll call access functions from mimetex.c
        !            32:  *		that hide the underlying font data
        !            33:  *
        !            34:  * --------------------------------------------------------------------------
        !            35:  * Revision History:
        !            36:  * 09/18/02	J.Forkosh	Installation.
        !            37:  * 12/11/02	J.Forkosh	Version 1.00 released.
        !            38:  * 07/06/03	J.Forkosh	Version 1.10 begun.
        !            39:  *
        !            40:  ***************************************************************************/
        !            41: 
        !            42: 
        !            43: /* --------------------------------------------------------------------------
        !            44: check for compilation by parts (not supported yet)
        !            45: -------------------------------------------------------------------------- */
        !            46: /* --- check for (up to) five parts --- */
        !            47: #if defined(PART1) || defined(PART2) || defined(PART3) \
        !            48: ||  defined(PART4) || defined(PART5)
        !            49:   #define PARTS
        !            50: #endif
        !            51: /* --- default STATIC=static, else set up static for parts --- */
        !            52: #if defined(PARTS)
        !            53:   #if defined(PART1)
        !            54:     #define STATIC /* not static */
        !            55:     #define INITVALS
        !            56:   #else
        !            57:     #define STATIC extern
        !            58:   #endif
        !            59: #else
        !            60:   #define STATIC static
        !            61:   #define INITVALS
        !            62: #endif
        !            63: /* --- declare global symbol --- */
        !            64: #ifdef INITVALS
        !            65:   #define GLOBAL(type,variable,value) STATIC type variable = (value)
        !            66: #else
        !            67:   #define GLOBAL(type,variable,value) STATIC type variable
        !            68: #endif
        !            69: 
        !            70: 
        !            71: /* --------------------------------------------------------------------------
        !            72: macros to get/set/unset a single bit (in rasters), and some bitfield macros
        !            73: -------------------------------------------------------------------------- */
        !            74: /* --- single-bit operations on a scalar argument (x) --- */
        !            75: #define get1bit(x,bit)   ( ((x)>>(bit)) & 1 )	/* get the bit-th bit of x */
        !            76: #define set1bit(x,bit)   ( (x) |=  (1<<(bit)) )	/* set the bit-th bit of x */
        !            77: #define unset1bit(x,bit) ( (x) &= ~(1<<(bit)) )	/*unset the bit-th bit of x*/
        !            78: /* --- single-bit operations on a byte-addressable argument (x) --- */
        !            79: #define getlongbit(x,bit) get1bit(*((x)+(bit)/8),(bit)%8)	/* get bit */
        !            80: #define setlongbit(x,bit) set1bit(*((x)+(bit)/8),(bit)%8)	/* set bit */
        !            81: #define unsetlongbit(x,bit) unset1bit(*((x)+(bit)/8),(bit)%8)	/*unset bit*/
        !            82: /* --- a few bitfield macros --- */
        !            83: #define	bitmask(nbits)	((1<<(nbits))-1)	/* a mask of nbits 1's */
        !            84: #define getbitfld(x,bit1,nbits)	(((x)>>(bit1)) & (bitmask(nbits)))
        !            85: 
        !            86: 
        !            87: /* -------------------------------------------------------------------------
        !            88: Raster structure (bitmap or bytemap, along with its width and height in bits)
        !            89: -------------------------------------------------------------------------- */
        !            90: /* --- 8-bit datatype (always unsigned) --- */
        !            91: #define intbyte  unsigned char
        !            92: /* --- datatype for pixels --- */
        !            93: /* --- #if !defined(UNSIGNEDCHAR) && !defined(SIGNEDCHAR)
        !            94:           #define SIGNEDCHAR
        !            95:        #endif --- */
        !            96: #ifndef	SIGNEDCHAR
        !            97:   #define pixbyte  unsigned char
        !            98: #else
        !            99:   #define pixbyte  char
        !           100: #endif
        !           101: /* --- raster structure --- */
        !           102: #define	raster	struct raster_struct	/* "typedef" for raster_struct*/
        !           103: raster
        !           104:   {
        !           105:   /* -----------------------------------------------------------------------
        !           106:   dimensions of raster
        !           107:   ------------------------------------------------------------------------ */
        !           108:   int	width;				/* #pixels wide */
        !           109:   int	height;				/* #pixels high */
        !           110:   int	pixsz;				/* #bits per pixel, 1 or 8 */
        !           111:   /* -----------------------------------------------------------------------
        !           112:   memory for raster
        !           113:   ------------------------------------------------------------------------ */
        !           114:   pixbyte *pixmap;		/* memory for width*height bits or bytes */
        !           115:   } ; /* --- end-of-raster_struct --- */
        !           116: 
        !           117: /* ---
        !           118:  * associated raster constants and macros
        !           119:  * -------------------------------------- */
        !           120: #define	maxraster 99999			/* max #pixels for raster pixmap */
        !           121: /* --- #bytes in pixmap raster needed to contain width x height pixels --- */
        !           122: #define	bitmapsz(width,height) (((width)*(height)+7)/8) /*#bytes if a bitmap*/
        !           123: #define	pixmapsz(rp) (((rp)->pixsz)*bitmapsz((rp)->width,(rp)->height))
        !           124: /* --- pixel index calculation used by getpixel() and setpixel() below --- */
        !           125: #define	PIXDEX(rp,irow,icol) (((irow)*((rp)->width))+(icol))/*irow,icol indx*/
        !           126: /* --- get value of pixel, either one bit or one byte, at (irow,icol) --- */
        !           127: #define	getpixel(rp,irow,icol)		/*get bit or byte based on pixsz*/  \
        !           128: 	((rp)->pixsz==1? getlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))) :\
        !           129: 	 ((rp)->pixsz==8? ((rp)->pixmap)[PIXDEX(rp,(irow),(icol))] : (-1)) )
        !           130: /* --- set value of pixel, either one bit or one byte, at (irow,icol) --- */
        !           131: #define	setpixel(rp,irow,icol,value)	/*set bit or byte based on pixsz*/  \
        !           132: 	if ( (rp)->pixsz == 1 )		/*set pixel to 1 or 0 for bitmap*/  \
        !           133: 	 if ( (value) != 0 )		/* turn bit pixel on */             \
        !           134: 	  { setlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))); }            \
        !           135: 	 else				/* or turn bit pixel 0ff */         \
        !           136: 	  { unsetlongbit((rp)->pixmap,PIXDEX(rp,(irow),(icol))); }	    \
        !           137: 	else				/* set 8-bit bytemap pixel value */ \
        !           138: 	  if ( (rp)->pixsz == 8 )	/* check pixsz=8 for bytemap */	    \
        !           139: 	     ((rp)->pixmap)[PIXDEX(rp,(irow),(icol))]=(pixbyte)(value);     \
        !           140: 	  else				/* user supplies final ; */
        !           141: 
        !           142: /* --------------------------------------------------------------------------
        !           143: some char classes tokenizer needs to recognize, and macros to check for them
        !           144: -------------------------------------------------------------------------- */
        !           145: /* --- some character classes --- */
        !           146: #define	WHITEMATH	"~ \t\n\r\f\v"	/* white chars in display/math mode*/
        !           147: #define	WHITETEXT	"\t\n\r\f\v"	/* white chars in text mode */
        !           148: #define	WHITEDELIM	"~ "		/*always ignored following \sequence*/
        !           149: #define	WHITESPACE	(istext>0&&istext!=3?WHITETEXT:WHITEMATH) /* white */
        !           150: #define	LEFTBRACES	"{([<|-="	/* opening delims are left{([< |,|| */
        !           151: #define	RIGHTBRACES	"})]>|-="	/* corresponding closing delims */
        !           152: #define	ESCAPE		"\\"		/* introduce escape sequence */
        !           153: #define	SUPERSCRIPT	"^"		/* introduce superscript */
        !           154: #define	SUBSCRIPT	"_"		/* introduce subscript */
        !           155: #define	SCRIPTS		SUPERSCRIPT SUBSCRIPT /* either "script" */
        !           156: /* --- macros to check for them --- */
        !           157: #define	isthischar(thischar,accept) \
        !           158: 	( (thischar)!='\000' && *(accept)!='\000' \
        !           159: 	&& strchr(accept,(thischar))!=(char *)NULL )
        !           160: #define	isthisstr(thisstr,accept) \
        !           161: 	((*(thisstr))!='\000' && strspn(thisstr,accept)==strlen(thisstr))
        !           162: #define	skipwhite(thisstr)  if ( (thisstr) != NULL ) \
        !           163: 	while ( isthischar(*(thisstr),WHITESPACE) ) (thisstr)++
        !           164: #define	isnextchar(thisstr,accept) \
        !           165: 	({skipwhite(thisstr);},isthischar(*thisstr,accept))
        !           166: 
        !           167: /* -------------------------------------------------------------------------
        !           168: character definition struct (font info from .gf file describing a char)
        !           169: -------------------------------------------------------------------------- */
        !           170: #define	chardef	struct chardef_struct	/* "typedef" for chardef_struct*/
        !           171: chardef
        !           172:   {
        !           173:   /* -----------------------------------------------------------------------
        !           174:   character description
        !           175:   ------------------------------------------------------------------------ */
        !           176:   /* --- character identification as given in .gf font file --- */
        !           177:   int	charnum;			/*different gf files resuse same num*/
        !           178:   int	location;			/* location in font */
        !           179:   /* --- upper-left and lower-left corners of char (topcol=botcol?) --- */
        !           180:   int	toprow, topleftcol;		/* upper-left corner */
        !           181:   int	botrow, botleftcol;		/* lower-left corner */
        !           182:   /* -----------------------------------------------------------------------
        !           183:   character bitmap raster (image.width is character width, ditto height)
        !           184:   ------------------------------------------------------------------------ */
        !           185:   raster  image;			/* bitmap image of character */
        !           186:   } ; /* --- end-of-chardef_struct --- */
        !           187: 
        !           188: 
        !           189: /* -------------------------------------------------------------------------
        !           190: Font info corresponding to TeX \matchardef, see TeXbook Appendix F (page 431)
        !           191: -------------------------------------------------------------------------- */
        !           192: typedef void *((*HANDLER)());		/* ptr to function returning void* */
        !           193: #define	mathchardef	struct mathchardef_struct /*typedef for mathchardef*/
        !           194: mathchardef
        !           195:   {
        !           196:   /* -----------------------------------------------------------------------
        !           197:   symbol name ("a", "\alpha", "1", etc)
        !           198:   ------------------------------------------------------------------------ */
        !           199:   char	*symbol;			/* as it appears in a source file */
        !           200:   /* -----------------------------------------------------------------------
        !           201:   components of \mathchardef hexadecimal code assigned to this symbol
        !           202:   ------------------------------------------------------------------------ */
        !           203:   int	charnum;			/* char# (as given in .gf file) */
        !           204:   int	family;				/* font family e.g., 2=math symbol */
        !           205:   int	class;				/* e.g., 3=relation, TexBook pg.154*/
        !           206:   /* ------------------------------------------------------------------------
        !           207:   Extra info: some math "functions" require special processing (e.g., \frac)
        !           208:   ------------------------------------------------------------------------ */
        !           209:   /* --- function that performs special processing required by symbol --- */
        !           210:   /* subraster *((*handler)()); -- handler is ultimately recast like this */
        !           211:   HANDLER handler;			/* e.g., rastfrac() for \frac's */
        !           212:   } ; /* --- end-of-mathchardef_struct --- */
        !           213: 
        !           214: /* ---
        !           215:  * classes for mathchardef (TeXbook pg.154)
        !           216:  * ---------------------------------------- */
        !           217: #define	ORDINARY	(0)		/* e.g., /    */
        !           218: #define	OPERATOR	(1)		/* e.g., \sum */
        !           219: #define	BINARYOP	(2)		/* e.g., +    */
        !           220: #define	RELATION	(3)		/* e.g., =    */
        !           221: #define	OPENING		(4)		/* e.g., (    */
        !           222: #define	CLOSING		(5)		/* e.g., }    */
        !           223: #define	PUNCTION	(6)		/* e.g., , (punctuation) */
        !           224: #define	VARIABLE	(7)		/* e.g., x    */
        !           225: #define	DISPOPER	(8)		/* e.g., Bigint (displaymath opers)*/
        !           226: #define	MAXCLASS	(8)		/* just for index checks */
        !           227: #define	UPPERBIG	DISPOPER	/*how to interpret Bigxxx operators*/
        !           228: #define	LOWERBIG	DISPOPER	/*how to interpret bigxxx operators*/
        !           229: /* --- class aliases --- */
        !           230: #define	ARROW		RELATION
        !           231: /* --- families for mathchardef (TeXbook, top of pg.431) --- */
        !           232: #define	CMR10		(0)		/* normal roman */
        !           233: #define	CMMI10		(1)		/* math italic */
        !           234: #define	CMMIB10		(2)		/* math italic bold */
        !           235: #define	CMSY10		(3)		/* math symbol */
        !           236: #define	CMEX10		(4)		/* math extension */
        !           237: #define	RSFS10		(5)		/* rsfs \scrA ... \scrZ */
        !           238: #define	BBOLD10		(6)		/* blackboard bold \mathbb A ... */
        !           239: #define	NOTACHAR	(99)		/* e.g., \frac */
        !           240: /* --- dummy argument value for handlers --- */
        !           241: #define	NOVALUE		(-989898)	/*charnum,family,class used as args*/
        !           242: 
        !           243: /* ---
        !           244:  * additional font attributes (only size is implemented)
        !           245:  * ----------------------------------------------------- */
        !           246: /* --- font sizes 0-5 = tiny,small,normal,large,Large,LARGE (roughly) --- */
        !           247: #define	LARGESTSIZE	(5)
        !           248: #ifndef	NORMALSIZE
        !           249:   #define NORMALSIZE	(2)
        !           250: #endif
        !           251: #ifndef	DISPLAYSIZE
        !           252:   /* --- automatically sets scripts in \displaystyle when fontsize>= --- */
        !           253:   #define DISPLAYSIZE	(3) /*(NORMALSIZE+1)*/
        !           254: #endif
        !           255: 
        !           256: /* ---
        !           257: aspect ratio is width/height of the displayed image of a pixel
        !           258: -------------------------------------------------------------- */
        !           259: #define	ASPECTRATIO	1.0 /*(16.0/9.0)*/
        !           260: #define	SQRTWIDTH(sqrtht) ((int)(.5*((double)(sqrtht+1))*ASPECTRATIO + 0.5))
        !           261: 
        !           262: /* ---
        !           263:  * space between adjacent symbols, e.g., symspace[RELATION][VARIABLE]
        !           264:  * ------------------------------------------------------------------ */
        !           265: STATIC	int symspace[10][10]
        !           266: #ifdef INITVALS
        !           267:  =
        !           268:  { /* ---------------------------------------------------------------
        !           269:          Right... ORD OPER  BIN  REL OPEN CLOS PUNC  VAR DISP unused
        !           270:     Left... ------------------------------------------------------ */
        !           271:   /*ORDINARY*/	{  2,   3,   3,   5,   3,   2,   2,   2,   3,   0 },
        !           272:   /*OPERATOR*/	{  3,   1,   1,   5,   3,   2,   2,   2,   3,   0 },
        !           273:   /*BINARYOP*/	{  2,   1,   1,   5,   3,   2,   2,   2,   3,   0 },
        !           274:   /*RELATION*/	{  5,   5,   5,   5,   5,   5,   5,   5,   5,   0 },
        !           275:    /*OPENING*/	{  2,   2,   2,   5,   2,   4,   2,   2,   3,   0 },
        !           276:    /*CLOSING*/	{  2,   3,   3,   5,   4,   2,   1,   2,   3,   0 },
        !           277:   /*PUNCTION*/	{  2,   2,   2,   5,   2,   2,   1,   2,   2,   0 },
        !           278:   /*VARIABLE*/	{  2,   2,   2,   5,   2,   2,   1,   2,   2,   0 },
        !           279:   /*DISPOPER*/	{  2,   3,   3,   5,   2,   3,   2,   2,   2,   0 },
        !           280:     /*unused*/	{  0,   0,   0,   0,   0,   0,   0,   0,   0,   0 }
        !           281:  }
        !           282: #endif
        !           283:  ; /* --- end-of-symspace[][] --- */
        !           284: 
        !           285: 
        !           286: /* -------------------------------------------------------------------------
        !           287: subraster (bitmap image, its attributes, overlaid position in raster, etc)
        !           288: -------------------------------------------------------------------------- */
        !           289: #define	subraster struct subraster_struct /* "typedef" for subraster_struct*/
        !           290: subraster
        !           291:   {
        !           292:   /* --- subraster type --- */
        !           293:   int	type;				/* charcter or image raster */
        !           294:   /* --- character info (if subraster represents a character) --- */
        !           295:   mathchardef *symdef;			/* mathchardef identifying image */
        !           296:   int	baseline;			/*0 if image is entirely descending*/
        !           297:   int	size;				/* font size 0-4 */
        !           298:   /* --- upper-left corner for bitmap (as overlaid on a larger raster) --- */
        !           299:   int	toprow, leftcol;		/* upper-left corner of subraster */
        !           300:   /* --- pointer to raster bitmap image of subraster --- */
        !           301:   raster *image;			/*ptr to bitmap image of subraster*/
        !           302:   } ; /* --- end-of-subraster_struct --- */
        !           303: 
        !           304: /* --- subraster types --- */
        !           305: #define	CHARASTER	(1)		/* character */
        !           306: #define	STRINGRASTER	(2)		/* string of characters */
        !           307: #define	IMAGERASTER	(3)		/* image */
        !           308: #define	ASCIISTRING	(4)		/* ascii string (not a raster) */
        !           309: 
        !           310: /* ---
        !           311:  * issue rasterize() call end extract embedded raster from returned subraster
        !           312:  * -------------------------------------------------------------------------- */
        !           313: subraster *rasterize();			/* declare rasterize */
        !           314: #define	make_raster(expression,size)	((rasterize(expression,size))->image)
        !           315: 
        !           316: 
        !           317: /* -------------------------------------------------------------------------
        !           318: font family
        !           319: -------------------------------------------------------------------------- */
        !           320: #define	fontfamily	struct fontfamily_struct /* typedef for fontfamily */
        !           321: fontfamily
        !           322:   {
        !           323:   /* -----------------------------------------------------------------------
        !           324:   several sizes, fontdef[0...4] = footnote, small, normal, large, Large  
        !           325:   ------------------------------------------------------------------------ */
        !           326:   int	family;				/* font family e.g., 2=math symbol */
        !           327:   chardef *fontdef[LARGESTSIZE+2];	/*small=(fontdef[1])[charnum].image*/
        !           328:   } ; /* --- end-of-fontfamily_struct --- */
        !           329: /* --- dummy font table (for contexts requiring const) --- */
        !           330: #define dummyfonttable \
        !           331:   { \
        !           332:    {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}} \
        !           333:   }
        !           334: 
        !           335: 
        !           336: /* -------------------------------------------------------------------------
        !           337: 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
        !           338: -------------------------------------------------------------------------- */
        !           339: #ifdef TEXFONTS
        !           340: /* ---
        !           341:  * font info generated for us by gfuntype
        !           342:  * -------------------------------------- */
        !           343: #ifdef INITVALS
        !           344:   #include "texfonts.h"
        !           345: #endif
        !           346: 
        !           347: /* ---
        !           348:  * font families (by size), just a table of preceding font info
        !           349:  * ------------------------------------------------------------ */
        !           350: /* --- for low-pass anti-aliasing --- */
        !           351: STATIC	fontfamily aafonttable[]
        !           352: #ifdef INITVALS
        !           353:  =
        !           354:  {/* ------------------------------------------------------------------------
        !           355:     family   size=0,       1,       2,       3,       4,      5
        !           356:   ------------------------------------------------------------------------ */
        !           357:   {  CMR10,{  cmr83,  cmr100,  cmr118,  cmr131,  cmr160,  cmr180}},
        !           358:   { CMMI10,{ cmmi83, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
        !           359:   { CMSY10,{ cmsy83, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
        !           360:   { CMEX10,{ cmex83, cmex100, cmex118, cmex131, cmex160, cmex180}},
        !           361:   { RSFS10,{ rsfs83, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
        !           362:   {BBOLD10,{bbold83,bbold100,bbold118,bbold131,bbold160,bbold180}},
        !           363:   {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}}
        !           364:  }
        !           365: #endif
        !           366:  ; /* --- end-of-aafonttable[] --- */
        !           367: 
        !           368: /* --- for super-sampling anti-aliasing --- */
        !           369: #ifdef SSFONTS
        !           370:  STATIC fontfamily ssfonttable[]
        !           371:  #ifdef INITVALS
        !           372:   =
        !           373:   {/* -----------------------------------------------------------------------
        !           374:      family   size=0,       1,       2,       3,       4,      5
        !           375:    ----------------------------------------------------------------------- */
        !           376:    {  CMR10,{ cmr180, cmr1200, cmr1200, cmr1200, cmr1200, cmr1200}},
        !           377:    { CMMI10,{cmmi180, cmmi100, cmmi118, cmmi131, cmmi160, cmmi180}},
        !           378:    { CMSY10,{cmsy180, cmsy100, cmsy118, cmsy131, cmsy160, cmsy180}},
        !           379:    { CMEX10,{cmex180, cmex100, cmex118, cmex131, cmex160, cmex180}},
        !           380:    { RSFS10,{rsfs180, rsfs100, rsfs118, rsfs131, rsfs160, rsfs180}},
        !           381:    {BBOLD10,{bbold180,bbold100,bbold118,bbold131,bbold160,bbold180}},
        !           382:    {   -999,{   NULL,    NULL,    NULL,    NULL,    NULL,    NULL}}
        !           383:   }
        !           384:  #endif
        !           385:   ; /* --- end-of-ssfonttable[] --- */
        !           386: #else
        !           387:  /*GLOBAL(fontfamily,ssfonttable[],dummyfonttable);*/
        !           388:  STATIC fontfamily ssfonttable[]
        !           389:  #ifdef INITVALS
        !           390:   = dummyfonttable
        !           391:  #endif
        !           392:   ;
        !           393: #endif  /* #ifdef SSFONTS */
        !           394: #else
        !           395:  /*GLOBAL(fontfamily,aafonttable[],dummyfonttable);*/
        !           396:  /*GLOBAL(fontfamily,ssfonttable[],dummyfonttable);*/
        !           397:  STATIC fontfamily
        !           398: 	aafonttable[]
        !           399: 	#ifdef INITVALS
        !           400: 	 = dummyfonttable
        !           401: 	#endif
        !           402: 	,
        !           403: 	ssfonttable[]
        !           404: 	#ifdef INITVALS
        !           405: 	 = dummyfonttable
        !           406: 	#endif
        !           407: 	;
        !           408: #endif  /* #ifdef TEXFONTS */
        !           409: 
        !           410: /* --- select current font table (for lowpass or supersampling) --- */
        !           411: #ifndef ISSUPERSAMPLING
        !           412:   #define ISSUPERSAMPLING 0
        !           413: #endif
        !           414: GLOBAL(fontfamily,*fonttable,(ISSUPERSAMPLING?ssfonttable:aafonttable));
        !           415: 
        !           416: /* --- supersampling shrink factors corresponding to displayed sizes --- */
        !           417: STATIC	int shrinkfactors[]		/*supersampling shrinkfactor by size*/
        !           418: #ifdef INITVALS
        !           419:  =
        !           420:     {  3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
        !           421:   /*{ 15,13,11, 9, 7, 5, 3, 1 }*/
        !           422: #endif
        !           423:  ;
        !           424: 
        !           425: /* ---
        !           426:  * handler functions for math operations
        !           427:  * ------------------------------------- */
        !           428: subraster *rastflags();			/* set flags, e.g., for \rm */
        !           429: subraster *rastfrac();			/* handle \frac \atop expressions */
        !           430: subraster *rastackrel();		/* handle \stackrel expressions */
        !           431: subraster *rastmathfunc();		/* handle \lim,\log,etc expressions*/
        !           432: subraster *rastoverlay();		/* handle \not */
        !           433: subraster *rastspace();			/* handle math space, \hspace,\hfill*/
        !           434: subraster *rastnewline();		/* handle \\ newline */
        !           435: subraster *rastarrow();			/* handle \longrightarrow, etc */
        !           436: subraster *rastuparrow();		/* handle \longuparrow, etc */
        !           437: subraster *rastsqrt();			/* handle \sqrt */
        !           438: subraster *rastaccent();		/* handle \hat \vec \braces, etc */
        !           439: subraster *rastfont();			/* handle \cal{} \scr{}, etc */
        !           440: subraster *rastbegin();			/* handle \begin{}...\end{} */
        !           441: subraster *rastleft();			/* handle \left{}...\right{} */
        !           442: subraster *rastarray();			/* handle \array{...} */
        !           443: subraster *rastpicture();		/* handle \picture(,){...} */
        !           444: subraster *rastline();			/* handle \line(xinc,yinc){xlen} */
        !           445: subraster *rastcircle();		/* handle \circle(xdiam[,ydiam]) */
        !           446: subraster *rastbezier();		/*handle\bezier(c0,r0)(c1,r1)(ct,rt)*/
        !           447: subraster *rastraise();			/* handle \raisebox{lift}{expr} */
        !           448: subraster *rastrotate();		/* handle \rotatebox{degs}{expr} */
        !           449: subraster *rastfbox();			/* handle \fbox{expr} */
        !           450: subraster *rastinput();			/* handle \input{filename} */
        !           451: subraster *rastcounter();		/* handle \counter{filename} */
        !           452: subraster *rastnoop();			/* handle \escape's to be flushed */
        !           453: 
        !           454: /* --- sqrt --- */
        !           455: #define	SQRTACCENT	(1)		/* \sqrt */
        !           456: /* --- accents --- */
        !           457: #define	BARACCENT	(11)		/* \bar \overline*/
        !           458: #define	UNDERBARACCENT	(12)		/* \underline */
        !           459: #define	HATACCENT	(13)		/* \hat */
        !           460: #define	DOTACCENT	(14)		/* \dot */
        !           461: #define	DDOTACCENT	(15)		/* \ddot */
        !           462: #define	VECACCENT	(16)		/* \vec */
        !           463: #define	TILDEACCENT	(17)		/* \tilde */
        !           464: #define	OVERBRACE	(18)		/* \overbrace */
        !           465: #define	UNDERBRACE	(19)		/* \underbrace */
        !           466: /* --- flags/modes --- */
        !           467: #define	ISTEXT		(1)		/* set istext */
        !           468: #define	ISDISPLAYSTYLE	(2)		/* set isdisplaystyle */
        !           469: #define	ISDISPLAYSIZE	(21)		/* set displaysize */
        !           470: #define	ISFONTSIZE	(3)		/* set fontsize */
        !           471: #define	ISWEIGHT	(4)		/* set aa params */
        !           472: #define	ISOPAQUE	(5)		/* set background opaque */
        !           473: #define	ISSUPER		(6)		/* set supersampling/lowpass */
        !           474: #define	ISAAALGORITHM	(61)		/* set anti-aliasing algorithm */
        !           475: #define	ISCENTERWT	(62)		/* set anti-aliasing center weight */
        !           476: #define	ISADJACENTWT	(63)		/* set anti-aliasing adjacent weight*/
        !           477: #define	ISCORNERWT	(64)		/* set anti-aliasing adjacent weight*/
        !           478: #define	PNMPARAMS	(65)		/* set fgalias,fgonly,bgalias,bgonly*/
        !           479: #define	ISSHRINK	(7)		/* set supersampling shrinkfactor */
        !           480: #define	UNITLENGTH	(8)		/* set unitlength */
        !           481: #define	ISCOLOR		(9)		/* set color */
        !           482: #define	ISREVERSE	(10)		/* set reverse video colors */
        !           483: #define	ISSTRING	(11)		/* set ascii string mode */
        !           484: #define	ISSQUASH	(12)		/* set (minimum) "squash" margin */
        !           485: 
        !           486: /* ---
        !           487:  * mathchardefs for symbols recognized by mimetex
        !           488:  * ---------------------------------------------- */
        !           489: STATIC	mathchardef symtable[]
        !           490: #ifdef INITVALS
        !           491:  =
        !           492:  {
        !           493:     /* ---------- c o m m a n d  h a n d l e r s --------------
        !           494:           symbol    arg1     arg2     arg3       function
        !           495:     -------------------------------------------------------- */
        !           496:     /* --- commands --- */
        !           497:     { "\\left", NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastleft) },
        !           498:     { "\\frac",   1,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
        !           499:     { "\\over",   1,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
        !           500:     { "\\atop",   0,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
        !           501:     { "\\choose", 0,	NOVALUE,NOVALUE,  (HANDLER)(rastfrac) },
        !           502:     { "\\not",    1,          0,NOVALUE,  (HANDLER)(rastoverlay) },
        !           503:     { "\\Not",    2,          0,NOVALUE,  (HANDLER)(rastoverlay) },
        !           504:     { "\\widenot",2,          0,NOVALUE,  (HANDLER)(rastoverlay) },
        !           505:     { "\\sout",   3,    NOVALUE,NOVALUE,  (HANDLER)(rastoverlay) },
        !           506:     { "\\strikeout",3,  NOVALUE,NOVALUE,  (HANDLER)(rastoverlay) },
        !           507:     { "\\compose",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastoverlay) },
        !           508:     { "\\stackrel", 2,	NOVALUE,NOVALUE,  (HANDLER)(rastackrel) },
        !           509:     { "\\relstack", 1,	NOVALUE,NOVALUE,  (HANDLER)(rastackrel) },
        !           510:     { "\\sqrt",	NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastsqrt) },
        !           511:     { "\\overbrace",  OVERBRACE,1,    1,  (HANDLER)(rastaccent) },
        !           512:     { "\\underbrace",UNDERBRACE,0,    1,  (HANDLER)(rastaccent) },
        !           513:     { "\\overline",   BARACCENT,1,    0,  (HANDLER)(rastaccent) },
        !           514:     { "\\underline",UNDERBARACCENT,0, 0,  (HANDLER)(rastaccent) },
        !           515:     { "\\begin",NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastbegin) },
        !           516:     { "\\array",NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastarray) },
        !           517:     { "\\matrix",NOVALUE,NOVALUE,NOVALUE, (HANDLER)(rastarray) },
        !           518:     { "\\tabular",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastarray) },
        !           519:     { "\\picture",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastpicture) },
        !           520:     { "\\line", NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastline) },
        !           521:     { "\\circle", NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcircle) },
        !           522:     { "\\bezier", NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastbezier) },
        !           523:     { "\\qbezier",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastbezier) },
        !           524:     { "\\raisebox",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastraise) },
        !           525:     { "\\rotatebox",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastrotate) },
        !           526:     { "\\fbox", NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastfbox) },
        !           527:     { "\\input",NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastinput) },
        !           528:     { "\\counter",NOVALUE,NOVALUE,NOVALUE,(HANDLER)(rastcounter) },
        !           529:     /* --- spaces --- */
        !           530:     { "\\/",	1,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           531:     { "\\,",	2,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           532:     { "\\:",	4,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           533:     { "\\;",	6,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           534:     { "\\\n",	3,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           535:     { "\\\r",	3,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           536:     { "\\\t",	3,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           537:       /*{ "\\~",5,NOVALUE,NOVALUE,(HANDLER)(rastspace) },*/
        !           538:     { "~",	5,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           539:     { "\\ ",	5,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           540:     { " ",	5,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           541:     { "\\quad",	6,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           542:     { "\\qquad",10,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           543:     { "\\hspace",0,	NOVALUE,NOVALUE,  (HANDLER)(rastspace) },
        !           544:     { "\\vspace",0,	NOVALUE,      1,  (HANDLER)(rastspace) },
        !           545:     { "\\hfill",0,	      1,NOVALUE,  (HANDLER)(rastspace) },
        !           546:     /* --- newline --- */
        !           547:     { "\\\\",   NOVALUE,NOVALUE,NOVALUE,  (HANDLER)(rastnewline) },
        !           548:     /* --- arrows --- */
        !           549:     { "\\longrightarrow",   1,0,NOVALUE,  (HANDLER)(rastarrow) },
        !           550:     { "\\Longrightarrow",   1,1,NOVALUE,  (HANDLER)(rastarrow) },
        !           551:     { "\\longleftarrow",   -1,0,NOVALUE,  (HANDLER)(rastarrow) },
        !           552:     { "\\Longleftarrow",   -1,1,NOVALUE,  (HANDLER)(rastarrow) },
        !           553:     { "\\longleftrightarrow",0,0,NOVALUE, (HANDLER)(rastarrow) },
        !           554:     { "\\Longleftrightarrow",0,1,NOVALUE, (HANDLER)(rastarrow) },
        !           555:     { "\\longuparrow",      1,0,NOVALUE, (HANDLER)(rastuparrow) },
        !           556:     { "\\Longuparrow",      1,1,NOVALUE, (HANDLER)(rastuparrow) },
        !           557:     { "\\longdownarrow",   -1,0,NOVALUE, (HANDLER)(rastuparrow) },
        !           558:     { "\\Longdownarrow",   -1,1,NOVALUE, (HANDLER)(rastuparrow) },
        !           559:     { "\\longupdownarrow",  0,0,NOVALUE, (HANDLER)(rastuparrow) },
        !           560:     { "\\Longupdownarrow",  0,1,NOVALUE, (HANDLER)(rastuparrow) },
        !           561:     /* --- modes and values --- */
        !           562:     { "\\cal",		  1,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           563:     { "\\mathcal",	  1,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           564:     { "\\scr",		  2,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           565:     { "\\mathscr",	  2,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           566:     { "\\mathfrak",	  2,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           567:     { "\\mathbb",	  5,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           568:     { "\\rm",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           569:     { "\\text",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           570:     { "\\textrm",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           571:     { "\\mathrm",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           572:     { "\\mathbf",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           573:     { "\\mathtt",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           574:     { "\\mathsf",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           575:     { "\\mbox",		  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           576:     { "\\operatorname",	  3,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           577:     { "\\it",		  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           578:     { "\\textit",	  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           579:     { "\\mathit",	  4,	 NOVALUE,NOVALUE, (HANDLER)(rastfont) },
        !           580:     { "\\rm",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
        !           581:     { "\\it",	     ISTEXT,           2,NOVALUE, (HANDLER)(rastflags) },
        !           582:     { "\\sl",	     ISTEXT,           2,NOVALUE, (HANDLER)(rastflags) },
        !           583:     { "\\bb",	     ISTEXT,           3,NOVALUE, (HANDLER)(rastflags) },
        !           584:     { "\\bf",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
        !           585:     { "\\text",	     ISTEXT,           1,NOVALUE, (HANDLER)(rastflags) },
        !           586:     { "\\norm",	     ISTEXT,           0,NOVALUE, (HANDLER)(rastflags) },
        !           587:     { "\\ascii",     ISSTRING,         1,NOVALUE, (HANDLER)(rastflags) },
        !           588:     { "\\image",     ISSTRING,         0,NOVALUE, (HANDLER)(rastflags) },
        !           589:     { "\\limits",    ISDISPLAYSTYLE,   2,NOVALUE, (HANDLER)(rastflags) },
        !           590:     { "\\nolimits",  ISDISPLAYSTYLE,   0,NOVALUE, (HANDLER)(rastflags) },
        !           591:     { "\\displaystyle",ISDISPLAYSTYLE, 2,NOVALUE, (HANDLER)(rastflags) },
        !           592:     { "\\textstyle", ISDISPLAYSTYLE,   0,NOVALUE, (HANDLER)(rastflags) },
        !           593:     { "\\displaysize",ISDISPLAYSIZE,NOVALUE,NOVALUE,(HANDLER)(rastflags)},
        !           594:     { "\\tiny",      ISFONTSIZE,       0,NOVALUE, (HANDLER)(rastflags) },
        !           595:     { "\\scriptsize",ISFONTSIZE,       0,NOVALUE, (HANDLER)(rastflags) },
        !           596:     { "\\footnotesize",ISFONTSIZE,     1,NOVALUE, (HANDLER)(rastflags) },
        !           597:     { "\\small",     ISFONTSIZE,       1,NOVALUE, (HANDLER)(rastflags) },
        !           598:     { "\\normalsize",ISFONTSIZE,       2,NOVALUE, (HANDLER)(rastflags) },
        !           599:     { "\\large",     ISFONTSIZE,       3,NOVALUE, (HANDLER)(rastflags) },
        !           600:     { "\\Large",     ISFONTSIZE,       4,NOVALUE, (HANDLER)(rastflags) },
        !           601:     { "\\LARGE",     ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
        !           602:     { "\\huge",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
        !           603:     { "\\Huge",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
        !           604:     { "\\HUGE",      ISFONTSIZE,       5,NOVALUE, (HANDLER)(rastflags) },
        !           605:     { "\\fontsize",  ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           606:     { "\\fs",        ISFONTSIZE, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           607:     { "\\shrinkfactor",ISSHRINK, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           608:     { "\\sf",        ISSHRINK,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           609:     { "\\light",     ISWEIGHT,         0,NOVALUE, (HANDLER)(rastflags) },
        !           610:     { "\\regular",   ISWEIGHT,         1,NOVALUE, (HANDLER)(rastflags) },
        !           611:     { "\\semibold",  ISWEIGHT,         2,NOVALUE, (HANDLER)(rastflags) },
        !           612:     { "\\bold",      ISWEIGHT,         3,NOVALUE, (HANDLER)(rastflags) },
        !           613:     { "\\fontweight",ISWEIGHT,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           614:     { "\\fw",        ISWEIGHT,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           615:     { "\\centerwt",  ISCENTERWT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           616:     { "\\adjacentwt",ISADJACENTWT,NOVALUE,NOVALUE,(HANDLER)(rastflags) },
        !           617:     { "\\cornerwt",  ISCORNERWT, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           618:     { "\\ssampling",  ISSUPER,         1,NOVALUE, (HANDLER)(rastflags) },
        !           619:     { "\\lowpass",    ISSUPER,         0,NOVALUE, (HANDLER)(rastflags) },
        !           620:     { "\\aaalg",ISAAALGORITHM,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           621:     { "\\pnmparams",PNMPARAMS,   NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           622:     { "\\opaque",    ISOPAQUE,         0,NOVALUE, (HANDLER)(rastflags) },
        !           623:     { "\\squash",    ISSQUASH,         3,1,       (HANDLER)(rastflags) },
        !           624:     { "\\nosquash",  ISSQUASH,         0,NOVALUE, (HANDLER)(rastflags) },
        !           625:     { "\\squashmargin",ISSQUASH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           626:     { "\\unitlength",UNITLENGTH, NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           627:     { "\\reverse",   ISREVERSE,  NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           628:     { "\\reversefg", ISREVERSE,        1,NOVALUE, (HANDLER)(rastflags) },
        !           629:     { "\\reversebg", ISREVERSE,        2,NOVALUE, (HANDLER)(rastflags) },
        !           630:     { "\\color",     ISCOLOR,    NOVALUE,NOVALUE, (HANDLER)(rastflags) },
        !           631:     { "\\red",       ISCOLOR,          1,NOVALUE, (HANDLER)(rastflags) },
        !           632:     { "\\green",     ISCOLOR,          2,NOVALUE, (HANDLER)(rastflags) },
        !           633:     { "\\blue",      ISCOLOR,          3,NOVALUE, (HANDLER)(rastflags) },
        !           634:     { "\\black",     ISCOLOR,          0,NOVALUE, (HANDLER)(rastflags) },
        !           635:     { "\\white",     ISCOLOR,          7,NOVALUE, (HANDLER)(rastflags) },
        !           636:     /* --- accents --- */
        !           637:     { "\\vec",	VECACCENT,    1,      0,  (HANDLER)(rastaccent) },
        !           638:     { "\\widevec", VECACCENT, 1,      0,  (HANDLER)(rastaccent) },
        !           639:     { "\\bar",	BARACCENT,    1,      0,  (HANDLER)(rastaccent) },
        !           640:     { "\\widebar", BARACCENT, 1,      0,  (HANDLER)(rastaccent) },
        !           641:     { "\\hat",	HATACCENT,    1,      0,  (HANDLER)(rastaccent) },
        !           642:     { "\\widehat", HATACCENT, 1,      0,  (HANDLER)(rastaccent) },
        !           643:     { "\\tilde", TILDEACCENT, 1,      0,  (HANDLER)(rastaccent) },
        !           644:     { "\\widetilde",TILDEACCENT,1,    0,  (HANDLER)(rastaccent) },
        !           645:     { "\\dot",	DOTACCENT,    1,      0,  (HANDLER)(rastaccent) },
        !           646:     { "\\widedot", DOTACCENT, 1,      0,  (HANDLER)(rastaccent) },
        !           647:     { "\\ddot",	DDOTACCENT,   1,      0,  (HANDLER)(rastaccent) },
        !           648:     { "\\wideddot",DDOTACCENT,1,      0,  (HANDLER)(rastaccent) },
        !           649:     /* --- math functions --- */
        !           650:     { "\\arccos",	1,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           651:     { "\\arcsin",	2,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           652:     { "\\arctan",	3,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           653:     { "\\arg",		4,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           654:     { "\\cos",		5,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           655:     { "\\cosh",		6,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           656:     { "\\cot",		7,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           657:     { "\\coth",		8,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           658:     { "\\csc",		9,   0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           659:     { "\\deg",		10,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           660:     { "\\det",		11,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           661:     { "\\dim",		12,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           662:     { "\\exp",		13,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           663:     { "\\gcd",		14,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           664:     { "\\hom",		15,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           665:     { "\\inf",		16,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           666:     { "\\ker",		17,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           667:     { "\\lg",		18,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           668:     { "\\lim",		19,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           669:     { "\\liminf",	20,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           670:     { "\\limsup",	21,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           671:     { "\\ln",		22,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           672:     { "\\log",		23,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           673:     { "\\max",		24,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           674:     { "\\min",		25,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           675:     { "\\Pr",		26,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           676:     { "\\sec",		27,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           677:     { "\\sin",		28,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           678:     { "\\sinh",		29,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           679:     { "\\sup",		30,  1,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           680:     { "\\tan",		31,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           681:     { "\\tanh",		32,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           682:     { "\\tr",		33,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           683:     { "\\pmod",		34,  0,	NOVALUE,  (HANDLER)(rastmathfunc) },
        !           684:     /* --- flush -- recognized but not yet handled by mimeTeX --- */
        !           685:     { "\\nooperation",0,NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           686:     { "\\bigskip",   0, NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           687:     { "\\phantom",   1, NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           688:     { "\\nocaching", 0, NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           689:     { "\\nonumber",  0, NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           690:     { "\\!",         0, NOVALUE,NOVALUE,  (HANDLER)(rastnoop) },
        !           691:     /* --------------------- C M M I --------------------------
        !           692:           symbol     charnum    family    class	    function
        !           693:     -------------------------------------------------------- */
        !           694:     /* --- uppercase greek letters --- */
        !           695:     { "\\Gamma",	0,	CMMI10,   VARIABLE,	NULL },
        !           696:     { "\\Delta",	1,	CMMI10,   VARIABLE,	NULL },
        !           697:     { "\\Theta",	2,	CMMI10,   VARIABLE,	NULL },
        !           698:     { "\\Lambda",	3,	CMMI10,   VARIABLE,	NULL },
        !           699:     { "\\Xi",		4,	CMMI10,   VARIABLE,	NULL },
        !           700:     { "\\Pi",		5,	CMMI10,   VARIABLE,	NULL },
        !           701:     { "\\Sigma",	6,	CMMI10,   VARIABLE,	NULL },
        !           702:     { "\\smallsum",	6,	CMMI10,   OPERATOR,	NULL },
        !           703:     { "\\Upsilon",	7,	CMMI10,   VARIABLE,	NULL },
        !           704:     { "\\Phi",		8,	CMMI10,   VARIABLE,	NULL },
        !           705:     { "\\Psi",		9,	CMMI10,   VARIABLE,	NULL },
        !           706:     { "\\Omega",	10,	CMMI10,   VARIABLE,	NULL },
        !           707:     /* --- lowercase greek letters --- */
        !           708:     { "\\alpha",	11,	CMMI10,   VARIABLE,	NULL },
        !           709:     { "\\beta",		12,	CMMI10,   VARIABLE,	NULL },
        !           710:     { "\\gamma",	13,	CMMI10,   VARIABLE,	NULL },
        !           711:     { "\\delta",	14,	CMMI10,   VARIABLE,	NULL },
        !           712:     { "\\epsilon",	15,	CMMI10,   VARIABLE,	NULL },
        !           713:     { "\\zeta",		16,	CMMI10,   VARIABLE,	NULL },
        !           714:     { "\\eta",		17,	CMMI10,   VARIABLE,	NULL },
        !           715:     { "\\theta",	18,	CMMI10,   VARIABLE,	NULL },
        !           716:     { "\\iota",		19,	CMMI10,   VARIABLE,	NULL },
        !           717:     { "\\kappa",	20,	CMMI10,   VARIABLE,	NULL },
        !           718:     { "\\lambda",	21,	CMMI10,   VARIABLE,	NULL },
        !           719:     { "\\mu",		22,	CMMI10,   VARIABLE,	NULL },
        !           720:     { "\\nu",		23,	CMMI10,   VARIABLE,	NULL },
        !           721:     { "\\xi",		24,	CMMI10,   VARIABLE,	NULL },
        !           722:     { "\\pi",		25,	CMMI10,   VARIABLE,	NULL },
        !           723:     { "\\rho",		26,	CMMI10,   VARIABLE,	NULL },
        !           724:     { "\\sigma",	27,	CMMI10,   VARIABLE,	NULL },
        !           725:     { "\\tau",		28,	CMMI10,   VARIABLE,	NULL },
        !           726:     { "\\upsilon",	29,	CMMI10,   VARIABLE,	NULL },
        !           727:     { "\\phi",		30,	CMMI10,   VARIABLE,	NULL },
        !           728:     { "\\chi",		31,	CMMI10,   VARIABLE,	NULL },
        !           729:     { "\\psi",		32,	CMMI10,   VARIABLE,	NULL },
        !           730:     { "\\omega",	33,	CMMI10,   VARIABLE,	NULL },
        !           731:     { "\\varepsilon",	34,	CMMI10,   VARIABLE,	NULL },
        !           732:     { "\\vartheta",	35,	CMMI10,   VARIABLE,	NULL },
        !           733:     { "\\varpi",	36,	CMMI10,   VARIABLE,	NULL },
        !           734:     { "\\varrho",	37,	CMMI10,   VARIABLE,	NULL },
        !           735:     { "\\varsigma",	38,	CMMI10,   VARIABLE,	NULL },
        !           736:     { "\\varphi",	39,	CMMI10,   VARIABLE,	NULL },
        !           737:     /* --- arrow relations --- */
        !           738:     { "\\leftharpoonup",    40,	CMMI10,   ARROW,	NULL },
        !           739:     { "\\leftharpoondown",  41,	CMMI10,   ARROW,	NULL },
        !           740:     { "\\rightharpoonup",   42,	CMMI10,   ARROW,	NULL },
        !           741:     { "\\rightharpoondown", 43,	CMMI10,   ARROW,	NULL },
        !           742:     /* --- punctuation --- */
        !           743:     { "`",		44,	CMMI10,   PUNCTION,	NULL },
        !           744:     { "\'",		45,	CMMI10,   PUNCTION,	NULL },
        !           745:     /* --- triangle binary relations --- */
        !           746:     { "\\triangleright",    46,	CMMI10,   RELATION,	NULL },
        !           747:     { "\\triangleleft",     47,	CMMI10,   RELATION,	NULL },
        !           748:     /* --- digits 0-9 --- */
        !           749:     { "\\0",		48,	CMMI10,   ORDINARY,	NULL },
        !           750:     { "\\1",		49,	CMMI10,   ORDINARY,	NULL },
        !           751:     { "\\2",		50,	CMMI10,   ORDINARY,	NULL },
        !           752:     { "\\3",		51,	CMMI10,   ORDINARY,	NULL },
        !           753:     { "\\4",		52,	CMMI10,   ORDINARY,	NULL },
        !           754:     { "\\5",		53,	CMMI10,   ORDINARY,	NULL },
        !           755:     { "\\6",		54,	CMMI10,   ORDINARY,	NULL },
        !           756:     { "\\7",		55,	CMMI10,   ORDINARY,	NULL },
        !           757:     { "\\8",		56,	CMMI10,   ORDINARY,	NULL },
        !           758:     { "\\9",		57,	CMMI10,   ORDINARY,	NULL },
        !           759:     /* --- punctuation --- */
        !           760:     { ".",		58,	CMMI10,   PUNCTION,	NULL },
        !           761:     { ",",		59,	CMMI10,   PUNCTION,	NULL },
        !           762:     /* --- operations (some ordinary) --- */
        !           763:     { "<",		60,	CMMI10,   OPENING,	NULL },
        !           764:     { "\\<",		60,	CMMI10,   OPENING,	NULL },
        !           765:     { "\\lt",		60,	CMMI10,   OPENING,	NULL },
        !           766:     { "/",		61,	CMMI10,   BINARYOP,	NULL },
        !           767:     { ">",		62,	CMMI10,   CLOSING,	NULL },
        !           768:     { "\\>",		62,	CMMI10,   CLOSING,	NULL },
        !           769:     { "\\gt",		62,	CMMI10,   CLOSING,	NULL },
        !           770:     { "\\star",		63,	CMMI10,   BINARYOP,	NULL },
        !           771:     { "\\partial",	64,	CMMI10,   VARIABLE,	NULL },
        !           772:     /* --- uppercase letters --- */
        !           773:     { "A",		65,	CMMI10,   VARIABLE,	NULL },
        !           774:     { "B",		66,	CMMI10,   VARIABLE,	NULL },
        !           775:     { "C",		67,	CMMI10,   VARIABLE,	NULL },
        !           776:     { "D",		68,	CMMI10,   VARIABLE,	NULL },
        !           777:     { "E",		69,	CMMI10,   VARIABLE,	NULL },
        !           778:     { "F",		70,	CMMI10,   VARIABLE,	NULL },
        !           779:     { "G",		71,	CMMI10,   VARIABLE,	NULL },
        !           780:     { "H",		72,	CMMI10,   VARIABLE,	NULL },
        !           781:     { "I",		73,	CMMI10,   VARIABLE,	NULL },
        !           782:     { "J",		74,	CMMI10,   VARIABLE,	NULL },
        !           783:     { "K",		75,	CMMI10,   VARIABLE,	NULL },
        !           784:     { "L",		76,	CMMI10,   VARIABLE,	NULL },
        !           785:     { "M",		77,	CMMI10,   VARIABLE,	NULL },
        !           786:     { "N",		78,	CMMI10,   VARIABLE,	NULL },
        !           787:     { "O",		79,	CMMI10,   VARIABLE,	NULL },
        !           788:     { "P",		80,	CMMI10,   VARIABLE,	NULL },
        !           789:     { "Q",		81,	CMMI10,   VARIABLE,	NULL },
        !           790:     { "R",		82,	CMMI10,   VARIABLE,	NULL },
        !           791:     { "S",		83,	CMMI10,   VARIABLE,	NULL },
        !           792:     { "T",		84,	CMMI10,   VARIABLE,	NULL },
        !           793:     { "U",		85,	CMMI10,   VARIABLE,	NULL },
        !           794:     { "V",		86,	CMMI10,   VARIABLE,	NULL },
        !           795:     { "W",		87,	CMMI10,   VARIABLE,	NULL },
        !           796:     { "X",		88,	CMMI10,   VARIABLE,	NULL },
        !           797:     { "Y",		89,	CMMI10,   VARIABLE,	NULL },
        !           798:     { "Z",		90,	CMMI10,   VARIABLE,	NULL },
        !           799:     /* --- miscellaneous symbols and relations --- */
        !           800:     { "\\flat",		91,	CMMI10,   ORDINARY,	NULL },
        !           801:     { "\\natural",	92,	CMMI10,   ORDINARY,	NULL },
        !           802:     { "\\sharp",	93,	CMMI10,   ORDINARY,	NULL },
        !           803:     { "\\smile",	94,	CMMI10,   RELATION,	NULL },
        !           804:     { "\\frown",	95,	CMMI10,   RELATION,	NULL },
        !           805:     { "\\ell",		96,	CMMI10,   ORDINARY,	NULL },
        !           806:     /* --- lowercase letters --- */
        !           807:     { "a",		97,	CMMI10,   VARIABLE,	NULL },
        !           808:     { "b",		98,	CMMI10,   VARIABLE,	NULL },
        !           809:     { "c",		99,	CMMI10,   VARIABLE,	NULL },
        !           810:     { "d",		100,	CMMI10,   VARIABLE,	NULL },
        !           811:     { "e",		101,	CMMI10,   VARIABLE,	NULL },
        !           812:     { "f",		102,	CMMI10,   VARIABLE,	NULL },
        !           813:     { "g",		103,	CMMI10,   VARIABLE,	NULL },
        !           814:     { "h",		104,	CMMI10,   VARIABLE,	NULL },
        !           815:     { "i",		105,	CMMI10,   VARIABLE,	NULL },
        !           816:     { "j",		106,	CMMI10,   VARIABLE,	NULL },
        !           817:     { "k",		107,	CMMI10,   VARIABLE,	NULL },
        !           818:     { "l",		108,	CMMI10,   VARIABLE,	NULL },
        !           819:     { "m",		109,	CMMI10,   VARIABLE,	NULL },
        !           820:     { "n",		110,	CMMI10,   VARIABLE,	NULL },
        !           821:     { "o",		111,	CMMI10,   VARIABLE,	NULL },
        !           822:     { "p",		112,	CMMI10,   VARIABLE,	NULL },
        !           823:     { "q",		113,	CMMI10,   VARIABLE,	NULL },
        !           824:     { "r",		114,	CMMI10,   VARIABLE,	NULL },
        !           825:     { "s",		115,	CMMI10,   VARIABLE,	NULL },
        !           826:     { "t",		116,	CMMI10,   VARIABLE,	NULL },
        !           827:     { "u",		117,	CMMI10,   VARIABLE,	NULL },
        !           828:     { "v",		118,	CMMI10,   VARIABLE,	NULL },
        !           829:     { "w",		119,	CMMI10,   VARIABLE,	NULL },
        !           830:     { "x",		120,	CMMI10,   VARIABLE,	NULL },
        !           831:     { "y",		121,	CMMI10,   VARIABLE,	NULL },
        !           832:     { "z",		122,	CMMI10,   VARIABLE,	NULL },
        !           833:     /* --- miscellaneous symbols and relations --- */
        !           834:     { "\\imath",	123,	CMMI10,   ORDINARY,	NULL },
        !           835:     { "\\jmath",	124,	CMMI10,   ORDINARY,	NULL },
        !           836:     { "\\wp",		125,	CMMI10,   ORDINARY,	NULL },
        !           837:     { "\\vec",		126,	CMMI10,   ORDINARY,	NULL },
        !           838:     /* --------------------------------------------------------
        !           839:           symbol     charnum    family    class	    function
        !           840:     -------------------------------------------------------- */
        !           841:     /* --- operations --- */
        !           842:     { "-",		0,	CMSY10,   BINARYOP,	NULL },
        !           843:     { "\\cdot",		1,	CMSY10,   BINARYOP,	NULL },
        !           844:     { "\\times",	2,	CMSY10,   BINARYOP,	NULL },
        !           845:     { "\\ast",		3,	CMSY10,   BINARYOP,	NULL },
        !           846:     { "\\div",		4,	CMSY10,   BINARYOP,	NULL },
        !           847:     { "\\diamond",	5,	CMSY10,   BINARYOP,	NULL },
        !           848:     { "\\pm",		6,	CMSY10,   BINARYOP,	NULL },
        !           849:     { "\\mp",		7,	CMSY10,   BINARYOP,	NULL },
        !           850:     { "\\oplus",	8,	CMSY10,   BINARYOP,	NULL },
        !           851:     { "\\ominus",	9,	CMSY10,   BINARYOP,	NULL },
        !           852:     { "\\otimes",	10,	CMSY10,   BINARYOP,	NULL },
        !           853:     { "\\oslash",	11,	CMSY10,   BINARYOP,	NULL },
        !           854:     { "\\odot",		12,	CMSY10,   BINARYOP,	NULL },
        !           855:     { "\\bigcirc",	13,	CMSY10,   BINARYOP,	NULL },
        !           856:     { "\\circ",		14,	CMSY10,   BINARYOP,	NULL },
        !           857:     { "\\bullet",	15,	CMSY10,   BINARYOP,	NULL },
        !           858:     /* --- relations --- */
        !           859:     { "\\asymp",	16,	CMSY10,   RELATION,	NULL },
        !           860:     { "\\equiv",	17,	CMSY10,   RELATION,	NULL },
        !           861:     { "\\subseteq",	18,	CMSY10,   RELATION,	NULL },
        !           862:     { "\\supseteq",	19,	CMSY10,   RELATION,	NULL },
        !           863:     { "\\leq",		20,	CMSY10,   RELATION,	NULL },
        !           864:     { "\\geq",		21,	CMSY10,   RELATION,	NULL },
        !           865:     { "\\preceq",	22,	CMSY10,   RELATION,	NULL },
        !           866:     { "\\succeq",	23,	CMSY10,   RELATION,	NULL },
        !           867:     { "\\sim",		24,	CMSY10,   RELATION,	NULL },
        !           868:     { "\\approx",	25,	CMSY10,   RELATION,	NULL },
        !           869:     { "\\subset",	26,	CMSY10,   RELATION,	NULL },
        !           870:     { "\\supset",	27,	CMSY10,   RELATION,	NULL },
        !           871:     { "\\ll",		28,	CMSY10,   RELATION,	NULL },
        !           872:     { "\\gg",		29,	CMSY10,   RELATION,	NULL },
        !           873:     { "\\prec",		30,	CMSY10,   RELATION,	NULL },
        !           874:     { "\\succ",		31,	CMSY10,   RELATION,	NULL },
        !           875:     /* --- (mostly) arrows --- */
        !           876:     { "\\leftarrow",	32,	CMSY10,   ARROW,	NULL },
        !           877:     { "\\rightarrow",	33,	CMSY10,   ARROW,	NULL },
        !           878:     { "\\to",		33,	CMSY10,   ARROW,	NULL },
        !           879:     { "\\mapsto",	33,	CMSY10,   ARROW,	NULL },
        !           880:     { "\\uparrow",	34,	CMSY10,   ARROW,	NULL },
        !           881:     { "\\downarrow",	35,	CMSY10,   ARROW,	NULL },
        !           882:     { "\\leftrightarrow",   36,	CMSY10,   ARROW,	NULL },
        !           883:     { "\\nearrow",	37,	CMSY10,   ARROW,	NULL },
        !           884:     { "\\searrow",	38,	CMSY10,   ARROW,	NULL },
        !           885:     { "\\simeq",	39,	CMSY10,   RELATION,	NULL },
        !           886:     { "\\Leftarrow",	40,	CMSY10,   ARROW,	NULL },
        !           887:     { "\\Rightarrow",	41,	CMSY10,   ARROW,	NULL },
        !           888:     { "\\Uparrow",	42,	CMSY10,   ARROW,	NULL },
        !           889:     { "\\Downarrow",	43,	CMSY10,   ARROW,	NULL },
        !           890:     { "\\Leftrightarrow",   44,	CMSY10,   ARROW,	NULL },
        !           891:     { "\\nwarrow",	45,	CMSY10,   ARROW,	NULL },
        !           892:     { "\\swarrow",	46,	CMSY10,   ARROW,	NULL },
        !           893:     { "\\propto",	47,	CMSY10,   RELATION,	NULL },
        !           894:     /* --- symbols --- */
        !           895:     { "\\prime",	48,	CMSY10,   ORDINARY,	NULL },
        !           896:     { "\\infty",	49,	CMSY10,   ORDINARY,	NULL },
        !           897:     /* --- relations --- */
        !           898:     { "\\in",		50,	CMSY10,   RELATION,	NULL },
        !           899:     { "\\ni",		51,	CMSY10,   RELATION,	NULL },
        !           900:     /* --- symbols --- */
        !           901:     { "\\triangle",	    52,	CMSY10,   ORDINARY,	NULL },
        !           902:     { "\\bigtriangleup",    52,	CMSY10,   ORDINARY,	NULL },
        !           903:     { "\\bigtriangledown",  53,	CMSY10,   ORDINARY,	NULL },
        !           904:     { "/",		54,	CMSY10,   BINARYOP,	NULL },
        !           905:     { "\\'",		55,	CMSY10,   ORDINARY,	NULL },
        !           906:     { "\\forall",	56,	CMSY10,   OPERATOR,	NULL },
        !           907:     { "\\exists",	57,	CMSY10,   OPERATOR,	NULL },
        !           908:     { "\\neg",		58,	CMSY10,   OPERATOR,	NULL },
        !           909:     { "\\emptyset",	59,	CMSY10,   ORDINARY,	NULL },
        !           910:     { "\\Re",		60,	CMSY10,   ORDINARY,	NULL },
        !           911:     { "\\Im",		61,	CMSY10,   ORDINARY,	NULL },
        !           912:     { "\\top",		62,	CMSY10,   ORDINARY,	NULL },
        !           913:     { "\\bot",		63,	CMSY10,   ORDINARY,	NULL },
        !           914:     { "\\perp",		63,	CMSY10,   BINARYOP,	NULL },
        !           915:     { "\\aleph",	64,	CMSY10,   ORDINARY,	NULL },
        !           916:     /* --- calligraphic letters (we use \\calA...\\calZ --- */
        !           917:     { "\\calA",		65,	CMSY10,   VARIABLE,	NULL },
        !           918:     { "\\calB",		66,	CMSY10,   VARIABLE,	NULL },
        !           919:     { "\\calC",		67,	CMSY10,   VARIABLE,	NULL },
        !           920:     { "\\calD",		68,	CMSY10,   VARIABLE,	NULL },
        !           921:     { "\\calE",		69,	CMSY10,   VARIABLE,	NULL },
        !           922:     { "\\calF",		70,	CMSY10,   VARIABLE,	NULL },
        !           923:     { "\\calG",		71,	CMSY10,   VARIABLE,	NULL },
        !           924:     { "\\calH",		72,	CMSY10,   VARIABLE,	NULL },
        !           925:     { "\\calI",		73,	CMSY10,   VARIABLE,	NULL },
        !           926:     { "\\calJ",		74,	CMSY10,   VARIABLE,	NULL },
        !           927:     { "\\calK",		75,	CMSY10,   VARIABLE,	NULL },
        !           928:     { "\\calL",		76,	CMSY10,   VARIABLE,	NULL },
        !           929:     { "\\calM",		77,	CMSY10,   VARIABLE,	NULL },
        !           930:     { "\\calN",		78,	CMSY10,   VARIABLE,	NULL },
        !           931:     { "\\calO",		79,	CMSY10,   VARIABLE,	NULL },
        !           932:     { "\\calP",		80,	CMSY10,   VARIABLE,	NULL },
        !           933:     { "\\calQ",		81,	CMSY10,   VARIABLE,	NULL },
        !           934:     { "\\calR",		82,	CMSY10,   VARIABLE,	NULL },
        !           935:     { "\\calS",		83,	CMSY10,   VARIABLE,	NULL },
        !           936:     { "\\calT",		84,	CMSY10,   VARIABLE,	NULL },
        !           937:     { "\\calU",		85,	CMSY10,   VARIABLE,	NULL },
        !           938:     { "\\calV",		86,	CMSY10,   VARIABLE,	NULL },
        !           939:     { "\\calW",		87,	CMSY10,   VARIABLE,	NULL },
        !           940:     { "\\calX",		88,	CMSY10,   VARIABLE,	NULL },
        !           941:     { "\\calY",		89,	CMSY10,   VARIABLE,	NULL },
        !           942:     { "\\calZ",		90,	CMSY10,   VARIABLE,	NULL },
        !           943:     /* --- operations and relations --- */
        !           944:     { "\\cup",		91,	CMSY10,   OPERATOR,	NULL },
        !           945:     { "\\cap",		92,	CMSY10,   OPERATOR,	NULL },
        !           946:     { "\\uplus",	93,	CMSY10,   OPERATOR,	NULL },
        !           947:     { "\\wedge",	94,	CMSY10,   OPERATOR,	NULL },
        !           948:     { "\\vee",		95,	CMSY10,   OPERATOR,	NULL },
        !           949:     { "\\vdash",	96,	CMSY10,   RELATION,	NULL },
        !           950:     { "\\dashv",	97,	CMSY10,   RELATION,	NULL },
        !           951:     /* --- brackets --- */
        !           952:     { "\\lfloor",	98,	CMSY10,   OPENING,	NULL },
        !           953:     { "\\rfloor",	99,	CMSY10,   CLOSING,	NULL },
        !           954:     { "\\lceil",	100,	CMSY10,   OPENING,	NULL },
        !           955:     { "\\rceil",	101,	CMSY10,   CLOSING,	NULL },
        !           956:     { "\\lbrace",	102,	CMSY10,   OPENING,	NULL },
        !           957:     { "{",		102,	CMSY10,   OPENING,	NULL },
        !           958:     { "\\{",		102,	CMSY10,   OPENING,	NULL },
        !           959:     { "\\rbrace",	103,	CMSY10,   CLOSING,	NULL },
        !           960:     { "}",		103,	CMSY10,   CLOSING,	NULL },
        !           961:     { "\\}",		103,	CMSY10,   CLOSING,	NULL },
        !           962:     { "\\langle",	104,	CMSY10,   OPENING,	NULL },
        !           963:     { "\\rangle",	105,	CMSY10,   CLOSING,	NULL },
        !           964:     { "\\mid",		106,	CMSY10,   ORDINARY,	NULL },
        !           965:     { "|",		106,	CMSY10,   BINARYOP,	NULL },
        !           966:     { "\\parallel",	107,	CMSY10,   BINARYOP,	NULL },
        !           967:     { "\\|",		107,	CMSY10,   BINARYOP,	NULL },
        !           968:     /* --- arrows --- */
        !           969:     { "\\updownarrow",	108,	CMSY10,   ARROW,	NULL },
        !           970:     { "\\Updownarrow",	109,	CMSY10,   ARROW,	NULL },
        !           971:     /* --- symbols and operations and relations --- */
        !           972:     { "\\setminus",	110,	CMSY10,   BINARYOP,	NULL },
        !           973:     { "\\backslash",	110,	CMSY10,   BINARYOP,	NULL },
        !           974:     { "\\wr",		111,	CMSY10,   BINARYOP,	NULL },
        !           975:     { "\\surd",		112,	CMSY10,   OPERATOR,	NULL },
        !           976:     { "\\amalg",	113,	CMSY10,   BINARYOP,	NULL },
        !           977:     { "\\nabla",	114,	CMSY10,   VARIABLE,	NULL },
        !           978:     { "\\smallint",	115,	CMSY10,   OPERATOR,	NULL },
        !           979:     { "\\sqcup",	116,	CMSY10,   OPERATOR,	NULL },
        !           980:     { "\\sqcap",	117,	CMSY10,   OPERATOR,	NULL },
        !           981:     { "\\sqsubseteq",	118,	CMSY10,   RELATION,	NULL },
        !           982:     { "\\sqsupseteq",	119,	CMSY10,   RELATION,	NULL },
        !           983:     /* --- special characters --- */
        !           984:     { "\\S",		120,	CMSY10,   ORDINARY,	NULL },
        !           985:     { "\\dag",		121,	CMSY10,   ORDINARY,	NULL },
        !           986:     { "\\dagger",	121,	CMSY10,   ORDINARY,	NULL },
        !           987:     { "\\ddag",		122,	CMSY10,   ORDINARY,	NULL },
        !           988:     { "\\ddagger",	122,	CMSY10,   ORDINARY,	NULL },
        !           989:     { "\\P",		123,	CMSY10,   ORDINARY,	NULL },
        !           990:     { "\\clubsuit",	124,	CMSY10,   ORDINARY,	NULL },
        !           991:     { "\\Diamond",	125,	CMSY10,   ORDINARY,	NULL },
        !           992:     { "\\Heart",	126,	CMSY10,   ORDINARY,	NULL },
        !           993:     { "\\spadesuit",	127,	CMSY10,   ORDINARY,	NULL },
        !           994:     /* --------------------------------------------------------
        !           995:           symbol     charnum    family    class	    function
        !           996:     -------------------------------------------------------- */
        !           997:     /* --- foreign letters --- */
        !           998:     { "\\ss",		25,	CMR10,   ORDINARY,	NULL },
        !           999:     { "\\ae",		26,	CMR10,   ORDINARY,	NULL },
        !          1000:     { "\\oe",		27,	CMR10,   ORDINARY,	NULL },
        !          1001:     { "\\AE",		29,	CMR10,   ORDINARY,	NULL },
        !          1002:     { "\\OE",		30,	CMR10,   ORDINARY,	NULL },
        !          1003:     /* --- digits 0-9 --- */
        !          1004:     { "0",		48,	CMR10,   ORDINARY,	NULL },
        !          1005:     { "1",		49,	CMR10,   ORDINARY,	NULL },
        !          1006:     { "2",		50,	CMR10,   ORDINARY,	NULL },
        !          1007:     { "3",		51,	CMR10,   ORDINARY,	NULL },
        !          1008:     { "4",		52,	CMR10,   ORDINARY,	NULL },
        !          1009:     { "5",		53,	CMR10,   ORDINARY,	NULL },
        !          1010:     { "6",		54,	CMR10,   ORDINARY,	NULL },
        !          1011:     { "7",		55,	CMR10,   ORDINARY,	NULL },
        !          1012:     { "8",		56,	CMR10,   ORDINARY,	NULL },
        !          1013:     { "9",		57,	CMR10,   ORDINARY,	NULL },
        !          1014:     /* --- symbols, relations, etc --- */
        !          1015:     { "!",		33,	CMR10,   BINARYOP,	NULL },
        !          1016:     { "\"",		34,	CMR10,   ORDINARY,	NULL },
        !          1017:     { "\\quote",	34,	CMR10,   ORDINARY,	NULL },
        !          1018:     { "#",		35,	CMR10,   BINARYOP,	NULL },
        !          1019:     { "\\#",		35,	CMR10,   BINARYOP,	NULL },
        !          1020:     { "$",		36,	CMR10,   BINARYOP,	NULL },
        !          1021:     { "\\$",		36,	CMR10,   BINARYOP,	NULL },
        !          1022:     { "%",		37,	CMR10,   BINARYOP,	NULL },
        !          1023:     { "\\%",		37,	CMR10,   BINARYOP,	NULL },
        !          1024:     { "\\percent",	37,	CMR10,   BINARYOP,	NULL },
        !          1025:     { "&",		38,	CMR10,   BINARYOP,	NULL },
        !          1026:     { "\\&",		38,	CMR10,   BINARYOP,	NULL },
        !          1027:     { "\'",		39,	CMR10,   BINARYOP,	NULL },
        !          1028:     { "\\apostrophe",	39,	CMR10,   ORDINARY,	NULL },
        !          1029:     { "(",		40,	CMR10,   OPENING,	NULL },
        !          1030:     { "\\(",		40,	CMR10,   OPENING,	NULL },
        !          1031:     { ")",		41,	CMR10,   CLOSING,	NULL },
        !          1032:     { "\\)",		41,	CMR10,   CLOSING,	NULL },
        !          1033:     { "*",		42,	CMR10,   BINARYOP,	NULL },
        !          1034:     { "+",		43,	CMR10,   BINARYOP,	NULL },
        !          1035:     { "/",		47,	CMR10,   BINARYOP,	NULL },
        !          1036:     { ":",		58,	CMR10,   BINARYOP,	NULL },
        !          1037:     { ";",		59,	CMR10,   BINARYOP,	NULL },
        !          1038:     { "=",		61,	CMR10,   RELATION,	NULL },
        !          1039:     { "?",		63,	CMR10,   BINARYOP,	NULL },
        !          1040:     { "@",		64,	CMR10,   BINARYOP,	NULL },
        !          1041:     { "[",		91,	CMR10,   OPENING,	NULL },
        !          1042:     { "\\[",		91,	CMR10,   OPENING,	NULL },
        !          1043:     { "]",		93,	CMR10,   CLOSING,	NULL },
        !          1044:     { "\\]",		93,	CMR10,   CLOSING,	NULL },
        !          1045:     { "\\^",		94,	CMR10,   BINARYOP,	NULL },
        !          1046:     { "\\~",		126,	CMR10,   OPERATOR,	NULL },
        !          1047:     /* --- uppercase letters --- */
        !          1048:     { "A",		65,	CMR10,   VARIABLE,	NULL },
        !          1049:     { "B",		66,	CMR10,   VARIABLE,	NULL },
        !          1050:     { "C",		67,	CMR10,   VARIABLE,	NULL },
        !          1051:     { "D",		68,	CMR10,   VARIABLE,	NULL },
        !          1052:     { "E",		69,	CMR10,   VARIABLE,	NULL },
        !          1053:     { "F",		70,	CMR10,   VARIABLE,	NULL },
        !          1054:     { "G",		71,	CMR10,   VARIABLE,	NULL },
        !          1055:     { "H",		72,	CMR10,   VARIABLE,	NULL },
        !          1056:     { "I",		73,	CMR10,   VARIABLE,	NULL },
        !          1057:     { "J",		74,	CMR10,   VARIABLE,	NULL },
        !          1058:     { "K",		75,	CMR10,   VARIABLE,	NULL },
        !          1059:     { "L",		76,	CMR10,   VARIABLE,	NULL },
        !          1060:     { "M",		77,	CMR10,   VARIABLE,	NULL },
        !          1061:     { "N",		78,	CMR10,   VARIABLE,	NULL },
        !          1062:     { "O",		79,	CMR10,   VARIABLE,	NULL },
        !          1063:     { "P",		80,	CMR10,   VARIABLE,	NULL },
        !          1064:     { "Q",		81,	CMR10,   VARIABLE,	NULL },
        !          1065:     { "R",		82,	CMR10,   VARIABLE,	NULL },
        !          1066:     { "S",		83,	CMR10,   VARIABLE,	NULL },
        !          1067:     { "T",		84,	CMR10,   VARIABLE,	NULL },
        !          1068:     { "U",		85,	CMR10,   VARIABLE,	NULL },
        !          1069:     { "V",		86,	CMR10,   VARIABLE,	NULL },
        !          1070:     { "W",		87,	CMR10,   VARIABLE,	NULL },
        !          1071:     { "X",		88,	CMR10,   VARIABLE,	NULL },
        !          1072:     { "Y",		89,	CMR10,   VARIABLE,	NULL },
        !          1073:     { "Z",		90,	CMR10,   VARIABLE,	NULL },
        !          1074:     /* --- lowercase letters --- */
        !          1075:     { "a",		97,	CMR10,   VARIABLE,	NULL },
        !          1076:     { "b",		98,	CMR10,   VARIABLE,	NULL },
        !          1077:     { "c",		99,	CMR10,   VARIABLE,	NULL },
        !          1078:     { "d",		100,	CMR10,   VARIABLE,	NULL },
        !          1079:     { "e",		101,	CMR10,   VARIABLE,	NULL },
        !          1080:     { "f",		102,	CMR10,   VARIABLE,	NULL },
        !          1081:     { "g",		103,	CMR10,   VARIABLE,	NULL },
        !          1082:     { "h",		104,	CMR10,   VARIABLE,	NULL },
        !          1083:     { "i",		105,	CMR10,   VARIABLE,	NULL },
        !          1084:     { "j",		106,	CMR10,   VARIABLE,	NULL },
        !          1085:     { "k",		107,	CMR10,   VARIABLE,	NULL },
        !          1086:     { "l",		108,	CMR10,   VARIABLE,	NULL },
        !          1087:     { "m",		109,	CMR10,   VARIABLE,	NULL },
        !          1088:     { "n",		110,	CMR10,   VARIABLE,	NULL },
        !          1089:     { "o",		111,	CMR10,   VARIABLE,	NULL },
        !          1090:     { "p",		112,	CMR10,   VARIABLE,	NULL },
        !          1091:     { "q",		113,	CMR10,   VARIABLE,	NULL },
        !          1092:     { "r",		114,	CMR10,   VARIABLE,	NULL },
        !          1093:     { "s",		115,	CMR10,   VARIABLE,	NULL },
        !          1094:     { "t",		116,	CMR10,   VARIABLE,	NULL },
        !          1095:     { "u",		117,	CMR10,   VARIABLE,	NULL },
        !          1096:     { "v",		118,	CMR10,   VARIABLE,	NULL },
        !          1097:     { "w",		119,	CMR10,   VARIABLE,	NULL },
        !          1098:     { "x",		120,	CMR10,   VARIABLE,	NULL },
        !          1099:     { "y",		121,	CMR10,   VARIABLE,	NULL },
        !          1100:     { "z",		122,	CMR10,   VARIABLE,	NULL },
        !          1101:     /* --------------------------------------------------------
        !          1102:           symbol     charnum    family    class	    function
        !          1103:     -------------------------------------------------------- */
        !          1104:     /* --- parens ()'s --- */
        !          1105:     { "\\big(",		0,	CMEX10,   OPENING,	NULL },
        !          1106:     { "\\big)",		1,	CMEX10,   CLOSING,	NULL },
        !          1107:     { "\\Big(",		16,	CMEX10,   OPENING,	NULL },
        !          1108:     { "\\Big)",		17,	CMEX10,   CLOSING,	NULL },
        !          1109:     { "\\bigg(",	18,	CMEX10,   OPENING,	NULL },
        !          1110:     { "\\bigg)",	19,	CMEX10,   CLOSING,	NULL },
        !          1111:     { "\\Bigg(",	32,	CMEX10,   OPENING,	NULL },
        !          1112:     { "\\Bigg)",	33,	CMEX10,   CLOSING,	NULL },
        !          1113:     { "\\bigl(",	0,	CMEX10,   OPENING,	NULL },
        !          1114:     { "\\bigr)",	1,	CMEX10,   CLOSING,	NULL },
        !          1115:     { "\\Bigl(",	16,	CMEX10,   OPENING,	NULL },
        !          1116:     { "\\Bigr)",	17,	CMEX10,   CLOSING,	NULL },
        !          1117:     { "\\biggl(",	18,	CMEX10,   OPENING,	NULL },
        !          1118:     { "\\biggr)",	19,	CMEX10,   CLOSING,	NULL },
        !          1119:     { "\\Biggl(",	32,	CMEX10,   OPENING,	NULL },
        !          1120:     { "\\Biggr)",	33,	CMEX10,   CLOSING,	NULL },
        !          1121:     /* --- brackets []'s --- */
        !          1122:     { "\\big[",		2,	CMEX10,   OPENING,	NULL },
        !          1123:     { "\\big]",		3,	CMEX10,   CLOSING,	NULL },
        !          1124:     { "\\bigg[",	20,	CMEX10,   OPENING,	NULL },
        !          1125:     { "\\bigg]",	21,	CMEX10,   CLOSING,	NULL },
        !          1126:     { "\\Bigg[",	34,	CMEX10,   OPENING,	NULL },
        !          1127:     { "\\Bigg]",	35,	CMEX10,   CLOSING,	NULL },
        !          1128:     { "\\Big[",		104,	CMEX10,   OPENING,	NULL },
        !          1129:     { "\\Big]",		105,	CMEX10,   CLOSING,	NULL },
        !          1130:     { "\\bigl[",	2,	CMEX10,   OPENING,	NULL },
        !          1131:     { "\\bigr]",	3,	CMEX10,   CLOSING,	NULL },
        !          1132:     { "\\biggl[",	20,	CMEX10,   OPENING,	NULL },
        !          1133:     { "\\biggr]",	21,	CMEX10,   CLOSING,	NULL },
        !          1134:     { "\\Biggl[",	34,	CMEX10,   OPENING,	NULL },
        !          1135:     { "\\Biggr]",	35,	CMEX10,   CLOSING,	NULL },
        !          1136:     { "\\Bigl[",	104,	CMEX10,   OPENING,	NULL },
        !          1137:     { "\\Bigr]",	105,	CMEX10,   CLOSING,	NULL },
        !          1138:     /* --- braces {}'s --- */
        !          1139:     { "\\big{",		8,	CMEX10,   OPENING,	NULL },
        !          1140:     { "\\big}",		9,	CMEX10,   CLOSING,	NULL },
        !          1141:     { "\\bigg{",	26,	CMEX10,   OPENING,	NULL },
        !          1142:     { "\\bigg}",	27,	CMEX10,   CLOSING,	NULL },
        !          1143:     { "\\Bigg{",	40,	CMEX10,   OPENING,	NULL },
        !          1144:     { "\\Bigg}",	41,	CMEX10,   CLOSING,	NULL },
        !          1145:     { "\\Big{",		110,	CMEX10,   OPENING,	NULL },
        !          1146:     { "\\Big}",		111,	CMEX10,   CLOSING,	NULL },
        !          1147:     { "\\bigl{",	8,	CMEX10,   OPENING,	NULL },
        !          1148:     { "\\bigr}",	9,	CMEX10,   CLOSING,	NULL },
        !          1149:     { "\\biggl{",	26,	CMEX10,   OPENING,	NULL },
        !          1150:     { "\\biggr}",	27,	CMEX10,   CLOSING,	NULL },
        !          1151:     { "\\Biggl{",	40,	CMEX10,   OPENING,	NULL },
        !          1152:     { "\\Biggr}",	41,	CMEX10,   CLOSING,	NULL },
        !          1153:     { "\\Bigl{",	110,	CMEX10,   OPENING,	NULL },
        !          1154:     { "\\Bigr}",	111,	CMEX10,   CLOSING,	NULL },
        !          1155:     { "\\big\\{",	8,	CMEX10,   OPENING,	NULL },
        !          1156:     { "\\big\\}",	9,	CMEX10,   CLOSING,	NULL },
        !          1157:     { "\\bigg\\{",	26,	CMEX10,   OPENING,	NULL },
        !          1158:     { "\\bigg\\}",	27,	CMEX10,   CLOSING,	NULL },
        !          1159:     { "\\Bigg\\{",	40,	CMEX10,   OPENING,	NULL },
        !          1160:     { "\\Bigg\\}",	41,	CMEX10,   CLOSING,	NULL },
        !          1161:     { "\\Big\\{",	110,	CMEX10,   OPENING,	NULL },
        !          1162:     { "\\Big\\}",	111,	CMEX10,   CLOSING,	NULL },
        !          1163:     { "\\bigl\\{",	8,	CMEX10,   OPENING,	NULL },
        !          1164:     { "\\bigr\\}",	9,	CMEX10,   CLOSING,	NULL },
        !          1165:     { "\\biggl\\{",	26,	CMEX10,   OPENING,	NULL },
        !          1166:     { "\\biggr\\}",	27,	CMEX10,   CLOSING,	NULL },
        !          1167:     { "\\Biggl\\{",	40,	CMEX10,   OPENING,	NULL },
        !          1168:     { "\\Biggr\\}",	41,	CMEX10,   CLOSING,	NULL },
        !          1169:     { "\\Bigl\\{",	110,	CMEX10,   OPENING,	NULL },
        !          1170:     { "\\Bigr\\}",	111,	CMEX10,   CLOSING,	NULL },
        !          1171:     { "\\big\\lbrace",	8,	CMEX10,   OPENING,	NULL },
        !          1172:     { "\\big\\rbrace",	9,	CMEX10,   CLOSING,	NULL },
        !          1173:     { "\\bigg\\lbrace",	26,	CMEX10,   OPENING,	NULL },
        !          1174:     { "\\bigg\\rbrace",	27,	CMEX10,   CLOSING,	NULL },
        !          1175:     { "\\Bigg\\lbrace",	40,	CMEX10,   OPENING,	NULL },
        !          1176:     { "\\Bigg\\rbrace",	41,	CMEX10,   CLOSING,	NULL },
        !          1177:     { "\\Big\\lbrace",	110,	CMEX10,   OPENING,	NULL },
        !          1178:     { "\\Big\\rbrace",	111,	CMEX10,   CLOSING,	NULL },
        !          1179:     /* --- angles <>'s --- */
        !          1180:     { "\\big<",		10,	CMEX10,   OPENING,	NULL },
        !          1181:     { "\\big>",		11,	CMEX10,   CLOSING,	NULL },
        !          1182:     { "\\bigg<",	28,	CMEX10,   OPENING,	NULL },
        !          1183:     { "\\bigg>",	29,	CMEX10,   CLOSING,	NULL },
        !          1184:     { "\\Bigg<",	42,	CMEX10,   OPENING,	NULL },
        !          1185:     { "\\Bigg>",	43,	CMEX10,   CLOSING,	NULL },
        !          1186:     { "\\Big<",		68,	CMEX10,   OPENING,	NULL },
        !          1187:     { "\\Big>",		69,	CMEX10,   CLOSING,	NULL },
        !          1188:     { "\\bigl<",	10,	CMEX10,   OPENING,	NULL },
        !          1189:     { "\\bigr>",	11,	CMEX10,   CLOSING,	NULL },
        !          1190:     { "\\biggl<",	28,	CMEX10,   OPENING,	NULL },
        !          1191:     { "\\biggr>",	29,	CMEX10,   CLOSING,	NULL },
        !          1192:     { "\\Biggl<",	42,	CMEX10,   OPENING,	NULL },
        !          1193:     { "\\Biggr>",	43,	CMEX10,   CLOSING,	NULL },
        !          1194:     { "\\Bigl<",	68,	CMEX10,   OPENING,	NULL },
        !          1195:     { "\\Bigr>",	69,	CMEX10,   CLOSING,	NULL },
        !          1196:     { "\\big\\langle",	10,	CMEX10,   OPENING,	NULL },
        !          1197:     { "\\big\\rangle",	11,	CMEX10,   CLOSING,	NULL },
        !          1198:     { "\\bigg\\langle",	28,	CMEX10,   OPENING,	NULL },
        !          1199:     { "\\bigg\\rangle",	29,	CMEX10,   CLOSING,	NULL },
        !          1200:     { "\\Bigg\\langle",	42,	CMEX10,   OPENING,	NULL },
        !          1201:     { "\\Bigg\\rangle",	43,	CMEX10,   CLOSING,	NULL },
        !          1202:     { "\\Big\\langle",	68,	CMEX10,   OPENING,	NULL },
        !          1203:     { "\\Big\\rangle",	69,	CMEX10,   CLOSING,	NULL },
        !          1204:     /* --- hats ^ --- */
        !          1205:     { "^",		98,	CMEX10,   OPERATOR,	NULL },
        !          1206:     { "^",		99,	CMEX10,   OPERATOR,	NULL },
        !          1207:     { "^",		100,	CMEX10,   OPERATOR,	NULL },
        !          1208:     /* --- tildes --- */
        !          1209:     { "~",		101,	CMEX10,   OPERATOR,	NULL },
        !          1210:     { "~",		102,	CMEX10,   OPERATOR,	NULL },
        !          1211:     { "~",		103,	CMEX10,   OPERATOR,	NULL },
        !          1212:     /* --- \sum, \int and other (displaymath) symbols --- */
        !          1213:     { "\\bigsqcup",	70,	CMEX10,   LOWERBIG,	NULL },
        !          1214:     { "\\Bigsqcup",	71,	CMEX10,   UPPERBIG,	NULL },
        !          1215:     { "\\oint",		72,	CMEX10,   OPERATOR,	NULL },
        !          1216:     { "\\bigoint",	72,	CMEX10,   LOWERBIG,	NULL },
        !          1217:     { "\\Bigoint",	73,	CMEX10,   UPPERBIG,	NULL },
        !          1218:     { "\\bigodot",	74,	CMEX10,   LOWERBIG,	NULL },
        !          1219:     { "\\Bigodot",	75,	CMEX10,   UPPERBIG,	NULL },
        !          1220:     { "\\bigoplus",	76,	CMEX10,   LOWERBIG,	NULL },
        !          1221:     { "\\Bigoplus",	77,	CMEX10,   UPPERBIG,	NULL },
        !          1222:     { "\\bigotimes",	78,	CMEX10,   LOWERBIG,	NULL },
        !          1223:     { "\\Bigotimes",	79,	CMEX10,   UPPERBIG,	NULL },
        !          1224:     { "\\sum",		80,	CMEX10,   OPERATOR,	NULL },
        !          1225:     { "\\bigsum",	80,	CMEX10,   LOWERBIG,	NULL },
        !          1226:     { "\\prod",		81,	CMEX10,   OPERATOR,	NULL },
        !          1227:     { "\\bigprod",	81,	CMEX10,   LOWERBIG,	NULL },
        !          1228:     { "\\int",		82,	CMEX10,   OPERATOR,	NULL },
        !          1229:     { "\\bigint",	82,	CMEX10,   LOWERBIG,	NULL },
        !          1230:     { "\\bigcup",	83,	CMEX10,   LOWERBIG,	NULL },
        !          1231:     { "\\bigcap",	84,	CMEX10,   LOWERBIG,	NULL },
        !          1232:     { "\\biguplus",	85,	CMEX10,   LOWERBIG,	NULL },
        !          1233:     { "\\bigwedge",	86,	CMEX10,   LOWERBIG,	NULL },
        !          1234:     { "\\bigvee",	87,	CMEX10,   LOWERBIG,	NULL },
        !          1235:     { "\\Bigsum",	88,	CMEX10,   UPPERBIG,	NULL },
        !          1236:     { "\\big\\sum",	88,	CMEX10,   UPPERBIG,	NULL },
        !          1237:     { "\\Big\\sum",	88,	CMEX10,   UPPERBIG,	NULL },
        !          1238:     { "\\bigg\\sum",	88,	CMEX10,   UPPERBIG,	NULL },
        !          1239:     { "\\Bigg\\sum",	88,	CMEX10,   UPPERBIG,	NULL },
        !          1240:     { "\\Bigprod",	89,	CMEX10,   UPPERBIG,	NULL },
        !          1241:     { "\\Bigint",	90,	CMEX10,   UPPERBIG,	NULL },
        !          1242:     { "\\big\\int",	90,	CMEX10,   UPPERBIG,	NULL },
        !          1243:     { "\\Big\\int",	90,	CMEX10,   UPPERBIG,	NULL },
        !          1244:     { "\\bigg\\int",	90,	CMEX10,   UPPERBIG,	NULL },
        !          1245:     { "\\Bigg\\int",	90,	CMEX10,   UPPERBIG,	NULL },
        !          1246:     { "\\Bigcup",	91,	CMEX10,   UPPERBIG,	NULL },
        !          1247:     { "\\Bigcap",	92,	CMEX10,   UPPERBIG,	NULL },
        !          1248:     { "\\Biguplus",	93,	CMEX10,   UPPERBIG,	NULL },
        !          1249:     { "\\Bigwedge",	94,	CMEX10,   UPPERBIG,	NULL },
        !          1250:     { "\\Bigvee",	95,	CMEX10,   UPPERBIG,	NULL },
        !          1251:     { "\\coprod",	96,	CMEX10,   LOWERBIG,	NULL },
        !          1252:     { "\\bigcoprod",	96,	CMEX10,   LOWERBIG,	NULL },
        !          1253:     { "\\Bigcoprod",	97,	CMEX10,   UPPERBIG,	NULL },
        !          1254:     /* --------------------------------------------------------
        !          1255:           symbol     charnum    family    class	    function
        !          1256:     -------------------------------------------------------- */
        !          1257:     /* --- rsfs script letters (we use \\scrA...\\scrZ --- */
        !          1258:     { "\\scrA",		 0,	RSFS10,   VARIABLE,	NULL },
        !          1259:     { "\\scrB",		 1,	RSFS10,   VARIABLE,	NULL },
        !          1260:     { "\\scrC",		 2,	RSFS10,   VARIABLE,	NULL },
        !          1261:     { "\\scrD",		 3,	RSFS10,   VARIABLE,	NULL },
        !          1262:     { "\\scrE",		 4,	RSFS10,   VARIABLE,	NULL },
        !          1263:     { "\\scrF",		 5,	RSFS10,   VARIABLE,	NULL },
        !          1264:     { "\\scrG",		 6,	RSFS10,   VARIABLE,	NULL },
        !          1265:     { "\\scrH",		 7,	RSFS10,   VARIABLE,	NULL },
        !          1266:     { "\\scrI",		 8,	RSFS10,   VARIABLE,	NULL },
        !          1267:     { "\\scrJ",		 9,	RSFS10,   VARIABLE,	NULL },
        !          1268:     { "\\scrK",		10,	RSFS10,   VARIABLE,	NULL },
        !          1269:     { "\\scrL",		11,	RSFS10,   VARIABLE,	NULL },
        !          1270:     { "\\scrM",		12,	RSFS10,   VARIABLE,	NULL },
        !          1271:     { "\\scrN",		13,	RSFS10,   VARIABLE,	NULL },
        !          1272:     { "\\scrO",		14,	RSFS10,   VARIABLE,	NULL },
        !          1273:     { "\\scrP",		15,	RSFS10,   VARIABLE,	NULL },
        !          1274:     { "\\scrQ",		16,	RSFS10,   VARIABLE,	NULL },
        !          1275:     { "\\scrR",		17,	RSFS10,   VARIABLE,	NULL },
        !          1276:     { "\\scrS",		18,	RSFS10,   VARIABLE,	NULL },
        !          1277:     { "\\scrT",		19,	RSFS10,   VARIABLE,	NULL },
        !          1278:     { "\\scrU",		20,	RSFS10,   VARIABLE,	NULL },
        !          1279:     { "\\scrV",		21,	RSFS10,   VARIABLE,	NULL },
        !          1280:     { "\\scrW",		22,	RSFS10,   VARIABLE,	NULL },
        !          1281:     { "\\scrX",		23,	RSFS10,   VARIABLE,	NULL },
        !          1282:     { "\\scrY",		24,	RSFS10,   VARIABLE,	NULL },
        !          1283:     { "\\scrZ",		25,	RSFS10,   VARIABLE,	NULL },
        !          1284:     /* -------------------- B B O L D -------------------------
        !          1285:           symbol     charnum    family    class	    function
        !          1286:     -------------------------------------------------------- */
        !          1287:     /* --- uppercase greek letters --- */
        !          1288:     { "\\Gamma",	0,     BBOLD10,   VARIABLE,	NULL },
        !          1289:     { "\\Delta",	1,     BBOLD10,   VARIABLE,	NULL },
        !          1290:     { "\\Theta",	2,     BBOLD10,   VARIABLE,	NULL },
        !          1291:     { "\\Lambda",	3,     BBOLD10,   VARIABLE,	NULL },
        !          1292:     { "\\Xi",		4,     BBOLD10,   VARIABLE,	NULL },
        !          1293:     { "\\Pi",		5,     BBOLD10,   VARIABLE,	NULL },
        !          1294:     { "\\Sigma",	6,     BBOLD10,   VARIABLE,	NULL },
        !          1295:     { "\\smallsum",	6,     BBOLD10,   OPERATOR,	NULL },
        !          1296:     { "\\Upsilon",	7,     BBOLD10,   VARIABLE,	NULL },
        !          1297:     { "\\Phi",		8,     BBOLD10,   VARIABLE,	NULL },
        !          1298:     { "\\Psi",		9,     BBOLD10,   VARIABLE,	NULL },
        !          1299:     { "\\Omega",	10,    BBOLD10,   VARIABLE,	NULL },
        !          1300:     /* --- lowercase greek letters --- */
        !          1301:     { "\\alpha",	11,    BBOLD10,   VARIABLE,	NULL },
        !          1302:     { "\\beta",		12,    BBOLD10,   VARIABLE,	NULL },
        !          1303:     { "\\gamma",	13,    BBOLD10,   VARIABLE,	NULL },
        !          1304:     { "\\delta",	14,    BBOLD10,   VARIABLE,	NULL },
        !          1305:     { "\\epsilon",	15,    BBOLD10,   VARIABLE,	NULL },
        !          1306:     { "\\zeta",		16,    BBOLD10,   VARIABLE,	NULL },
        !          1307:     { "\\eta",		17,    BBOLD10,   VARIABLE,	NULL },
        !          1308:     { "\\theta",	18,    BBOLD10,   VARIABLE,	NULL },
        !          1309:     { "\\iota",		19,    BBOLD10,   VARIABLE,	NULL },
        !          1310:     { "\\kappa",	20,    BBOLD10,   VARIABLE,	NULL },
        !          1311:     { "\\lambda",	21,    BBOLD10,   VARIABLE,	NULL },
        !          1312:     { "\\mu",		22,    BBOLD10,   VARIABLE,	NULL },
        !          1313:     { "\\nu",		23,    BBOLD10,   VARIABLE,	NULL },
        !          1314:     { "\\xi",		24,    BBOLD10,   VARIABLE,	NULL },
        !          1315:     { "\\pi",		25,    BBOLD10,   VARIABLE,	NULL },
        !          1316:     { "\\rho",		26,    BBOLD10,   VARIABLE,	NULL },
        !          1317:     { "\\sigma",	27,    BBOLD10,   VARIABLE,	NULL },
        !          1318:     { "\\tau",		28,    BBOLD10,   VARIABLE,	NULL },
        !          1319:     { "\\upsilon",	29,    BBOLD10,   VARIABLE,	NULL },
        !          1320:     { "\\phi",		30,    BBOLD10,   VARIABLE,	NULL },
        !          1321:     { "\\chi",		31,    BBOLD10,   VARIABLE,	NULL },
        !          1322:     { "\\psi",		32,    BBOLD10,   VARIABLE,	NULL },
        !          1323:     { "\\omega",	127,   BBOLD10,   VARIABLE,	NULL },
        !          1324:     /* --- digits 0-9 --- */
        !          1325:     { "0",		48,    BBOLD10,   ORDINARY,	NULL },
        !          1326:     { "1",		49,    BBOLD10,   ORDINARY,	NULL },
        !          1327:     { "2",		50,    BBOLD10,   ORDINARY,	NULL },
        !          1328:     { "3",		51,    BBOLD10,   ORDINARY,	NULL },
        !          1329:     { "4",		52,    BBOLD10,   ORDINARY,	NULL },
        !          1330:     { "5",		53,    BBOLD10,   ORDINARY,	NULL },
        !          1331:     { "6",		54,    BBOLD10,   ORDINARY,	NULL },
        !          1332:     { "7",		55,    BBOLD10,   ORDINARY,	NULL },
        !          1333:     { "8",		56,    BBOLD10,   ORDINARY,	NULL },
        !          1334:     { "9",		57,    BBOLD10,   ORDINARY,	NULL },
        !          1335:     { "\\0",		48,    BBOLD10,   ORDINARY,	NULL },
        !          1336:     { "\\1",		49,    BBOLD10,   ORDINARY,	NULL },
        !          1337:     { "\\2",		50,    BBOLD10,   ORDINARY,	NULL },
        !          1338:     { "\\3",		51,    BBOLD10,   ORDINARY,	NULL },
        !          1339:     { "\\4",		52,    BBOLD10,   ORDINARY,	NULL },
        !          1340:     { "\\5",		53,    BBOLD10,   ORDINARY,	NULL },
        !          1341:     { "\\6",		54,    BBOLD10,   ORDINARY,	NULL },
        !          1342:     { "\\7",		55,    BBOLD10,   ORDINARY,	NULL },
        !          1343:     { "\\8",		56,    BBOLD10,   ORDINARY,	NULL },
        !          1344:     { "\\9",		57,    BBOLD10,   ORDINARY,	NULL },
        !          1345:     /* --- uppercase letters --- */
        !          1346:     { "A",		65,    BBOLD10,   VARIABLE,	NULL },
        !          1347:     { "B",		66,    BBOLD10,   VARIABLE,	NULL },
        !          1348:     { "C",		67,    BBOLD10,   VARIABLE,	NULL },
        !          1349:     { "D",		68,    BBOLD10,   VARIABLE,	NULL },
        !          1350:     { "E",		69,    BBOLD10,   VARIABLE,	NULL },
        !          1351:     { "F",		70,    BBOLD10,   VARIABLE,	NULL },
        !          1352:     { "G",		71,    BBOLD10,   VARIABLE,	NULL },
        !          1353:     { "H",		72,    BBOLD10,   VARIABLE,	NULL },
        !          1354:     { "I",		73,    BBOLD10,   VARIABLE,	NULL },
        !          1355:     { "J",		74,    BBOLD10,   VARIABLE,	NULL },
        !          1356:     { "K",		75,    BBOLD10,   VARIABLE,	NULL },
        !          1357:     { "L",		76,    BBOLD10,   VARIABLE,	NULL },
        !          1358:     { "M",		77,    BBOLD10,   VARIABLE,	NULL },
        !          1359:     { "N",		78,    BBOLD10,   VARIABLE,	NULL },
        !          1360:     { "O",		79,    BBOLD10,   VARIABLE,	NULL },
        !          1361:     { "P",		80,    BBOLD10,   VARIABLE,	NULL },
        !          1362:     { "Q",		81,    BBOLD10,   VARIABLE,	NULL },
        !          1363:     { "R",		82,    BBOLD10,   VARIABLE,	NULL },
        !          1364:     { "S",		83,    BBOLD10,   VARIABLE,	NULL },
        !          1365:     { "T",		84,    BBOLD10,   VARIABLE,	NULL },
        !          1366:     { "U",		85,    BBOLD10,   VARIABLE,	NULL },
        !          1367:     { "V",		86,    BBOLD10,   VARIABLE,	NULL },
        !          1368:     { "W",		87,    BBOLD10,   VARIABLE,	NULL },
        !          1369:     { "X",		88,    BBOLD10,   VARIABLE,	NULL },
        !          1370:     { "Y",		89,    BBOLD10,   VARIABLE,	NULL },
        !          1371:     { "Z",		90,    BBOLD10,   VARIABLE,	NULL },
        !          1372:     /* --- lowercase letters --- */
        !          1373:     { "a",		97,    BBOLD10,   VARIABLE,	NULL },
        !          1374:     { "b",		98,    BBOLD10,   VARIABLE,	NULL },
        !          1375:     { "c",		99,    BBOLD10,   VARIABLE,	NULL },
        !          1376:     { "d",		100,   BBOLD10,   VARIABLE,	NULL },
        !          1377:     { "e",		101,   BBOLD10,   VARIABLE,	NULL },
        !          1378:     { "f",		102,   BBOLD10,   VARIABLE,	NULL },
        !          1379:     { "g",		103,   BBOLD10,   VARIABLE,	NULL },
        !          1380:     { "h",		104,   BBOLD10,   VARIABLE,	NULL },
        !          1381:     { "i",		105,   BBOLD10,   VARIABLE,	NULL },
        !          1382:     { "j",		106,   BBOLD10,   VARIABLE,	NULL },
        !          1383:     { "k",		107,   BBOLD10,   VARIABLE,	NULL },
        !          1384:     { "l",		108,   BBOLD10,   VARIABLE,	NULL },
        !          1385:     { "m",		109,   BBOLD10,   VARIABLE,	NULL },
        !          1386:     { "n",		110,   BBOLD10,   VARIABLE,	NULL },
        !          1387:     { "o",		111,   BBOLD10,   VARIABLE,	NULL },
        !          1388:     { "p",		112,   BBOLD10,   VARIABLE,	NULL },
        !          1389:     { "q",		113,   BBOLD10,   VARIABLE,	NULL },
        !          1390:     { "r",		114,   BBOLD10,   VARIABLE,	NULL },
        !          1391:     { "s",		115,   BBOLD10,   VARIABLE,	NULL },
        !          1392:     { "t",		116,   BBOLD10,   VARIABLE,	NULL },
        !          1393:     { "u",		117,   BBOLD10,   VARIABLE,	NULL },
        !          1394:     { "v",		118,   BBOLD10,   VARIABLE,	NULL },
        !          1395:     { "w",		119,   BBOLD10,   VARIABLE,	NULL },
        !          1396:     { "x",		120,   BBOLD10,   VARIABLE,	NULL },
        !          1397:     { "y",		121,   BBOLD10,   VARIABLE,	NULL },
        !          1398:     { "z",		122,   BBOLD10,   VARIABLE,	NULL },
        !          1399:     /* --- symbols, relations, etc --- */
        !          1400:     { "!",		33,    BBOLD10,   BINARYOP,	NULL },
        !          1401:     { "#",		35,    BBOLD10,   BINARYOP,	NULL },
        !          1402:     { "\\#",		35,    BBOLD10,   BINARYOP,	NULL },
        !          1403:     { "$",		36,    BBOLD10,   BINARYOP,	NULL },
        !          1404:     { "\\$",		36,    BBOLD10,   BINARYOP,	NULL },
        !          1405:     { "%",		37,    BBOLD10,   BINARYOP,	NULL },
        !          1406:     { "\\%",		37,    BBOLD10,   BINARYOP,	NULL },
        !          1407:     { "\\percent",	37,    BBOLD10,   BINARYOP,	NULL },
        !          1408:     { "&",		38,    BBOLD10,   BINARYOP,	NULL },
        !          1409:     { "\\&",		38,    BBOLD10,   BINARYOP,	NULL },
        !          1410:     { "\'",		39,    BBOLD10,   BINARYOP,	NULL },
        !          1411:     { "\\apostrophe",	39,    BBOLD10,   ORDINARY,	NULL },
        !          1412:     { "(",		40,    BBOLD10,   OPENING,	NULL },
        !          1413:     { "\\(",		40,    BBOLD10,   OPENING,	NULL },
        !          1414:     { ")",		41,    BBOLD10,   CLOSING,	NULL },
        !          1415:     { "\\)",		41,    BBOLD10,   CLOSING,	NULL },
        !          1416:     { "*",		42,    BBOLD10,   BINARYOP,	NULL },
        !          1417:     { "+",		43,    BBOLD10,   BINARYOP,	NULL },
        !          1418:     { ",",		44,    BBOLD10,   PUNCTION,	NULL },
        !          1419:     { "-",		45,    BBOLD10,   BINARYOP,	NULL },
        !          1420:     { ".",		46,    BBOLD10,   PUNCTION,	NULL },
        !          1421:     { "/",		47,    BBOLD10,   BINARYOP,	NULL },
        !          1422:     { ":",		58,    BBOLD10,   BINARYOP,	NULL },
        !          1423:     { ";",		59,    BBOLD10,   BINARYOP,	NULL },
        !          1424:     { "<",		60,    BBOLD10,   RELATION,	NULL },
        !          1425:     { "\\<",		60,    BBOLD10,   RELATION,	NULL },
        !          1426:     { "\\cdot",		61,    BBOLD10,   BINARYOP,	NULL },
        !          1427:     { ">",		62,    BBOLD10,   RELATION,	NULL },
        !          1428:     { "\\>",		62,    BBOLD10,   RELATION,	NULL },
        !          1429:     { "?",		63,    BBOLD10,   BINARYOP,	NULL },
        !          1430:     { "@",		64,    BBOLD10,   BINARYOP,	NULL },
        !          1431:     { "[",		91,    BBOLD10,   OPENING,	NULL },
        !          1432:     { "\\[",		91,    BBOLD10,   OPENING,	NULL },
        !          1433:     { "\\\\",		92,    BBOLD10,   OPENING,	NULL },
        !          1434:     { "\\backslash",	92,    BBOLD10,   OPENING,	NULL },
        !          1435:     { "]",		93,    BBOLD10,   CLOSING,	NULL },
        !          1436:     { "\\]",		93,    BBOLD10,   CLOSING,	NULL },
        !          1437:     { "|",		124,   BBOLD10,   BINARYOP,	NULL },
        !          1438:     { "\\-",		123,   BBOLD10,   BINARYOP,	NULL },
        !          1439:     /* --- trailer record --- */
        !          1440:     { NULL,		-999,	-999,	-999,		NULL }
        !          1441:  }
        !          1442: #endif /* INITVALS */
        !          1443:  ; /* --- end-of-symtable[] --- */
        !          1444: 
        !          1445: /* ======================= END-OF-FILE MIMETEX.H ========================= */
        !          1446: #endif
        !          1447: 

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