1{
2\modele {texte}
3
4\set {auteur} {pda}
5\set {date}   {27/07/1999}
6
7\*******************************************************************************
8\partie {banniere} { \* Le titre de la page (bandeau de la fen�tre)
9    UVSQ - HTG : HTML Generator
10}
11
12\*******************************************************************************
13\partie {titrepage} { \* Titre de la page
14    CENTRE DE SERVICES INFORMATIQUES
15    DE L'UNIVERSITE DE VERSAILLES
16    SAINT-QUENTIN
17}
18
19
20\*******************************************************************************
21\bandeau {
22	HTG
23    } {
24	\elementbandeau {Voir aussi} {
25	    \reference {\lien {CSI} {/}}
26	    \reference {\lien {Mise � jour} {/applis/majweb/}}
27	}
28	\elementbandeau {HTG} {
29	    \reference {\lien {Pr�sentation}	{index.html}}
30	    \reference {\lien {Structure}	{struct.html}}
31	    \reference {\lien {Directives}	{comm.html}}
32	    \reference {\lien {Mod�les}		{modeles.html}}
33	    \reference {\lien {Bandeau}		{bandeau.html}}
34	    \reference {\lien {Doc interne}	{interne.html}}
35	}
36	\elementbandeau {En bref} {
37	    \reference {\lien {Introduction}	{#intro}}
38	    \reference {\lien {L'outil htg}	{#htg}}
39	    \reference {\lien {L'interpr�te TCL}	{#htgtcl}}
40	    \reference {\lien {Mod�les}		{#modeles}}
41	}
42}
43
44\*******************************************************************************
45\partie {texte} { \* Le texte proprement dit
46
47    \titre {1} {HTG - Fonctionnement interne sur HTG}
48
49    \titre {2} {\ancre {intro} {Introduction}}
50
51    HTG a un fonctionnement relativement simple. Pour les f�rus
52    de techniques de compilation, il s'agit d'un analyseur
53    syntaxique en descente r�cursive.
54
55    En termes compr�hensibles, l'analyseur en C suit l'algorithme
56    suivant~:
57
58    \liste {
59	\item {lorsqu'un caract�re simple est rencontr�, il est
60	    simplement retourn�~;
61	}
62
63	\item {lorsqu'un caract�re <<~\{~>> est rencontr�, tous
64	    les caract�res qui suivent jusqu'au <<~\}~>> correspondant
65	    sont retourn�s~;
66	}
67
68	\item {lorsqu'un caract�re <<~\\~>> est rencontr�, on
69	    explore la suite de caract�res alphanum�riques qui
70	    suivent. Par exemple, pour <<~\\italique~>>, on trouve
71	    la suite <<~italique~>>.
72
73	    Ensuite, l'analyseur construit le nom d'une fonction en
74	    pr�fixant la suite par <<~htg_~>>. Par exemple,
75	    <<~htg_italique~>>. Cette fonction (�crite en TCL) est
76	    alors appel�e.
77
78	    Lorsque cette fonction est appel�e, elle d�sire un
79	    texte � mettre en italiques. Pour l'obtenir, elle
80	    appelle (r�cursivement) l'analyseur en C pour lire
81	    la suite.
82
83	    La boucle est alors boucl�e.
84	}
85    }
86
87    L'analyseur en C est donc le <<~moteur~>> de l'ensemble. Il ne
88    fait finalement que regrouper des caract�res et appeler des
89    fonctions.
90
91    C'est dans ces fonctions que r�side toute la partie de mise
92    en forme adapt�e � un langage (HTML, LaTeX, etc.).
93    Pour les rendre plus facilement
94    adaptables, modifiables, il a �t� choisi de les programmer en
95    TCL (mais on pourrait tout � fait envisager de les programmer en
96    C si cela pr�sentait le moindre soup�on d'int�r�t). Ces fonctions
97    ont �t� regroup�es dans des ensembles appel�s <<~mod�les~>>. Un
98    mod�le n'est rien de plus qu'un jeu de fonctions TCL d�crivant
99    une certaine mise en forme. Comme toutefois cela n'est pas
100    suffisant, les mod�les incluent g�n�ralement un <<~fond~>>,
101    c'est � dire une page HTML, par exemple, avec des <<~trous~>>
102    qui seront remplis par le texte mis en forme.
103
104    \titre {2} {\ancre {htg} {L'outil htg lui-m�me}}
105
106    L'outil de base est \gras {htg}.
107
108    � r�diger...
109
110
111    \titre {2} {\ancre {htgtcl} {L'interpr�te TCL lui-m�me}}
112
113    � r�diger...
114
115    \titre {2} {\ancre {modeles} {Les mod�les}}
116
117    L'arborescence HTG contient un r�pertoire \gras {modeles/}.
118    Il contient les mod�les, et est organis� comme suit~:
119
120    \liste {
121	\item {\gras {include/} : fichiers communs � tous les mod�les,
122	    ou � un grand nombre de mod�les
123	    \liste {
124		\item {\gras {html/}~: fichiers pour la g�n�ration HTML
125		    \liste {
126			\item {\gras {base.tcl}~: fonctions TCL
127			    utilisables par tous les mod�les
128			}
129			\item {\gras {fond1.html}, \gras {fond2.html}~:
130			    morceaux de pages HTML utilis�s par tous
131			    les mod�les du CSI
132			}
133			\item {\gras {bandeau.tcl}~: fonctions TCL
134			    du bandeau (vertical � gauche) des
135			    pages Web UVSQ
136			}
137		    }
138		}
139		\item {\gras {latex/}~: fichiers pour la g�n�ration LaTeX
140		    (idem html/)
141		}
142	    }
143	}
144	\item {\gras {texte/}, \gras {accueil/}, \gras {personne/}~:
145	    mod�les du CSI
146	    \liste {
147		\item {
148		    \gras {html.tcl}~: fonctions TCL d�finissant
149		    le mod�le
150		    <<~texte~>> pour la g�n�ration HTML
151		    (inclusion de include/html/base.tcl)
152		}
153		\item {
154		    \gras {latex.tcl}~: idem pour la g�n�ration LaTeX
155		    <<~texte~>> (inclusion de include/html/base.tcl)
156		}
157		\item {
158		    \gras {fond.html}~: fond de page
159		    pour la g�n�ration HTML
160		    (inclusion de include/html/fond*.html)
161		}
162		\item {
163		    \gras {fond.latex}~: fond de page
164		    pour la g�n�ration LaTeX
165		    (inclusion de include/latex/preambule.latex)
166		}
167	    }
168	}
169    }
170
171    D�finir un nouveau mod�le consiste donc �~:
172
173    \enumeration {
174	\item {cr�er un r�pertoire dans \gras {modeles/include/}}
175
176	\item {cr�er un fichier \gras {html.tcl}~:
177	    \liste {
178		\item {il est vraisemblable que ce fichier devra
179		    inclure include/html/base.tcl pour ne pas avoir
180		    � r��crire toutes les fonctions htg_gras, etc.
181		}
182		\item {d�finir les fonctions sp�cifiques au mod�le,
183		    ou red�finir les fonctions (de include/html/base.tcl)
184		    ayant une caract�ristique sp�cifique dans le
185		    mod�le. Par exemple, htg_titre est d�fini par
186		    d�faut dans include/html/base.tcl, mais est red�fini
187		    par les mod�les du CSI.
188		}
189	    }
190	}
191
192	\item {cr�er un fichier \gras {fond.html}~�
193	    ce fichier est un fond de page HTML (entour� d'accolades
194	    pour une obscure raison li�e au fonctionnement de l'analyseur)
195	    avec des directives \\recuperer~{\italique {partie}}, o�
196	    \italique {partie} est d�finie dans le mod�le et utilis�e
197	    dans les pages HTG. Cela permet de stocker des textes lors
198	    de la lecture de la page HTG, et de la restituer au bon
199	    endroit lors de la g�n�ration HTML � l'aide de ce fichier.
200	}
201
202	\item {cr�er des fichiers similaires pour chaque langage
203	    de g�n�ration que l'on d�sire supporter
204	}
205
206	\item {tester... ;-)}
207    }
208}
209}
210