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