STRUCTURE Math;
DEFPRES MathP;
ATTR
  INLSTYLE = YES;
CONST
	EmptyContents = '';
	EmptyHead  = ' ';
	ModuloConstant = ' mod ';
STRUCT

  Math =
          LIST OF (Choice_math) ;

  Choice_math =
	  CASE OF
	  Textual;
	  Emb_tex;
	  Fraction;
	  Subscr_d;
	  Root_cst;
	  Int_cst;
	  Sum_cst;
	  Stackrel;
	  Superline;
	  Lim_like;
	  Delimiters;
	  Array;
	  Thin_space;
	  Medium_space;
	  Thick_space;
	  Cdots;
	  Ldots;
	  Vdots;
	  Ddots;
	  B_Modulo;
	  P_Modulo;
	  Invoc_Fct;
	  END ;

  Textual (ATTR CALLIGRAPHIC = Activec; NEGATED = Activen; ACCENT = Hat, 
		Acute, Tilde, Bar, Vec, Dot, Ddot, 
		Sprime, Dprime, Grave; SHAVE = Actives) =
	  TEXT ;
  Emb_tex =
	  TEXT ;
  Fraction =
	  BEGIN
	  Numera_r;
	  Denomi_r;
	  END ;
  Subscr_d =
	  BEGIN
	  Main;
	  ? Presub;
	  ? Presup;
	  {/?} Subscr;
	  {/?} Supscr;
	  END ;
  Root_cst =
	  BEGIN
	  ? Root_ord;
	  Root_obj;
	  END ;
  Int_cst =
	  BEGIN
	  L_part_a;
	  Integrnd;
	  END ;
  Sum_cst =
	  BEGIN
	  L_part_b;
	  Operand;
	  END ;
  Stackrel =
	  BEGIN
	  Upper_a;
	  Lower_a;
	  END ;
  Superline (ATTR LINE_TYPE = OverBar, UnderBar, OverBrace, UnderBrace,
			      WideHat, WideTilde) =
	  LIST OF (Choice_math);
  Lim_like =
	  BEGIN
	  L_part_c;
	  R_part_c;
	  END ;
  Delimiters =
	  BEGIN
	  Left_del;
	  Included_1;
	  Right_del;
	  END ;
  Thin_space =
	  CONSTANT EmptyContents ;
  Medium_space =
	  CONSTANT EmptyContents ;
  Thick_space =
	  CONSTANT EmptyContents ;
  Cdots =
	  CONSTANT EmptyContents ;
  Ldots =
	  CONSTANT EmptyContents ;
  Vdots =
	  CONSTANT EmptyContents ;
  Ddots =
	  CONSTANT EmptyContents ;
  Invoc_Fct =
	  BEGIN
	  Function_name;
	  Parameter;
	  END;
  B_Modulo =
	  CONSTANT ModuloConstant;
  P_Modulo =
	  LIST OF (Choice_math) ;
  Numera_r =
	  LIST OF (Choice_math) ;
  Denomi_r =
	  LIST OF (Choice_math) ;
  Main =
	  LIST OF (Choice_math) ;
  Presub =
	  LIST OF (Choice_math) ;
  Presup =
	  LIST OF (Choice_math) ;
  Subscr =
	  LIST OF (Choice_math) ;
  Supscr =
	  LIST OF (Choice_math) ;
  Root_ord =
	  LIST OF (Choice_math) ;
  Root_obj =
	  LIST OF (Choice_math) ;
  L_part_a =
	  BEGIN
	  Intsym;
	  {/?} Lower_bd;
	  {/?} Upper_bd;
	  END ;
  Integrnd =
	  LIST OF (Choice_math) ;
  Intsym (ATTR INTTYPE = Single, Double, Contour) =
	  CONSTANT EmptyContents 
	  WITH INTTYPE ?= Single;
  Lower_bd =
	  LIST OF (Choice_math) ;
  Upper_bd =
	  LIST OF (Choice_math) ;
  L_part_b =
	  BEGIN
	  Sumsym;
	  {/?} Lower_ex;
	  {/?} Upper_ex;
	  END ;
  Operand =
	  LIST OF (Choice_math) ;
  Sumsym =
	  SYMBOL ;
  Lower_ex =
	  LIST OF (Choice_math) ;
  Upper_ex =
	  LIST OF (Choice_math) ;
  Lower_a =
	  LIST OF (Choice_math) ;
  Upper_a =
	  LIST OF (Choice_math) ;
  L_part_c (ATTR LIMITOP = Inf, Limm, Liminf, Limsup, 
		   Maxx, Minn, Sup) =
	  BEGIN
	  Range;
	  END 
	  WITH LIMITOP ?= Limm;
  R_part_c =
	  LIST OF (Choice_math) ;
  Function_name = TEXT;
  Parameter =
	  LIST OF (Choice_math) ;
  Range =
	  LIST OF (Choice_math) ;
  Left_del =
	  SYMBOL ;
  Included_1 =
	  LIST OF (Choice_math) ;
  Right_del =
	  SYMBOL ;

  Array (ATTR ROW_VALIGN = Row_top, Row_bottom) =
	BEGIN
	Array_head = LIST OF (Column_head);
	Array_body = LIST OF (Array_row);
	END;

  Column_head (ATTR COLUMN_WIDTH = INTEGER;
  		    ROW_ALIGN = Row_left, Row_center, Row_right) =
	CONSTANT EmptyHead;

  Array_row = LIST OF (Array_cell);

  Array_cell (ATTR REF_COLUMN = REFERENCE(Column_head)) =
	LIST OF (Choice_math);

EXCEPT

#include "exc_matrix.h"


    Math:	MoveResize;
    Textual:	MoveResize;
    Fraction:	MoveResize;
    Subscr_d:	MoveResize;
    Root_cst:	MoveResize;
    Int_cst:	MoveResize;
    Sum_cst:	MoveResize;
    Stackrel:	MoveResize;
    Superline:	MoveResize;
    Lim_like:	MoveResize;
    Delimiters:	MoveResize;
    P_Modulo:	MoveResize;
    Numera_r:	MoveResize;
    Denomi_r:	MoveResize;
    Main:	MoveResize;
    Presub:	MoveResize;
    Presup:	MoveResize;
    Subscr:	MoveResize;
    Supscr:	MoveResize;
    Root_ord:	MoveResize;
    Root_obj:	MoveResize;
    L_part_a:	MoveResize;
    Integrnd:	MoveResize;
    Lower_bd:	MoveResize;
    Upper_bd:	MoveResize;
    L_part_b:	MoveResize;
    Operand:	MoveResize;
    Lower_ex:	MoveResize;
    Upper_ex:	MoveResize;
    Lower_a:	MoveResize;
    Upper_a:	MoveResize;
    L_part_c:	MoveResize;
    R_part_c:	MoveResize;
    Parameter:	MoveResize;
    Range:	MoveResize;
    Included_1:	MoveResize;
    Array:	MoveResize;
    Column_head:MoveResize, Nohmove, Novmove, Nocut;
    Array_head:	MoveResize, Nohmove, Novmove, Nocut;
    Array_row:	MoveResize, Nohmove, EXC_ID_Tableau;
    Array_cell:	MoveResize, NoHMove, NoHResize, EXC_ID_Tableau, EXC_ID_Cellule;

    COLUMN_WIDTH:NewWidth;
    REF_COLUMN:	Invisible;

END
