	{ Ce schema decrit la structure d une Table

	Ce schema suppose un certain nombre de traitements particuliers
	qui sont definis dans les modules tableau.c et tableau2.c de 
        la librairie libtable l editeur.}

STRUCTURE Table;

DEFPRES TableP;

CONST
    CsteBas = ' ';

STRUCT
    Table (ATTR Type\240tableau = Lignes\240et\240colonnes, Lignes, Colonnes, 
				  Tabulations ;
		Encadrer = Absent, Fin, Epais, Pointill\351;

		Alignement\240horiz\240 = A\240gauche, Centr\351, A\240droite;

		Alignement\240vertic\240 = Vers\240le\240haut, Centr\351, 
					   \240Vers\240le\240bas) =
 	BEGIN
	En\240T\352te;
	Les\240lignes;
	Bas\240tableau;
	END;

    Bas\240tableau = CONSTANT CsteBas; { pour pouvoir marquer le bas des }
		  { filets verticaux en bas de page ou en fin de tableau }

    En\240T\352te (ATTR Filet\240inf\351rieur = Absent,Fin,Epais,Pointill\351;
     			Alignement\240horiz\240;
		   	Alignement\240vertic\240) =
 	BEGIN
	Titre\240tableau;
	Les\240colonnes;
	END;

{ Le Titre du Tableau }

    Titre\240tableau (ATTR Largeur\240titre = INTEGER;
			  Alignement\240horiz\240;
			  Alignement\240vertic\240) =
 	BEGIN
	Titre\240des\240colonnes ;	
	Titre\240des\240lignes ;
	END;

    Titre\240des\240colonnes (ATTR Alignement\240horiz = A\240gauche,
					  Centr\351, A\240droite;
		             	   Alignement\240vertic = Vers\240le\240haut, 
					  Centr\351, \240Vers\240le\240bas) =
 	Cellule;

    Titre\240des\240lignes (ATTR Alignement\240horiz;
			       	 Alignement\240vertic) =
 	Cellule;

{ Les Colonnes du Tableau }

    Les\240colonnes (ATTR Filet\240gauche = Absent, Fin, Epais, Pointill\351;
	  		  Alignement\240horiz\240;
			  Alignement\240vertic\240) =
	LIST [2..*] OF (Colonne);

    Colonne = CASE OF
		Colonne\240simple;
		Colonne\240compos\351e;
		END;

    Colonne\240simple (ATTR Largeur\240colonne = INTEGER;
			    Filet\240droit = Absent, Fin, Epais, Pointill\351;
			    Alignement\240horiz\240;
			    Alignement\240vertic\240) =
 	BEGIN
	Titre\240col\240simple;
	END;

   Titre\240col\240simple(ATTR Alignement\240horiz;
			       Alignement\240vertic) =
	Cellule;

   Colonne\240compos\351e (ATTR Filet\240droit;
			    	Filet\240bas = Absent, Fin, Epais,Pointill\351;
			      	Alignement\240horiz\240;
			      	Alignement\240vertic\240) =
 	BEGIN
	Titre\240col\240compos\351e;
	Sous\240colonnes;
	END;

    Titre\240col\240compos\351e(ATTR Alignement\240horiz;
				     Alignement\240vertic) =
 	Cellule;

    Sous\240colonnes(ATTR Alignement\240horiz\240;
			  Alignement\240vertic\240) =
 	LIST [2..*] OF (Colonne);

{ Les Lignes }

    Les\240lignes (ATTR Filet\240haut = Absent,	Fin, Epais, Pointill\351;
			Alignement\240horiz\240;
			Alignement\240vertic\240) =
 	LIST [2..*] OF (Ligne);
	
    Ligne = CASE OF
		Ligne\240simple;
		Ligne\240compos\351e;
		END;

    Ligne\240simple (ATTR Filet\240bas\240 = Absent, Fin, Epais, Pointill\351;
			  Alignement\240horiz\240 ;
			  Alignement\240vertic\240) =
	BEGIN
	Titre\240ligne\240simple;
	Corps\240ligne;
	END;

    Titre\240ligne\240simple (ATTR Ref\240titre\240tableau =
						REFERENCE(Titre\240tableau);
				   Pourcent\240largeur = INTEGER;
				   Alignement\240horiz;
				   Alignement\240vertic) =
	Cellule;

   Corps\240ligne = LIST [2..*] OF (Cellule);

   Ligne\240compos\351e (ATTR Filet\240droit\240 = Absent, Fin, Epais,
						   Pointill\351;
		    	      Filet\240bas\240;
			      Alignement\240horiz\240;
			      Alignement\240vertic\240) =
	BEGIN
	Titre\240ligne\240comp;
	Sous\240lignes;
	END;

   Titre\240ligne\240comp (ATTR Ref\240titre\240tableau;
				Pourcent\240largeur;
				Alignement\240horiz;
				Alignement\240vertic) =
	Cellule;

   Sous\240lignes (ATTR Alignement\240horiz\240;
			Alignement\240vertic\240) =
 	LIST [2..*] OF (Ligne);

{ Les Cellules }
			
    Cellule (ATTR Ref\240colonne = REFERENCE(Colonne\240simple);
		 Alignement\240horiz;
		 Alignement\240vertic;
		 Extension\240horiz = REFERENCE(Cellule);
		 Extension\240vertic= REFERENCE(Ligne\240simple) ) =
	LIST OF (El\351ment\240de\240base);

    El\351ment\240de\240base = UNIT;

UNITS
    Autre = NATURE;

EXPORT
   PICTURE_UNIT,
   Table; 

EXCEPT

{ FORMAL DEFINITIONS OF EXCEPTIONS  (DO NOT REMOVE THIS LINE)
#include "exc_Table.h"
{  END OF FORMAL DEFINITIONS	(DO NOT REMOVE THIS LINE) }

{ Exceptions sur les types d elements }

     Table:		MoveResize,
			PageBreak,
     			EXC_TR_Table_CREATION,
			EXC_ID_Table;
     Bas\240tableau: 	MoveResize,
			NoCut,
			NoSelect,
			PageBreakRepBefore,
			EXC_ID_FootTable;
     CsteBas:		NoCreate, NoSelect;
     En\240T\352te:	MoveResize,
			NoCut, NoHMove,
			PageBreakRepetition,
			EXC_TR_Table_ATTRIBUT,
       			EXC_ID_Headings;
     Titre\240tableau:	MoveResize,
			NoCut,
			EXC_ID_Title_Table,
			EXC_TR_Table_ATTRIBUT;
     Titre\240des\240colonnes: MoveResize,
			NoHMove, NoHResize, NoVResize, NoCut,
			EXC_TR_Cell_ATTRIBUT;
     Titre\240des\240lignes: MoveResize,
			NoHMove, NoHResize, NoVResize, NoCut,
			EXC_TR_Cell_ATTRIBUT;
     Les\240colonnes:	MoveResize,
			NoHMove, NoCut,
			EXC_ID_The_Columns,
			EXC_TR_Table_SELECT,
			EXC_TR_Table_ATTRIBUT;
     Les\240lignes:	MoveResize,
			NoHMove, NoCut,
			PageBreakAllowed,
			EXC_ID_The_Raws,
			EXC_TR_Table_ATTRIBUT;
     Colonne:		MoveResize,
			EXC_ID_Column;
     Colonne\240simple:	MoveResize,
			NoHMove,
			EXC_TR_Table_CREATION,
			EXC_TR_Simple_Column_SUPPRES,
			EXC_TR_Table_SELECT,
			EXC_TR_Table_PASTE,
			EXC_TR_Cell_ATTRIBUT,
			EXC_ID_Simple_Column;
     Titre\240col\240simple: MoveResize,
			NoHMove, NoHResize, NoVResize,NoCut,
			EXC_ID_Title_Simple_Col;
     Colonne\240compos\351e: MoveResize,
			NoHMove,
			EXC_TR_Table_CREATION,
			EXC_TR_Compound_Column_SUPPRES,
			EXC_TR_Table_SELECT,
			EXC_TR_Table_PASTE,
			EXC_TR_Table_ATTRIBUT,
			EXC_ID_Compound_Column;
     Titre\240col\240compos\351e: MoveResize,
			NoHMove, NoHResize, NoVResize,NoCut,
			EXC_ID_Title_Compound_Col,
			EXC_TR_Cell_ATTRIBUT;
     Sous\240colonnes:	MoveResize,
			NoHMove,
			EXC_TR_Table_SELECT,
			EXC_ID_Sub_Columns;
     Ligne:		MoveResize,
			PageBreakPlace,
     			EXC_ID_Raw;
     Ligne\240simple:	MoveResize,
			NoHMove,
			EXC_TR_Table_CREATION,
			EXC_TR_Table_PASTE,
			EXC_ID_Simple_Raw;
     Titre\240ligne\240simple:	MoveResize,
			NoHMove, NoHResize, NoVResize,
			EXC_ID_Title_Raw,
			EXC_TR_Cell_ATTRIBUT;
     Corps\240ligne:	MoveResize,
			NoCut, Hidden,
			EXC_ID_Body_Raw;
     Ligne\240compos\351e: MoveResize,
			NoHMove, NoHResize, NoVResize,
			EXC_TR_Table_CREATION,
			EXC_TR_Table_PASTE,
			EXC_TR_Table_ATTRIBUT,
			EXC_ID_Compound_Raw;
     Titre\240ligne\240comp: MoveResize,
			NoHMove,
			EXC_ID_Title_Compound_Raw,
			EXC_TR_Cell_ATTRIBUT;
     Sous\240lignes:	MoveResize,
			EXC_ID_Sub_Raws;
     Cellule:		MoveResize,
			NoCreate, NoCut, NoHMove, NoHResize,
			EXC_ID_Cell,
			EXC_TR_Cell_ATTRIBUT;

{ Exceptions sur les attributs }

     Filet\240gauche:	EXC_ID_Left_Hairline_Cols;

     Filet\240droit:	EXC_ID_Right_Hairline_SimpCol;

     Filet\240bas:	EXC_ID_Foot_Hairline_CompCol;

     Filet\240inf\351rieur: EXC_ID_Foot_Hairline_Headings;

     Filet\240haut:	Invisible;

     Filet\240bas\240:	EXC_ID_Foot_Hairline_SimpRaw;
     Filet\240droit\240:EXC_ID_Right_Hairline_CompRaw;

     Largeur\240titre:	EXC_ID_Title_Width;
     Ref\240titre\240tableau: Invisible,
			EXC_ID_Ref_Title;
     Pourcent\240largeur: Invisible, EXC_ID_Width_Percent;

     Largeur\240colonne : NewWidth,
			EXC_ID_Column_Width;
     Ref\240colonne :	Invisible,
			EXC_ID_Ref_Column;

     Type\240tableau:	EXC_ID_Type_Table;
     Encadrer:		EXC_ID_Table_Frame;

     Alignement\240horiz:	EXC_ID_Align_Horiz;
     Alignement\240vertic:	EXC_ID_Align_Vertic;
     Alignement\240horiz\240:	EXC_ID_Align_HorizDistrib;
     Alignement\240vertic\240:	EXC_ID_Align_VerticDistrib;

     Extension\240horiz:	EXC_ID_Extens_Horiz;
     Extension\240vertic:	EXC_ID_Extens_Vertic;
END
