Annotation of Amaya/doc/pivot.tex, revision 1.1

1.1     ! cvs         1: \documentstyle[11pt,times]{article}
        !             2: 
        !             3: \marginparwidth 0pt
        !             4: \oddsidemargin  1 cm
        !             5: \evensidemargin  1 cm
        !             6: \marginparsep 0pt
        !             7: \topmargin   0pt
        !             8: \textwidth   14 cm
        !             9: \textheight  22.5 cm
        !            10: 
        !            11: \begin{document}
        !            12: \sloppy
        !            13: 
        !            14: \date{Version du 25 fe'vrier 1993}
        !            15: \title{La repre'sentation pivot de Thot\\
        !            16:        version 4}
        !            17: \author{Vincent Quint}
        !            18: \maketitle
        !            19: 
        !            20: Ce document de'crit la repre'sentation adopte'e pour le stockage des
        !            21: documents produits par Thot.
        !            22: 
        !            23: \section{Notation}
        !            24: 
        !            25: La notation utilise'e pour de'crire la repre'sentation pivot est celle qui
        !            26: a de'ja` e'te' utilise'e pour de'crire les langages de Thot. Rappelons que les
        !            27: parties entre crochets {\tt [ ] } sont facultatives, que les parties entre
        !            28: les signes {\tt < >} peuvent e^tre re'pe'te'es ou omises, que le caracte`re
        !            29: {\tt /} repre'sente un choix entre plusieurs possibilite's, que la juxtaposition
        !            30: des symbloles marque la concate'nation et que le point indique une fin de
        !            31: re`gle. \`{A} ces conventions, on ajoute les suivantes~:
        !            32: 
        !            33: \begin{description}
        !            34: \item{\tt OCTET}
        !            35: repre'sente un octet quelconque.
        !            36: \item{\tt CHAINEOCT}
        !            37: repre'sente une chai^ne d'octets quelconques.
        !            38: \item{\tt CHAINECAR}
        !            39: repre'sente une chai^ne de caracte`res ISO-Latin-1 imprimables termine'e par un
        !            40: octet nul. Une chai^ne vide ne comprend qu'un octet nul.
        !            41: \item{\tt CARACTERE}
        !            42: repre'sente un seul caracte`re ISO-Latin-1 imprimable, c'est a` dire un caracte`re dont
        !            43: le code est supe'rieur ou e'gal a` 32 (de'cimal).
        !            44: \item{\tt NUMERO}
        !            45: repre'sente un entier positif ou nul code' sur deux octets (0-65535).
        !            46: \item{\tt O}
        !            47: suivi d'un ou deux chiffres repre'sente un octet ayant pour valeur le nombre
        !            48: de'cimal repre'sente' par le (ou les) chiffre(s) qui sui(ven)t.
        !            49: \item{\tt '~'}
        !            50: un caracte`re entre apostrophes repre'sente ce caracte`re exprime' dans le code
        !            51: ISO-Latin-1.
        !            52: \end{description}
        !            53: 
        !            54: \section{Format pivot}
        !            55: 
        !            56: La repre'sentation pivot d'un document est forme'e de trois fichiers~:
        !            57: 
        !            58: \begin{itemize}
        !            59: \item
        !            60: {\it le fichier pivot} repre'sente la structure logique spe'cifique
        !            61: et le contenu du document. Il comporte e'galement, le cas e'che'ant,
        !            62: la pre'sentation spe'cifique du document. Son nom se termine par l'extension
        !            63: {\tt .PIV}.
        !            64: 
        !            65: \item
        !            66: {\it le fichier des re'fe'rences externes entrantes} repre'sente les liens
        !            67: entre le document et d'autres documents, ou plus pre'cise'ment il repre'sente
        !            68: les e'le'ments du document qui sont de'signe's par des re'fe'rences
        !            69: appartenant a` d'autres documents. Ce fichier n'est pre'sent que si le
        !            70: document comporte au moins un e'le'ment de'signe' depuis un autre document.
        !            71: Son nom se termine par l'extension {\tt .EXT}.
        !            72: 
        !            73: \item
        !            74: {\it le fichier des re'fe'rences a` modifier} repre'sente des modifications
        !            75: a` effectuer dans le document. Ces modifications ont e'te' rendues
        !            76: ne'cessaires par des ope'rations de destruction ou de de'placement
        !            77: d'e'le'ments re'fe'rence's par le document, ope'rations
        !            78: qui ont e'te' effectue'es sur d'autres documents lorsque le document auquel
        !            79: est associe' le fichier n'e'tait pas charge'.
        !            80: Les re'fe'rences du document qui de'signent ces e'le'ments de'truits ou
        !            81: de'place's doivent e^tre mises a` jour selon ce qui est indique' dans le
        !            82: fichier des re'fe'rences a` modifier.
        !            83: Ce fichier n'est pre'sent que si le document comporte au moins une
        !            84: refe'rence externe devant e^tre mise a` jour.
        !            85: Le nom du fichier se termine par l'extension {\tt .REF}.
        !            86: \end{itemize}
        !            87: 
        !            88: \section{Fichier des re'fe'rences externes entrantes}
        !            89: 
        !            90: Le fichier des re'fe'rences externes entrantes permet de connai^tre tous les
        !            91: e'le'ments du document qui sont de'signe's par des re'fe'rences externes
        !            92: (re'fe'rences appartenant a` d'autres documents), que ces re'fe'rences
        !            93: repre'sentent des renvois ou des inclusions, avec ou sans expansion. Ce
        !            94: fichier permet aussi de connai^tre tous les documents qui font re'fe'rence
        !            95: a` chacun de ces e'le'ments.
        !            96: 
        !            97: Le fichier des re'fe'rences externes entrantes est forme' d'une suite
        !            98: d'enregistrements repre'sentant chacun un e'le'ment de'signe'
        !            99: par d'autres documents. Il y a au moins un tel enregistrement~: si aucun
        !           100: e'le'ment du document n'est de'signe' par un autre document, le fichier
        !           101: n'existe pas.
        !           102: Le e'le'ments du document qui sont de'signe's par des re'fe'rences appartenant
        !           103: au me^me document (re'fe'rences internes) ne figurent pas dans ce fichier
        !           104: puisque les liens internes sont repre'sente's dans le fichier pivot (voir
        !           105: page~\pageref{refer}).
        !           106: 
        !           107: Chaque enregistrement repre'sentant un e'le'ment de'signe' par d'autres
        !           108: documents comporte le label qui identifie l'e'le'ment et la suite des
        !           109: noms des documents comportant des re'fe'rences a` cet e'le'ment.
        !           110: Il y a au moins un nom de document apre`s le label.
        !           111: Le label est le me^me que celui qui identifie l'e'le'ment en question dans
        !           112: le fichier pivot (voir page~\pageref{labelelem}).
        !           113: 
        !           114: \begin{verbatim}
        !           115: Fichier-Ref-Ext =    Elem-Ref < Elem-Ref > .
        !           116: Elem-Ref =           Label Doc-Externe < Doc-Externe > .
        !           117: \end{verbatim}
        !           118: 
        !           119: \label{label}
        !           120: Thot affecte un identificateur unique, appele' label, a` chaque e'le'ment
        !           121: qu'il cre'e. Les labels engendre's par Thot sont de la forme {\tt Lnnn},
        !           122: ou` nnn repre'sente un entier code' en ASCII, avec un nombre de
        !           123: chiffres variable. Cet entier qui est appele' {\em nume'ro de label}.
        !           124: 
        !           125: Un label est donc une suite de caracte`res termine'e par un octet nul.
        !           126: Dans les versions pre'ce'dentes de Thot, un label e'tait
        !           127: un entier positif court (deux octets) ou long (quatre octets).
        !           128: 
        !           129: Dans les fichiers, un label est pre'ce'de' d'un octet qui identifie son type~:
        !           130: {\tt Marque-Label-Chaine}. Dans les fichiers produits par d'anciennes
        !           131: versions de Thot, on peut trouver aussi {\tt Marque-Label-Court} ou
        !           132: {\tt Marque-Label-Long}, suivis d'un entier positif sur deux ou quatre
        !           133: octets selon le type de label.
        !           134: 
        !           135: \begin{verbatim}
        !           136: Label =              Marque-Label-Chaine CHAINECAR /
        !           137:                      Marque-Label-Court Numero-Label-Court /
        !           138:                      Marque-Label-Long Numero-Label-Long .
        !           139: Marque-Label-Chaine = O11 .
        !           140: Marque-Label-Court =  O12 .
        !           141: Marque-Label-Long =   O13 .
        !           142: Numero-Label-Court =  NUMERO .
        !           143: Numero-Label-Long =   NUMERO NUMERO .
        !           144: \end{verbatim}
        !           145: 
        !           146: Chaque nom de document externe est une simple suite de caracte`res termine'e
        !           147: par un octet nul. Il est pre'ce'de' d'une marque de document externe.
        !           148: \begin{verbatim}
        !           149: Doc-Externe =        Marque-Doc-Ext Nom-Document .
        !           150: Marque-Doc-Ext =     O15 .
        !           151: Nom-Document =       CHAINECAR .
        !           152: \end{verbatim}
        !           153: 
        !           154: \section{Fichier des re'fe'rences a` modifier}
        !           155: 
        !           156: Le fichier des re'fe'rences a` modifier indique tous les e'le'ments externes
        !           157: (c'est a` dire appartenant a` d'autres documents) qui sont re'fe'rence's
        !           158: par le document et qui ont change' de document ou ont e'te' de'truits.
        !           159: Les re'fe'rences qui de'signent ces e'le'ments doivent e^tre mises a` jour,
        !           160: que ces re'fe'rences repre'sentent des renvois ou des inclusions, avec ou
        !           161: sans expansion.
        !           162: 
        !           163: Le fichier des re'fe'rences a` modifier est forme' d'une suite
        !           164: d'enregistrements repre'sentant chacun un e'le'ment externe de'place' ou
        !           165: de'truit. Il y a au moins un tel enregistrement~: si le document ne contient
        !           166: aucune re'fe'rence a` modifier, le fichier n'existe pas.
        !           167: 
        !           168: Chaque enregistrement comporte dans l'ordre l'ancien label de l'e'le'ment,
        !           169: le nouveau label de l'e'le'ment, le nom de l'ancien document auquel
        !           170: appartenait cet e'le'ment et le nom du nouveau document auquel il appartient.
        !           171: Les labels et noms de documents sont repre'sente's comme dans le fichier
        !           172: des re'fe'rences externes entrantes.
        !           173: 
        !           174: \begin{verbatim}
        !           175: Fichier-Ref-Modif = El-Ext-Modif < El-Ext-Modif > .
        !           176: El-Ext-Modif =      Ancien-Label Nouveau-Label
        !           177:                     Ancien-Doc Nouveau-Doc .
        !           178: Ancien-Label =      Label .
        !           179: Nouveau-Label =     Label .
        !           180: Ancien-Doc =        Doc-Externe .
        !           181: Nouveau-Doc =       Doc-Externe .
        !           182: \end{verbatim}
        !           183: 
        !           184: L'ancien label peut e^tre nul. Dans ce cas, l'enregistrement ne repre'sente
        !           185: pas la modification d'un e'le'ment externe, mais le changement de nom
        !           186: d'un document. Le nouveau label, bien que pre'sent, n'est pas significatif.
        !           187: Les deux noms repre'sentent l'ancien nom du document et le nouveau nom du
        !           188: document. Ce type d'enregistrement doit e^tre traite' de la fac,on suivante~:
        !           189: il faut rechercher dans le document auquel correspond le fichier toutes les
        !           190: re'fe'rences sortantes qui de'signent des e'le'ments contenus dans le document
        !           191: portant l'ancien nom et, pour chacune de ces re'fe'rences, il faut changer le
        !           192: nom du document contenant l'e'le'ment de'signe' par la re'fe'rence.
        !           193: 
        !           194: Si l'ancien label n'est pas nul, il s'agit de la destruction ou du
        !           195: de'placement d'un e'le'ment externe. Une destruction est indique'e par un
        !           196: nouveau label nul. Dans ce cas, le nom du nouveau document n'est pas
        !           197: significatif, bien qu'il soit pre'sent. Il faut rechercher dans le document
        !           198: auquel correspond le fichier toutes les re'fe'rences sortantes qui de'signent
        !           199: l'e'le'ment externe identifie' par l'ancien label et l'ancien document et
        !           200: annuler toutes ces re'fe'rences.
        !           201: 
        !           202: Un de'placement d'e'le'ment est indique' par un ancien label non nul et
        !           203: un nouveau label non nul e'galement. Les deux noms de documents sont
        !           204: significatifs dans ce cas. Ce type d'enregistrement indique que l'e'le'ment
        !           205: qui portait l'ancien label dans l'ancien document se trouve maintenant dans le
        !           206: nouveau document et porte le nouveau label. Dans le document auquel
        !           207: correspond le fichier, il faut prendre en compte cette modification dans
        !           208: toutes les re'fe'rences sortantes qui de'signent cet e'le'ment de'place'.
        !           209: 
        !           210: \section{Organisation ge'ne'rale du fichier pivot}
        !           211: 
        !           212: Le fichier pivot d'un document contient en te^te une indication de version,
        !           213: la valeur du plus grand label du document, la liste des langues utilise'es
        !           214: dans le document puis, de fac,on
        !           215: facultative, un commentaire associe' a` l'ensemble du document.
        !           216: Il contient ensuite, obligatoirement, l'indication de la classe du document,
        !           217: c'est a` dire le nom du sche'ma de structure d'apre`s lequel a e'te'
        !           218: construit le document. Si le document comporte des objets de diffe'rentes
        !           219: natures, les classes de ces objets sont indique'es apre`s la classe du
        !           220: document. De me^me, si des extensions de sche'ma s'ajoutent au sche'ma du
        !           221: document, ces extensions sont indique'es apre`s la classe du document, avec
        !           222: les classes des objets.
        !           223: Apre`s les classes, apparaissent les parame`tres, puis les e'le'ments
        !           224: associe's et enfin l'arbre principal du document. Parame`tres et e'le'ments
        !           225: associe's sont facultatifs, mais l'arbre principal du document doit e^tre
        !           226: pre'sent.
        !           227: 
        !           228: \begin{verbatim}
        !           229: Fichier-Pivot = [ Version ]
        !           230:                 [ Label ]
        !           231:                 < Marque-Langue Nom-Langue >
        !           232:                 [ Commentaire ]
        !           233:                   Classe-Document
        !           234:                 < Classe-Objet >
        !           235:                 < Marque-Param Param >
        !           236:                 < Marque-Associe Suite-Associes >
        !           237:                   Marque-Document  Le-Document  Marque-Fin-Document .
        !           238: \end{verbatim}
        !           239: 
        !           240: \subsection{Version}
        !           241: \label{versionpivot}
        !           242: 
        !           243: L'indication de version de la forme pivot peut e^tre absente pour les
        !           244: fichiers produits par d'anciennes versions de Thot, mais elle doit e^tre
        !           245: pre'sente dans les
        !           246: fichiers produits par les versions 2 et suivantes. Elle comporte deux fois
        !           247: l'octet {\tt Marque-Version} puis le nume'ro de la version de la forme
        !           248: pivot, sur un octet. Le nume'ro de version courant est 4.
        !           249: 
        !           250: \begin{verbatim}
        !           251: Version =        Marque-Version Marque-Version Numero-Version .
        !           252: Marque-Version = O22 .
        !           253: Numero-Version = OCTET .
        !           254: \end{verbatim}
        !           255: 
        !           256: \subsection{Plus grand label}
        !           257: 
        !           258: De fac,on a` permettre l'affectation de labels uniques aux nouveaux e'le'ments
        !           259: du document, la forme pivot comporte, apre`s l'identification de la version,
        !           260: le nume'ro de label le plus grand qui ait e'te' attribue' par Thot a` un
        !           261: e'le'ment du document.\footnote{Il ne s'agit pas ne'cessairement du plus grand
        !           262: label qu'on rencontrera dans le document. En effet, un e'le'ment ayant un label
        !           263: supe'rieur au plus grand label du document peut avoir e'te' de'truit et il
        !           264: ne faut pas affecter son label a` un autre e'le'ment.}
        !           265: Ce nume'ro est repre'sente' dans le fichier pivot de la me^me fac,on que tout
        !           266: label (voir page~\pageref{label} pour la repre'sentation des labels).
        !           267: Dans les fichiers pivots produits avec d'anciennes versions de Thot, ce
        !           268: nume'ro de label peut e^tre absent, mais il doit e^tre pre'sent dans tous les
        !           269: fichiers produits par les dernie`res versions de l'e'diteur.
        !           270: 
        !           271: \subsection{Liste des langues utilise'es dans le document}
        !           272: \label{listelangues}
        !           273: 
        !           274: La liste de toutes les langues utilise'es dans le document apparai^t en te^te.
        !           275: Elle est forme'e de la suite des noms de ces langues, chaque nom e'tant
        !           276: pre'ce'de' d'un octet {\tt Marque-Langue}.
        !           277: 
        !           278: \begin{verbatim}
        !           279: Marque-Langue = O8 .
        !           280: Nom-Langue = CHAINECAR .
        !           281: \end{verbatim}
        !           282: 
        !           283: La langue dans laquelle est e'crit chaque e'le'ment de texte du document est
        !           284: indique'e par le rang de cette langue dans la liste des langues (voir
        !           285: section~\ref{contenu}).
        !           286: 
        !           287: \subsection{Commentaires}
        !           288: \label{comment}
        !           289: 
        !           290: Le commentaire attache' au document est repre'sente' de la me^me fac,on que
        !           291: les commentaires attache's aux e'le'ments du document (voir page~\pageref{prescom}).
        !           292: Un commentaire est repre'sente' par une {\tt Marque-Commentaire} suivie de la
        !           293: longueur du commentaire (sur deux octets) et du contenu du commentaire,
        !           294: qui est une suite d'octets quelconques, de la longueur indique'e.
        !           295: 
        !           296: Dans les premie`res versions de Thot, les commentaires e'taient repre'sente's
        !           297: diffe'remment, par une {\tt Marque-Commentaire-Ancien} suivie d'une
        !           298: {\tt Marque-Debut} et du texte du commentaire, qui e'tait une chai^ne
        !           299: de caracte`res de longueur quelconque ne contenant pas d'octets nuls et
        !           300: termine'e par un octet nul. Cette chai^ne e'tait suivie d'une
        !           301: {\tt Marque-Fin}. De fac,on a` permettre la pre'sence d'octets nuls dans le
        !           302: contenu du commentaire, cette repre'sentation a e'te' remplace'e par celle
        !           303: qui est de'crite plus haut, qui doit de'sormais e^tre la seule produite.
        !           304: Cependant, pour assurer la compatibilite' avec les versions pre'ce'dentes,
        !           305: Thot accepte en lecture les deux formes de commentaires.
        !           306: 
        !           307: \begin{verbatim}
        !           308: Commentaire =     Marque-Commentaire Longueur-Commentaire
        !           309:                          Contenu-Commentaire /
        !           310:                   Marque-Commentaire-Ancien Marque-Debut
        !           311:                          Texte-Commentaire Marque-Fin .
        !           312: Marque-Commentaire =        O5 .
        !           313: Longueur-Commentaire =      NUMERO .
        !           314: Contenu-Commentaire =       CHAINEOCT .
        !           315: Marque-Commentaire-Ancien = O3 .
        !           316: Marque-Debut =              O4 .
        !           317: Texte-Commentaire =         CHAINECAR .
        !           318: Marque-Fin =                O6 .
        !           319: \end{verbatim}
        !           320: 
        !           321: Les commentaires sont ignore's par l'e'diteur Thot qui se contente de les
        !           322: conserver intacts lorsqu'un document est lu puis de les e'crire sans
        !           323: changement lorsque le document est sauve' dans un fichier. Chaque commentaire
        !           324: est vu comme une suite d'octets quelconque et n'est pas interpre'te' par
        !           325: l'e'diteur.
        !           326: 
        !           327: \subsection{Classes}
        !           328: 
        !           329: La classe du document, ses extensions et les classes des diffe'rentes natures
        !           330: d'objets (classes externes) sont repre'sente'es de fac,on identique~: une
        !           331: marque {\tt Marque-Classe} ou {\tt Marque-Extension} suivie du nom de sche'ma
        !           332: de structure ou d'extension (ce nom est termine' par un octet nul), du code
        !           333: de ce sche'ma et du nom du sche'ma de pre'sentation
        !           334: a` utiliser pour ce sche'ma de structure ou d'extension. Le nom de sche'ma de
        !           335: pre'sentation peut se re'duire a` un octet nul si aucun sche'ma de
        !           336: pre'sentation particulier n'est requis.
        !           337: Toutes les classes d'objets utilise'es dans le document
        !           338: (et seulement celles qui sont re'ellement utilise'es dans ce document) sont
        !           339: indique'es ainsi, qu'elles soient explicitement appele'es dans le sche'ma
        !           340: de structure du document ou qu'elles aient e'te' appele'es gra^ce a` une
        !           341: re`gle {\tt NATURE}.
        !           342: 
        !           343: Le rang d'une classe ou d'une extension dans cette liste est appele'
        !           344: nume'ro de classe. On verra plus loin qu'il sert a` indiquer dans quel sche'ma
        !           345: de structure est de'fini un attribut, ou a` quelle classe appartient un objet.
        !           346: La classe du document porte le nume'ro 0 et les classes d'objets et d'extension
        !           347: sont nume'rote'es a` partir de 1.
        !           348: 
        !           349: Le code qui figure apre`s le nom du sche'ma de structure ou d'extension est
        !           350: obligatoire a` partir de la version 4 de la forme pivot. C'est un
        !           351: identificateur unique code' sur deux octets qui est affecte' a` chaque
        !           352: compilation du sche'ma.
        !           353: Cela permet de ve'rifier que les sche'mas de structure charge's pour le
        !           354: document qu'on lit sont bien ceux qui ont e'te' utilise's la derniere fois
        !           355: que le document a e'te' sauve'. En cas de diffe'rence, la validite' de toute
        !           356: la structure logique du document lu est ve'rifie'e par rapport au sche'ma
        !           357: de structure. Cela e'vite de produire des documents de structure incorrecte
        !           358: lorsque le sche'ma de structure a e'te' modifie'.
        !           359: 
        !           360: \begin{verbatim}
        !           361: Classe-Document = Classe .
        !           362: Classe-Objet =    Classe .
        !           363: Classe =          Marque-ClassExt Nom-Schema-Struct
        !           364:                   [ Code-Schema-Struct ] NomSchema-Pres .
        !           365: Marque-ClassExt = Marque-Classe / Marque-Extension .
        !           366: Marque-Classe =   O14 .
        !           367: Marque-Extension =O10 .
        !           368: Nom-Schema-Struct=CHAINECAR .
        !           369: Code-Schema-Struc=NUMERO .
        !           370: NomSchema-Pres =  CHAINECAR .
        !           371: \end{verbatim}
        !           372: 
        !           373: \subsection{Parame`tres}
        !           374: 
        !           375: Si certains parame`tres ont une valeur dans le document, ces valeurs de
        !           376: parame`tres suivent les noms des classes d'objets, ou le nom de la classe du
        !           377: document s'il n'y a pas de classes d'objets. Chaque valeur de
        !           378: parame`tre est pre'ce'de'e d'un octet {\tt Marque-Param} indiquant qu'il
        !           379: s'agit d'une valeur de parame`tre. Les valeurs de parame`tres sont
        !           380: repre'sente'es comme tout e'le'ment structure' (voir page~\pageref{elstruct}).
        !           381: Pour un document,
        !           382: les parame`tres possibles, qui sont de'finis dans le sche'ma de structure,
        !           383: n'ont pas tous une valeur. Seuls ceux qui ont une valeur apparaissent ainsi
        !           384: en te^te du fichier pivot du document. Si aucun parame`tre n'a de
        !           385: valeur, ou si aucun parame`tre n'est de'fini dans le sche'ma de structure du
        !           386: document, aucune valeur de parame`tre n'est pre'sente dans le fichier
        !           387: pivot. En revanche, si un parame`tre a une valeur, il ne peut en avoir qu'une
        !           388: pour un document et donc toutes les valeurs de parame`tres d'un document sont
        !           389: de types diffe'rents.
        !           390: 
        !           391: \begin{verbatim}
        !           392: Marque-Param =    O16 .
        !           393: Param =           Element .
        !           394: \end{verbatim}
        !           395: 
        !           396: \subsection{Ele'ments associe's}
        !           397: 
        !           398: Apre`s les valeurs des parame`tres viennent les e'le'ments associe's du document
        !           399: (ces e'le'ments peuvent e^tre absents). Les e'le'ments associe's sont groupe's
        !           400: par type~: un document peut avoir plusieurs e'le'ments associe's de me^me type.
        !           401: Un octet {\tt Marque-Associe} pre'ce`de chaque suite d'e'le'ments du me^me
        !           402: type. Dans ces suites, les e'le'ments associe's sont repre'sente's comme tout
        !           403: e'le'ment structure'.
        !           404: 
        !           405: Pour chaque type d'e'le'ments associe's, il n'y a normalement qu'un e'le'ment
        !           406: qui posse`de un ou plusieurs fils~; ce sont ces fils qui sont les e'le'ments
        !           407: associe's au sens strict. Dans les documents produits par d'anciennes versions
        !           408: de Thot, l'e'le'ment racine est absent et les e'le'ments associe's eux-me^mes
        !           409: apparaissent directement apre`s la {\tt Marque-Associe}.
        !           410: 
        !           411: \begin{verbatim}
        !           412: Marque-Associe =  O2 .
        !           413: Suite-Associes =  Element < Element > .
        !           414: \end{verbatim}
        !           415: 
        !           416: \subsection{Arbre principal}
        !           417: 
        !           418: Les e'le'ments associe's sont suivis du document lui-me^me, ou plus exactement
        !           419: de la repre'sentation de son arbre principal. Cette repre'sentation de l'arbre
        !           420: principal est pre'ce'de'e d'un octet {\tt Marque-Document} et suivie d'un octet
        !           421: {\tt Marque-Fin-Document}. Le document est repre'sente' comme tout e'le'ment
        !           422: structure'.
        !           423: 
        !           424: \begin{verbatim}
        !           425: Marque-Document = O19 .
        !           426: Le-Document =     Element .
        !           427: Marque-Fin-Document = O26 .
        !           428: \end{verbatim}
        !           429: 
        !           430: \section{Ele'ments structure's}
        !           431: \label{elstruct}
        !           432: 
        !           433: Rappelons que tous les types d'e'le'ments de'finis par une structure logique
        !           434: ge'ne'rique sont de'crits dans la table des types d'e'le'ments du sche'ma de
        !           435: structure. Cette table contient, dans l'ordre, les types de base (chai^ne de
        !           436: caracte`res, symbole mathe'matique, e'le'ment graphique, image, marque de
        !           437: page...), puis les constantes, puis tous les e'le'ments structure's, y compris
        !           438: les e'le'ments associe's et parame`tres. Quelle que soit sa cate'gorie, un type
        !           439: d'e'le'ment peut e^tre repe're' par son rang dans cette table (le rang  est
        !           440: e'galement appele' nume'ro du type). Ce rang indique la cate'gorie de l'e'le'ment~:
        !           441: les premiers nume'ros sont ceux des types de base, les suivants sont ceux
        !           442: des e'le'ments structure's.
        !           443: 
        !           444: Dans la table des types on trouve des constantes. Comme tous les autres types
        !           445: d'e'le'ments, une constante porte un nom. De plus, elle a une valeur de'finie
        !           446: dans le sche'ma de structure~: une chai^ne de caracte`res.
        !           447: 
        !           448: Les e'le'ments structure's (parame`tres, e'le'ments associe's, e'le'ments du
        !           449: document) sont tous repre'sente's de la me^me fac,on.
        !           450: 
        !           451: \subsection{Type d'e'le'ment}
        !           452: 
        !           453: Chaque e'le'ment commence par une indication de son type. Le type est indique'
        !           454: par un octet {\tt Marque-Type} suivi du nume'ro de type de l'e'le'ment
        !           455: (un entier positif sur deux octets).
        !           456: Dans le cas ou` le type de l'e'le'ment est de'fini dans un sche'ma de structure
        !           457: diffe'rent de celui ou` est de'fini le type de l'e'le'ment dont il est le
        !           458: descendant direct, le nouveau sche'ma de structure est indique', avant
        !           459: la {\tt Marque-Type} et le nume'ro de type, par un octet {\tt Marque-Classe}
        !           460: (me^me s'il s'agit d'une extension de sche'ma)
        !           461: suivi du nume'ro de la nouvelle classe d'objets. Rappelons que le nume'ro de
        !           462: classe est le rang du nom de la classe dans la liste des noms de classes et
        !           463: des extensions qui se trouve en te^te du document.
        !           464: 
        !           465: \subsection{Inclusion}
        !           466: 
        !           467: Si l'e'le'ment repre'sente l'inclusion avec expansion ou semi-expansion d'un
        !           468: autre e'le'ment,
        !           469: l'indication de type est suivie d'une {\tt Marque-Inclus} et de
        !           470: l'identification de l'e'le'ment inclus. Cette identification est compose'e,
        !           471: comme dans un e'le'ment re'fe'rence (voir section~\ref{refer}), du type de
        !           472: la re'fe'rence (dans ce cas c'est toujours une inclusion), et de la
        !           473: de'signation de l'e'le'ment inclus.
        !           474: 
        !           475: Si l'e'le'ment repre'sente une inclusion avec semi-expansion, la de'signation
        !           476: de l'e'le'ment inclus est suivie d'une {\tt Marque-SemiExpansion}.
        !           477: 
        !           478: \subsection{Label}
        !           479: \label{labelelem}
        !           480: 
        !           481: Apre`s l'indication de type (et les e'ventuelles indications d'inclusion et
        !           482: de protection), apparai^t un label qui identifie l'e'le'ment de fac,on unique
        !           483: dans le document. Il s'agit d'une chaine de caracteres qui est utilise'e dans les
        !           484: re'fe'rences qui de'signent l'e'le'ment et dans le fichier des re'fe'rences
        !           485: externes entrantes.
        !           486: Dans les versions pre'ce'dentes de Thot, seuls certains e'le'ments portaient
        !           487: un label\footnote{Il s'agissait de l'e'le'ment racine du document, des
        !           488: e'le'ments de'signe's par une re'fe'rence interne ou externe et des e'le'ments
        !           489: exportables, me^me s'ils n'e'taient de'signe's par aucune re'fe'rence.}.
        !           490: C'est pourquoi certains fichiers pivots peuvent ne pas comporter de label
        !           491: pour tous les e'le'ments~; mais dans les fichiers pivots produits avec
        !           492: les versions re'centes de l'e'diteur Thot, {\em tous} les e'le'ments du
        !           493: document portent un label (voir page~\pageref{label} pour la repre'sentation
        !           494: du label).
        !           495: 
        !           496: \subsection{Holophraste}
        !           497: 
        !           498: Si l'e'le'ment est holophraste'\footnote{Tout e'le'ment peut e^tre
        !           499: holophraste'. Il est alors affiche' et imprime' de fac,on particulie`re~: son
        !           500: image est remplace'e par le nom de son type, donnant ainsi une forme plus
        !           501: compacte de l'e'le'ment.}, un octet {\tt Marque-Holophraste} apparai^t apre`s
        !           502: le label et avant les attributs.
        !           503: 
        !           504: \subsection{Attributs}
        !           505: 
        !           506: Chaque e'le'ment peut e^tre affecte' d'un ou plusieurs attributs, qui portent sur
        !           507: l'e'le'ment lui-me^me et tout son contenu. Seuls sont indique's dans le fichier
        !           508: pivot les attributs qui ne sont pas impose's dans le sche'ma de structure par
        !           509: une instruction {\tt WITH}. Cependant les attributs impose's de type re'fe'rence
        !           510: apparaissent dans le fichier pivot. Dans un sche'ma de structure, un attribut
        !           511: porte un nom, posse`de un type et a, selon son type, certaines valeurs
        !           512: possibles. Il y a quatre types d'attributs~:
        !           513: \begin{description}
        !           514: \item[Entier~:]
        !           515: l'attribut prend une valeur entie`re comprise entre -32000 et 32000.
        !           516: \item[Texte~:]
        !           517: l'attribut prend pour valeur une chai^ne de caracte`res.
        !           518: \item[Re'fe'rence~:]
        !           519: l'attribut prend pour valeur une re'fe'rence a` un e'le'ment d'un type donne'.
        !           520: \item[Enume're'~:]
        !           521: l'attribut prend sa valeur dans une liste donne'e des valeurs possibles.
        !           522: Chacune de ces valeurs a un nume'ro d'ordre et un nom. La valeur d'un attribut
        !           523: de type e'nume're' est de'signe'e par ce nume'ro d'ordre.
        !           524: \end{description}
        !           525: 
        !           526: Un attribut est de'signe' par son rang dans la table des attributs du sche'ma
        !           527: de structure (ce rang est e'galement appele' ``nume'ro de l'attribut''). Chaque
        !           528: indication d'attribut comprend, dans l'ordre~:
        !           529: 
        !           530: \begin{itemize}
        !           531: \item
        !           532: un octet {\tt Marque-Attribut},
        !           533: \item
        !           534: le nume'ro de la classe ou` l'attribut est de'fini~: ze'ro pour la classe du
        !           535: document ou le rang d'une classe d'objets dans la liste des classes figurant
        !           536: en te^te du fichier pivot,
        !           537: \item
        !           538: le nume'ro de l'attribut dans le sche'ma de structure de la classe ou` il est
        !           539: de'fini,
        !           540: \item
        !           541: la valeur de l'attribut, code'e selon le type de l'attribut~:
        !           542:    \begin{description}
        !           543:    \item[Entier~:]
        !           544:    la valeur absolue de l'attribut, code'e sur deux octets, et suivie de son
        !           545:    signe, un caracte`re {\tt '+'} ou {\tt '-'}.
        !           546:    \item[Texte~:]
        !           547:    la chai^ne de caracte`res qui repre'sente la valeur de l'attribut, termine'e
        !           548:    par un octet nul, ou un simple octet nul si l'attribut n'a pas de valeur.
        !           549:    \item[Re'fe'rence~:]
        !           550:    l'e'le'ment de'signe' par l'attribut, repre'sente' de la me^me
        !           551:    fac,on que dans un e'le'ment re'fe'rence (voir section~\ref{refer}),
        !           552:    mais il ne comporte pas l'octet Marque-Refer.
        !           553:    \item[Enume're'~:]
        !           554:    le nume'ro de la valeur de l'attribut affecte'e a` l'e'le'ment.
        !           555:    \end{description}
        !           556: \end{itemize}
        !           557: 
        !           558: \subsection{Pre'sentation, commentaire et contenu}
        !           559: \label{prescom}
        !           560: 
        !           561: Apre`s les attributs affecte's a` l'e'le'ment vient la liste des re`gles de
        !           562: pre'sentation qui s'appliquent spe'cifiquement a` cet e'le'ment. Un e'le'ment
        !           563: peut ne pas avoir de re`gle de pre'sentation spe'cifique, mais il peut aussi
        !           564: en avoir une ou plusieurs. Les re`gles de pre'sentation sont de'crites plus
        !           565: loin. Un commentaire associe' a` l'e'le'ment peut suivre les re`gles de
        !           566: pre'sentation spe'cifiques. Il est repre'sente' de la me^me fac,on que le
        !           567: commentaire du document (voir page~\pageref{comment}). Enfin vient le
        !           568: contenu de l'e'le'ment (voir page~\pageref{contenu})~; dans le cas ou`
        !           569: l'e'le'ment repre'sente l'inclusion d'un autre e'le'ment, il n'y a pas
        !           570: de contenu.
        !           571: 
        !           572: \begin{verbatim}
        !           573: Element =         Type-Element
        !           574:                 [ Marque-Inclus TypeReference
        !           575:                           Designation [ Marque-SemiExpansion ] ]
        !           576:                 [ Label ]
        !           577:                 [ Marque-Holophraste ]
        !           578:                 < Marque-Attribut  Numero-Classe  Numero-Attribut
        !           579:                   Valeur-Attribut >
        !           580:                 < Regle-Presentation >
        !           581:                 [ Commentaire ]
        !           582:                 [ Contenu ] .
        !           583: 
        !           584: Type-Element =  [ Marque-Classe Numero-Classe ]
        !           585:                   Marque-Type Numero-Type .
        !           586: Numero-Classe =   NUMERO .
        !           587: Marque-Type =     O20 .
        !           588: Numero-Type =     NUMERO .
        !           589: 
        !           590: Marque-Inclus =   O9 .
        !           591: TypeReference =   Marque-Renvoi /
        !           592:                   Marque-Inclusion /
        !           593:                   Marque-Expansion .
        !           594: Marque-Renvoi =   'r' .
        !           595: Marque-Inclusion ='i' .
        !           596: Marque-Expansion ='e' .
        !           597: Marque-SemiExpansion = O21 .
        !           598: 
        !           599: Marque-Attribut = O1 .
        !           600: Numero-Attribut = NUMERO .
        !           601: Valeur-Attribut = Valeur-Absolue Signe /
        !           602:                   Valeur-Texte /
        !           603:                   TypeReference Designation /
        !           604:                   Numero-Valeur .
        !           605: Valeur-Absolue =  NUMERO .
        !           606: Signe =           '+' / '-' .
        !           607: Valeur-Texte =    CHAINECAR .
        !           608: Numero-Valeur =   NUMERO .
        !           609: \end{verbatim}
        !           610: 
        !           611: \section{Re`gles de pre'sentation spe'cifiques}
        !           612: 
        !           613: Dans chaque e'le'ment peuvent apparai^tre une ou plusieurs re`gles de
        !           614: pre'sentation, ou me^me aucune. S'il n'y a pas de re`gle de pre'sentation,
        !           615: l'e'le'ment sera affiche' ou imprime' selon toutes les re`gles de'finies dans le
        !           616: sche'ma de pre'sentation. Si des re`gles de pre'sentation sont pre'sentes, chacune
        !           617: sera applique'e a` l'e'le'ment a` la place de (ou modifiera) la re`gle de me^me
        !           618: type de'finie dans le sche'ma de pre'sentation, seules les re`gles du sche'ma de
        !           619: pre'sentation qui ne sont pas rede'finies dans l'e'le'ment lui e'tant applique'es
        !           620: telles quelles.
        !           621: 
        !           622: Dans le fichier pivot chaque re`gle de pre'sentation spe'cifique commence par une
        !           623: {\tt Marque-Regle}. Cette marque est suivie du nume'ro de la vue a` laquelle
        !           624: se rapporte la re`gle, du type de la boi^te concerne'e et du contenu de la
        !           625: re`gle. Le nume'ro de vue {\tt Numero-Vue} est le rang de la vue dans la table
        !           626: des vues du sche'ma de pre'sentation. Le type de la boi^te {\tt Type-Boite}
        !           627: vaut 0 si la re`gle s'applique a` la boi^te de l'e'le'ment lui-me^me. Si la re`gle
        !           628: s'applique a` une boi^te de pre'sentation associe'e a` l'e'le'ment, {\tt Type-Boite}
        !           629: est le nume'ro de cette boi^te de pre'sentation (rang dans la table des boi^tes
        !           630: de pre'sentation, qui est une partie du sche'ma de pre'sentation). Le contenu de
        !           631: la re`gle diffe`re selon le type de re`gle. Ce type est indique' par un caracte`re
        !           632: au de'but du contenu.
        !           633: 
        !           634: \begin{verbatim}
        !           635: Regle-Presentation= Marque-Regle Numero-Vue Type-Boite Contenu-Regle.
        !           636: Marque-Regle =    O7 .
        !           637: Numero-Vue =      NUMERO .
        !           638: Type-Boite =      NUMERO .
        !           639: Contenu-Regle =   Marque-Hauteur Dimension /
        !           640:                   Marque-Largeur Dimension /
        !           641:                   Marque-Position Distance Signe /
        !           642:                   Marque-Corps Distance /
        !           643:                   Marque-Style CARACTERE /
        !           644:                   Marque-Famille CARACTERE /
        !           645:                   Marque-NoBreak1 Distance /
        !           646:                   Marque-NoBreak2 Distance /
        !           647:                   Marque-Ajuste Alignement /
        !           648:                   Marque-Justif Booleen /
        !           649:                   Marque-CoupureMots Booleen /
        !           650:                   Marque-Retrait Distance Signe /
        !           651:                   Marque-Interligne Distance /
        !           652:                   Marque-Souligne CARACTERE /
        !           653:                   Marque-SoulEpaisseur CARACTERE /
        !           654:                   Marque-StyleTrait CARACTERE /
        !           655:                   Marque-EpaisseurTrait        Distance /
        !           656:                   Marque-TrameRemplissage Indice /
        !           657:                   Marque-CouleurFond Indice /
        !           658:                   Marque-CouleurTrace Indice /
        !           659:                   Marque-ImageDescriptor CroppingFrame 
        !           660:                                          ImagePresentation 
        !           661:                                          ImageType .
        !           662: \end{verbatim}                  
        !           663: 
        !           664: \subsection{Dimensions}
        !           665: 
        !           666: Une re`gle de hauteur ou une re`gle de largeur peut e^tre absolue ou
        !           667: relative. Ceci est indique' par le premier caracte`re ({\tt Type-Dimension})
        !           668: qui suit la marque de hauteur ou de largeur.
        !           669: 
        !           670: Si la re`gle de hauteur ou de largeur est absolue, elle est applique'e
        !           671: {\em a` la place} de la re`gle indique'e par le sche'ma de pre'sentation et les
        !           672: parame`tres qui suivent le {\tt Type-Dimension} constituent cette re`gle de
        !           673: hauteur (ou de largeur) a` appliquer a` l'e'le'ment. La {\tt Valeur}
        !           674: (un entier sur deux octets) indique la hauteur (ou la largeur) de la boi^te
        !           675: de l'e'le'ment~; l'{\tt Unite-Dimension} indique si cette hauteur (ou
        !           676: largeur) est exprime'e en points typographiques ({\tt 'P'}) ou en dixie`mes
        !           677: de caracte`res ({\tt 'C'}), le cas {\tt Pour-Cent} e'tant exclus~; enfin le
        !           678: {\tt Signe} est toujours {\tt '+'}.
        !           679: 
        !           680: Si la re`gle de hauteur ou de largeur est relative, elle {\em modifie}
        !           681: la re`gle indique'e par le sche'ma de pre'sentation~: la hauteur (ou la largeur)
        !           682: de l'e'le'ment auquel s'applique la re`gle est relative a` celle de l'e'le'ment
        !           683: (dit de re'fe'rence) indique' par la re`gle de hauteur (ou de largeur) du
        !           684: sche'ma de pre'sentation.
        !           685: Seule la relation qui lie ces dimensions est indique'e dans la re`gle
        !           686: spe'cifique. Si l'{\tt Unite-Dimension} est {\tt Pour-Cent} (code' {\tt '\%'}),
        !           687: la {\tt Valeur} indique le pourcentage de la hauteur (ou de la largeur)
        !           688: de la boi^te a` laquelle s'applique la re`gle, par rapport a` la hauteur (ou la largeur) de la boi^te de l'e'le'ment de re'fe'rence~; et dans ce cas le
        !           689: {\tt Signe} est toujours {\tt '+'}. Si l'{\tt Unite-Dimension} est
        !           690: {\tt Point-Typo} ou {\tt Caracteres}, la {\tt Valeur} indique la diffe'rence
        !           691: entre la hauteur de la boi^te de re'fe'rence et celle de l'e'le'ment auquel
        !           692: s'applique la re`gle, cette diffe'rence e'tant exprime'e en points
        !           693: typographiques ou en dixie`mes de caracte`res, selon l'{\tt Unite-Dimension}.
        !           694: Le signe indique alors si la boi^te de l'e'le'ment auquel s'applique la
        !           695: re`gle est plus petite (signe {\tt '-'}) ou plus grande (signe {\tt '+'})
        !           696: que la boi^te de re'fe'rence.
        !           697: 
        !           698: Les deux unite's de longueur que sont le point typographique (1/72 pouce) et
        !           699: le dixie`me de caracte`re permettent d'exprimer des distances absolues ou
        !           700: relatives. La premie`re est une unite' absolue, la seconde est relative.
        !           701: Avec cette unite' relative, un changement de corps provoque un
        !           702: changement de la hauteur (ou de la largeur, selon le type de la re`gle),
        !           703: alors que la hauteur (ou la largeur) reste fixe si l'unite' est le point
        !           704: typographique.
        !           705: 
        !           706: \begin{verbatim}
        !           707: Marque-Hauteur =  'H' .
        !           708: Marque-Largeur =  'L' .
        !           709: Dimension =       Type-Dimension Valeur Unite-Dimension Signe .
        !           710: Type-Dimension =  Absolue / Relative .
        !           711: Absolue =         'A' .
        !           712: Relative =        'R' .
        !           713: Valeur =          NUMERO .
        !           714: Unite-Dimension=  Point-Typo / Caracteres / Pour-Cent .
        !           715: Point-Typo =      'P' .
        !           716: Caracteres =      'C' .
        !           717: Pour-Cent =       '%' .
        !           718: \end{verbatim}
        !           719: 
        !           720: \subsection{Position}
        !           721: \label{position}
        !           722: 
        !           723: Deux types de re`gles permettent de changer la position horizontale ou
        !           724: la position verticale de la boi^te associe'e a` l'e'le'ment qui porte la re`gle.
        !           725: Comme pour une re`gle de hauteur ou de largeur relative, il s'agit d'une
        !           726: modification de la re`gle de'finie dans le sche'ma de pre'sentation. La
        !           727: re`gle de pre'sentation spe'cifique indique de quelle distance la boi^te
        !           728: doit e^tre de'cale'e par rapport a` la position de'finie dans le sche'ma de
        !           729: pre'sentation. Apre`s le type de la re`gle, apparaissent, dans l'ordre, cette
        !           730: distance de de'calage et le signe (le sens) du de'calage.
        !           731: 
        !           732: \begin{verbatim}
        !           733: Marque-Position =  Marque-Position-X / Marque-Position-Y .
        !           734: Marque-Position-X = 'X' .
        !           735: Marque-Position-Y = 'Y' .
        !           736: Distance =        Valeur Unite .
        !           737: Unite =           Point-Typo / Caracteres .
        !           738: \end{verbatim}
        !           739: 
        !           740: \subsection{Polices de caracte`res}
        !           741: 
        !           742: Trois types de re`gles de pre'sentation permettent de de'terminer la police a`
        !           743: utiliser pour afficher le texte contenu dans un e'le'ment. La force de corps
        !           744: est indique'e par la re`gle Corps, qui est constitue'e d'une {\tt Marque-Corps}
        !           745: suivie d'une distance~: une valeur entie`re et une unite'. Cette distance
        !           746: est repre'sente'e, de la me^me fac,on que dans une re`gle de position
        !           747: (voir section~\ref{position}), par un nombre (sur deux octets) et un caracte`re
        !           748: indiquant l'unite'. Si l'unite' est le point typographique, le nombre indique
        !           749: la force de corps en points~; si l'unite' est le caracte`re, le nombre indique
        !           750: le niveau de taille (1=tout petit, 2=petit, etc.) et ce niveau de taille est
        !           751: interpre'te' par le Me'diateur pour le choix du corps re'el, en fonction d'une
        !           752: table de correspondance que l'utilisateur peut contro^ler.
        !           753: 
        !           754: La forme des caracte`res est de'termine'e par deux re`gles~: la re`gle de style
        !           755: et la re`gle de famille. Chacune de ces re`gles n'a qu'un parame`tre, un
        !           756: caracte`re. Selon la re`gle, ce caracte`re repre'sente le style de la police
        !           757: a` utiliser ({\tt 'R'} = romain, {\tt 'B'} = gras, {\tt 'I'} = italique,
        !           758: {\tt 'O'} = oblique, {\tt 'G'} = gras italique, {\tt 'Q'} = gras oblique...)
        !           759: ou sa famille ({\tt 'T'} = Times, {\tt 'H'} = Helvetica, {\tt 'C'} =
        !           760: Courier...).
        !           761: 
        !           762: \begin{verbatim}
        !           763: Marque-Corps =    'T' .
        !           764: Marque-Style =    'S' .
        !           765: Marque-Famille =  'F' .
        !           766: \end{verbatim}
        !           767: 
        !           768: \subsection{Coupures}
        !           769: 
        !           770: Une re`gle de hauteur minimum avant coupure ({\tt NoBreak1}) indique que
        !           771: la boi^te de l'e'le'ment auquel elle se rapporte ne peut e^tre coupe'e par
        !           772: un saut de page qu'au-dela` d'une certaine distance depuis le haut de la
        !           773: boi^te. L'unique parame`tre apre`s la {\tt Marque-NoBreak1} identifiant
        !           774: la re`gle est cette distance minimum avant coupure, qui est exprime'e de
        !           775: la me^me fac,on que dans une re`gle de positionnement (voir section~\ref{position}).
        !           776: 
        !           777: De me^me, une re`gle de hauteur minimum apre`s coupure ({\tt NoBreak2})
        !           778: indique que la boi^te de l'e'le'ment auquel elle se rapporte ne peut e^tre
        !           779: coupe'e par un saut de page qu'avant une certaine distance du bas de la
        !           780: boi^te. Cette hauteur minimum est exprime'e de la me^me fac,on que dans
        !           781: la re`gle pre'ce'dente.
        !           782: 
        !           783: \begin{verbatim}
        !           784: Marque-NoBreak1 =  '1' .
        !           785: Marque-NoBreak2 =  '2' .
        !           786: \end{verbatim}
        !           787: 
        !           788: \subsection{Mise en lignes}
        !           789: 
        !           790: Une re`gle d'alignement modifie le mode d'alignement des lignes de texte
        !           791: contenues dans l'e'le'ment sur lequel elle porte. Ce type de re`gle n'a qu'un
        !           792: parame`tre, le mode d'alignement, qui indique si les lignes de texte doivent
        !           793: e^tre aligne'es sur le co^te' gauche de l'e'le'ment (fer a` gauche), sur son co^te'
        !           794: droit (fer a` droite), si elles doivent e^tre centre'es dans l'e'le'ment ou encore
        !           795: aligne'es a` gauche avec des pointille's pour comple'ter la dernie`re ligne.
        !           796: 
        !           797: \begin{verbatim}
        !           798: Marque-Ajuste =   'A' .
        !           799: Alignement =      Align-Gauche / Align-Droite / Centre / Pointille .
        !           800: Align-Gauche =    'G' .
        !           801: Align-Droite =    'D' .
        !           802: Centre =          'C' .
        !           803: Pointille =       'P' .
        !           804: \end{verbatim}
        !           805: 
        !           806: Une re`gle de justification indique seulement si les lignes de texte contenues
        !           807: dans l'e'le'ment doivent e^tre justifie'es, c'est a` dire e'tire'es de fac,on a`
        !           808: atteindre les bords de leur boi^te englobante, ou si elles conservent leur
        !           809: longueur propre, avec un espace fixe entre les mots. Dans le cas ou` les
        !           810: lignes sont justifie'es, le mode d'alignement, spe'cifie' par une re`gle du type
        !           811: pre'ce'dent, n'a d'utilite' que pour de'terminer la position horizontale de la
        !           812: dernie`re ligne des boi^tes mises en lignes (par exemple les paragraphes),
        !           813: puisque les autres lignes occupent toute la largeur de leur boi^te
        !           814: englobante.
        !           815: Dans une re`gle de justification, la marque identifiant le type de re`gle est
        !           816: suivie d'un caracte`re qui indique si la justification doit e^tre faite
        !           817: ({\tt 'V'}) ou non ({\tt 'F'}).
        !           818: 
        !           819: \begin{verbatim}
        !           820: Marque-Justif =   'J' .
        !           821: Booleen =         Vrai / Faux .
        !           822: Vrai =            'V' .
        !           823: Faux =            'F' .
        !           824: \end{verbatim}
        !           825: 
        !           826: Une re`gle de coupure des mots indique si les mots doivent e^tre coupe's en
        !           827: fin de ligne ou non. Cette re`gle est forme'e comme une re`gle de
        !           828: justification~: la marque identifiant le type de re`gle est suivie d'un
        !           829: caracte`re qui indique si la coupure des mots doit e^tre faite
        !           830: ({\tt 'V'}) ou non ({\tt 'F'}).
        !           831: 
        !           832: \begin{verbatim}
        !           833: Marque-CoupureMots = 'C' .
        !           834: \end{verbatim}
        !           835: 
        !           836: Une re`gle retrait indique le de'calage horizontal du de'but de la premie`re
        !           837: ligne des boi^tes mises en lignes. Si le de'calage est positif, la premie`re
        !           838: ligne est de'cale'e a` droite, en retrait des autres~; si le de'calage est
        !           839: ne'gatif, la premie`re ligne est de'cale'e a` gauche. Apre`s l'indication du type
        !           840: de re`gle, le de'calage est repre'sente' par son amplitude (une distance
        !           841: code'e comme dans une re`gle de positionnement, voir section~\ref{position})
        !           842: et son signe (un caracte`re {\tt '+'} ou {\tt '-'}).
        !           843: 
        !           844: Une re`gle interligne donne la distance qui se'pare deux lignes conse'cutives
        !           845: dans une boi^te mise en lignes. La marque indiquant le type de la re`gle est
        !           846: suivie d'une distance, code'e comme dans une re`gle de positionnement
        !           847: (voir section~\ref{position}), qui est la valeur de l'interligne.
        !           848: 
        !           849: \begin{verbatim}
        !           850: Marque-Retrait =  'R' .
        !           851: Marque-Interligne='I' .
        !           852: \end{verbatim}
        !           853: 
        !           854: \subsection{Soulignement}
        !           855: 
        !           856: Une re`gle de soulignement modifie le mode de soulignement des lignes de texte
        !           857: contenues dans l'e'le'ment sur lequel elle porte. Ce type de re`gle n'a qu'un
        !           858: parame`tre, le mode de soulignement, qui indique si les lignes de texte doivent
        !           859: e^tre souligne'es, surligne'es ou biffe'es. Dans une re`gle de soulignement, 
        !           860: la marque identifiant le type de re`gle est suivie d'un caracte`re identifiant
        !           861: le type de soulignement ({\tt 'U'} = souligne', {\tt 'O'} = surligne', 
        !           862: {\tt 'C'} = biffe')
        !           863: 
        !           864: \begin{verbatim}
        !           865: Marque-Souligne =  'U' .
        !           866: \end{verbatim}
        !           867: 
        !           868: Une re`gle d'e'paisseur de soulignement modifie l'e'paisseur du trait de soulignement des lignes de texte
        !           869: contenues dans l'e'le'ment sur lequel elle porte. Ce type de re`gle n'a qu'un
        !           870: parame`tre, l'e'paisseur de soulignement, qui indique si le trait doit e^tre fin ou e'pais.
        !           871: Dans une re`gle d'e'paisseur de soulignement, 
        !           872: la marque identifiant le type de re`gle est suivie d'un caracte`re identifiant
        !           873: le type d'e'paisseur ({\tt 'N'} = fin, {\tt 'T'} = e'pais) 
        !           874: 
        !           875: \begin{verbatim}
        !           876: Marque-SoulEpaisseur =  'E' .
        !           877: \end{verbatim}
        !           878: 
        !           879: \subsection{Style de trait}
        !           880: 
        !           881: Une re`gle de style de trait modifie le style du trace' des e'le'ments de base
        !           882: graphiques contenus dans l'e'le'ment sur lequel porte la re`gle. Ce type de
        !           883: re`gle n'a qu'un parame`tre qui indique si les traits doivent e^tre continus,
        !           884: pointille's ou tirete's. La marque identifiant le type de re`gle est suivie
        !           885: d'un caracte`re identifiant le style du trace' ({\tt 'S'} = continu',
        !           886: {\tt '-'} = tirete', {\tt '.'} = pointille').
        !           887: 
        !           888: \begin{verbatim}
        !           889: Marque-StyleTrait = 'l' .
        !           890: \end{verbatim}
        !           891: 
        !           892: \subsection{Epaisseur des traits}
        !           893: 
        !           894: Une re`gle d'e'paisseur de trait modifie l'e'paisseur de trait des e'le'ments
        !           895: de base graphiques contenus dans l'e'le'ment sur lequel porte la re`gle.
        !           896: Ce type de re`gle n'a qu'un parame`tre qui indique l'e'paisseur des traits.
        !           897: La marque identifiant le type de re`gle est suivie de ce parame`tre
        !           898: exprime' de la me^me fac,on qu'une distance dans une re'gle de position
        !           899: (voir section~\ref{position}).
        !           900: 
        !           901: \begin{verbatim}
        !           902: Marque-EpaisseurTrait = 'W' .
        !           903: \end{verbatim}
        !           904: 
        !           905: \subsection{Trame de remplissage}
        !           906: 
        !           907: Une re`gle trame de remplissage de'termine le motif a` utiliser pour remplir
        !           908: la surface des e'le'ments de base graphiques contenus dans l'e'le'ment sur
        !           909: lequel porte la re`gle. Ce type de re`gle n'a qu'un parame`tre qui indique
        !           910: le motif a` utiliser. Celui-ci est repre'sente' par un entier code' sur deux
        !           911: octets qui est l'indice dans la table des motifs de Thot. Cette table
        !           912: se trouve dans le fichier {\tt thot.pattern}.
        !           913: Par convention l'indice 0 indique qu'il n'y a pas de remplissage des surfaces.
        !           914: 
        !           915: \begin{verbatim}
        !           916: Marque-TrameRemplissage = 'p' .
        !           917: Indice = NUMERO .
        !           918: \end{verbatim}
        !           919: 
        !           920: \subsection{Couleurs}
        !           921: 
        !           922: Deux re`gles diffe'rentes permettent de modifier la couleur de tous les
        !           923: e'le'ments de base contenus dans un e'le'ment. L'une modifie la couleur de
        !           924: fond, l'autre la couleur de trace'. Ces deux re'gles ont la me^me forme~:
        !           925: la marque identifiant le type de re`gle ({\tt Marque-CouleurFond} ou
        !           926: {\tt Marque-CouleurTrace}) est suivie d'un entier code' sur deux octets
        !           927: qui repre'sente la couleur a` utiliser. Cet entier est le rang de la
        !           928: couleur dans la table des couleurs de Thot qui se trouve dans le fichier
        !           929: {\tt thot.color}.
        !           930: Par convention, le rang 0 repre'sente le blanc et le rang 1 repre'sente
        !           931: le noir.
        !           932: 
        !           933: \begin{verbatim}
        !           934: Marque-CouleurFond = 'b' .
        !           935: Marque-CouleurTrace = 't' .
        !           936: \end{verbatim}
        !           937: 
        !           938: \subsection{Pre'sentation des images}
        !           939: 
        !           940: Une re`gle de pre'sentation des images ne peut e^tre associe'e qu'a` un
        !           941: e'le'ment de base de type image. Elle indique le type de l'image auquel
        !           942: fait re'fe'rence l'e'le'ment sur lequel elle porte, le fene^trage a` appliquer 
        !           943: sur l'image externe a` laquelle on fait re'fe'rence et le type de cadrage
        !           944: qu'on applique a` cette image pour la mettre dans le document.
        !           945: Ce type de re`gle a` trois parame`tres :
        !           946: \begin{itemize}
        !           947: \item le fene^trage a` appliquer, qui de'finit la partie de l'image externe.
        !           948: Cette fene^tre est de'finie par une origine, une hauteur et une largeur,
        !           949: en points typographiques, dans un repe`re dont l'origine est en haut a`
        !           950: gauche de l'image externe avec un axe des abscisses croissantes vers
        !           951: la droite et un axe des ordonne'es croissantes vers le bas.
        !           952: \item le cadrage a` appliquer a` la fene^tre de l'image. Le cadrage 
        !           953: de'crit la manie`re dont on affiche la fene^tre pre'ce'demment de'finie dans
        !           954: l'espace
        !           955: de composition re'serve' a` l'e'le'ment logique IMAGE sur lequel porte la re`gle 
        !           956: de pre'sentation. Ce cadrage est code' sur un caracte`re~: {\tt 'S'} = sans modifications,
        !           957: {\tt 'M'} = me^mes proportions, {\tt 'P'} = plein cadre.
        !           958: \item le type de l'image externe auquel fait re'fe'rence l'e'le'ment logique IMAGE sur lequel porte la re`gle 
        !           959: de pre'sentation. Le type de l'image est code' dans la re`gle par un entier~:
        !           960: \begin{itemize}
        !           961: \item {\tt 1} = Bitmap (Xlib XReadBitmapFile format)
        !           962: \item {\tt 2} = XDump (XWD format)
        !           963: \item {\tt 3} = EPSF (Encapsulated PostScript file)
        !           964: \item {\tt 5} = CGM (ISO 8632, codage clear text ou binary )
        !           965: \item {\tt 6} = idraw (Idraw 1.15 format)
        !           966: \item {\tt 7} = gidraw (Grif Idraw 1.15 format)
        !           967: \item {\tt 8} = TIFF 5.0 (Tag Image File Format)
        !           968: \item {\tt 9} = HPGL
        !           969: \end{itemize}
        !           970: \end{itemize}
        !           971: 
        !           972: \begin{verbatim}
        !           973: Marque-ImageDescriptor = 'P' .
        !           974: CroppingFrame =           X Y Largeur Hauteur .
        !           975: ImagePresentation =       CARACTERE .
        !           976: ImageType =               NUMERO .
        !           977: X =                       NUMERO .
        !           978: Y =                       NUMERO .
        !           979: Largeur =                 NUMERO .
        !           980: Hauteur =                 NUMERO .
        !           981: \end{verbatim}
        !           982: 
        !           983: \section{Contenu d'un e'le'ment}
        !           984: \label{contenu}
        !           985: 
        !           986: La repre'sentation du contenu des e'le'ments diffe`re selon que l'e'le'ment
        !           987: repre'sente' est une feuille de la structure, une re'fe'rence, un e'le'ment
        !           988: structure', un parame`tre ou une constante. Le sche'ma de structure permet
        !           989: d'interpre'ter correctement la repre'sentation du contenu, puisque la
        !           990: structure de chaque type d'e'le'ment y est de'finie.
        !           991: 
        !           992: \begin{verbatim}
        !           993: Contenu =         Feuille / Reference / Constante /
        !           994:                   Parametre / Elem-Struct .
        !           995: \end{verbatim}
        !           996: 
        !           997: S'il s'agit d'une feuille, le contenu est constitue' d'une
        !           998: indication e'ventuelle de l'alphabet ou de la langue, d'un octet
        !           999: {\tt Marque-Debut} suivi du contenu de la feuille et d'un octet
        !          1000: {\tt Marque-Fin}.
        !          1001: 
        !          1002: \begin{verbatim}
        !          1003: Feuille =       [ Alphab-Langue ] Marque-Debut Contenu-Feuille
        !          1004:                   Marque-Fin .
        !          1005: Alphab-Langue =   Alphabet / Langue .
        !          1006: Alphabet =        CARACTERE .
        !          1007: Langue =          Marque-Langue Numero-Langue .
        !          1008: Numero-Langue =   OCTET .
        !          1009: Contenu-Feuille = CHAINECAR / CARACTERE /
        !          1010:                   Indic-Page / Ident-Paire .
        !          1011: \end{verbatim}
        !          1012: 
        !          1013: \subsection{Chai^nes de caracte`res, graphiques, symboles et images}
        !          1014: 
        !          1015: Si la feuille est du type chai^ne de caracte`res ou image (c'est indique'
        !          1016: dans le sche'ma de structure), le contenu de la feuille est une suite de
        !          1017: caracte`res termine'e par un octet nul. S'il s'agit d'un e'le'ment graphique
        !          1018: ou d'un symbole mathe'matique, le contenu est re'duit a` un seul caracte`re
        !          1019: repre'sentant l'e'le'ment graphique ou le symbole. Dans tous les cas, si la
        !          1020: feuille est vide, le contenu est re'duit a` un octet nul. Le codage des
        !          1021: symboles et e'le'ments graphiques est donne' page~\pageref{pagegraph}.
        !          1022: 
        !          1023: Dans le cas d'une chai^ne de caracte`res, la {\tt Marque-Debut} est
        !          1024: pre'ce'de'e d'une indication de l'alphabet ou de la langue. L'alphabet
        !          1025: n'est utilise' que dans les versions 3 et pre'ce'dentes de la forme
        !          1026: pivot (voir section~\ref{versionpivot}). A` partir de la version 4, c'est
        !          1027: la langue qui est indique'e.
        !          1028: 
        !          1029: Dans le cas de l'alphabet, un simple caracte`re indique l'alphabet utilise'
        !          1030: ({\tt 'L'}=Latin, {\tt 'G'}=Grec,...). Ce caracte`re est facultatif, son
        !          1031: absence indiquant l'alphabet par de'faut, qui est l'alphabet latin.
        !          1032: 
        !          1033: Dans le cas de la langue, un octet {\tt Marque-Langue} pre'ce`de le nume'ro
        !          1034: de langue, code' sur un octet. Cette indication de la langue n'est pre'sente
        !          1035: que s'il ne s'agit pas de la premie`re langue. Le nume'ro de langue est le
        !          1036: rang - 1 de la langue dans la liste des langues qui figure en te^te du
        !          1037: document (voir section~\ref{listelangues}).
        !          1038: 
        !          1039: Le contenu d'une chai^ne de caracte`res est simplement la suite des codes
        !          1040: des caracte`res qui constituent la chai^ne. Le code des caracte`res est
        !          1041: de'fini par l'alphabet (ISO Latin-1 pour 'L' ou Symbol pour 'G') ou la langue.
        !          1042: Dans le cas d'une image, ce n'est pas l'image elle-me^me qui constitue le
        !          1043: contenu de la feuille, mais le nom du fichier qui la contient.
        !          1044: 
        !          1045: \subsection{Marques de page}
        !          1046: 
        !          1047: Si la feuille est du type marque de page (c'est indique' dans le sche'ma de
        !          1048: structure), son contenu, entre {\tt Marque-Debut} et {\tt Marque-Fin}, est
        !          1049: constitue', dans l'ordre, du nume'ro de page (un entier sur 2 octets), du
        !          1050: nume'ro de vue (un entier sur deux octets), du type de page (un caracte`re)
        !          1051: et de l'indicateur de modification de la page (un caracte`re). Ces quatre
        !          1052: e'le'ments sont toujours pre'sents.
        !          1053: 
        !          1054: \begin{verbatim}
        !          1055: Indic-Page =      Numero-Page Numero-Vue Type-Page Page-Modif .
        !          1056: Numero-Page =     NUMERO .
        !          1057: Type-Page =       Calcule / Debut / Utilisateur / Rappel .
        !          1058: Calcule =         'C' .
        !          1059: Debut =           'D' .
        !          1060: Utilisateur =     'U' .
        !          1061: Rappel =          'R' .
        !          1062: Page-Modif =      Booleen .
        !          1063: \end{verbatim}
        !          1064: 
        !          1065: Le de'coupage d'un document en pages est re'alise' pendant l'e'dition, sur
        !          1066: demande explicite de l'utilisateur. Il a principalement pour effet
        !          1067: d'introduire dans l'arbre abstrait du document (structure logique spe'cifique)
        !          1068: des e'le'ments spe'ciaux, appele's marques de page, qui sont place's
        !          1069: inde'pendemment des sche'mas de structure (structures logiques ge'ne'riques),
        !          1070: la` ou` tombe la frontie`re de page dans l'image du document.
        !          1071: 
        !          1072: Lors de la sauvegarde du document, ces marques de page sont conserve'es dans
        !          1073: le fichier pivot, comme tout e'le'ment de l'arbre abstrait. Ce sont des e'le'ments
        !          1074: feuilles de la structure qui contiennent quatre informations~: le nume'ro de
        !          1075: page, la vue concerne'e, le type de saut de page et l'indicateur de mise a`
        !          1076: jour de la page.
        !          1077: 
        !          1078: Le nume'ro de page e'vite de recompter les marques de page pre'ce'dentes lors
        !          1079: du chargement du document. La vue concerne'e est ne'cessaire puisque les
        !          1080: marques de page des diffe'rentes vues se retrouvent dans le fichier pivot
        !          1081: unique du document.
        !          1082: 
        !          1083: Trois types de sauts de page peuvent e^tre repre'sente's par une marque de
        !          1084: page~:
        !          1085: 
        !          1086: \begin{itemize}
        !          1087: \item
        !          1088: les sauts de page qui ont e'te' calcule's lors du de'coupage du document en
        !          1089: pages, en fonction de la hauteur des pages~;
        !          1090: \item
        !          1091: les sauts de page qui de'coulent de la structure logique du document et qui
        !          1092: sont lie's au de'but de certains e'le'ments (chapitre ou annexe par exemple)~;
        !          1093: \item
        !          1094: les sauts de page qui sont impose's par l'utilisateur pour des
        !          1095: raisons qui lui sont propres.
        !          1096: \item
        !          1097: les sauts de page qui rappellent un saut de page pre'ce'dent, lorsque celui-ci
        !          1098: traverse plusieurs e'le'ments.
        !          1099: \end{itemize}
        !          1100: 
        !          1101: Les premiers peuvent e^tre recalcule's par l'e'diteur et sont susceptibles de
        !          1102: se de'placer par rapport a` la structure logique spe'cifique et au contenu du
        !          1103: document lorsqu'il est modifie'. Les seconds sont e'galement place's par
        !          1104: l'e'diteur, mais ils occupent toujours la me^me place dans la structure logique
        !          1105: du document. Les derniers ne peuvent e^tre ni calcule's ni de'place's
        !          1106: automatiquement par l'e'diteur, qui ne peut que les inse'rer ou les supprimer
        !          1107: sur demande de l'utilisateur.
        !          1108: 
        !          1109: L'indicateur de mise a` jour de la page indique si le contenu de la page
        !          1110: (tout ce qui est compris entre cette marque de page et la suivante) a e'te'
        !          1111: modifie' depuis l'insertion de la marque de page dans le document. Lorsque
        !          1112: l'utilisateur demande de refaire le de'coupage en pages du document, il est
        !          1113: possible gra^ce a` cet indicateur de ne reformater que les pages qui le
        !          1114: ne'cessitent~: on reformate depuis une marque de page portant cet indicateur
        !          1115: (quel que soit le type du saut de page) jusqu'a` la prochaine marque
        !          1116: correspondant a` un saut de page de type utilisateur ou de'but d'e'le'ment.
        !          1117: 
        !          1118: \subsection{Paires de marques}
        !          1119: \label{paire}
        !          1120: 
        !          1121: Si la feuille est une marque appartenant a` une paire (c'est indique' dans
        !          1122: le sche'ma de structure), son contenu, entre {\tt Marque-Debut} et
        !          1123: {\tt Marque-Fin}, est un entier code' sur 4 octets qui identifie la paire
        !          1124: de marques de fac,on unique dans tout le document. Ces quatre octets
        !          1125: sont toujours pre'sents.
        !          1126: 
        !          1127: \begin{verbatim}
        !          1128: Ident-Paire =  NUMERO NUMERO .
        !          1129: \end{verbatim}
        !          1130: 
        !          1131: \subsection{Re'fe'rences}
        !          1132: \label{refer}
        !          1133: 
        !          1134: Si la feuille est une re'fe'rence, elle est repre'sente'e par un octet
        !          1135: {\tt Marque-Refer} suivi de l'indication du type de re'fe'rence.
        !          1136: Il y a trois types de re'fe'rences~:
        !          1137: \begin{itemize}
        !          1138: \item
        !          1139: les {\it renvois} qui de'signent simplement un e'le'ment d'un document,
        !          1140: \item
        !          1141: les {\it inclusions sans expansion} qui repre'sentent un document qui doit
        !          1142: e^tre inclus a` la position de cette re'fe'rence, mais sans copie a` l'e'cran
        !          1143: du document inclus.
        !          1144: \item
        !          1145: les {\it inclusions avec expansion} qui repre'sentent un e'le'ment qui doit
        !          1146: e^tre inclus a` la position de cette re'fe'rence, mais avec copie a` l'e'cran
        !          1147: de l'e'le'ment inclus.
        !          1148: \end{itemize}
        !          1149: Le type de re'fe'rence est repre'sente' par un octet ({\tt Marque-Renvoi},
        !          1150: {\tt Marque-Inclusion} ou {\tt Marque-Expansion}). Cet octet est suivi d'un
        !          1151: boole'en marquant s'il s'agit d'une re'fe'rence interne ({\tt Vrai}) ou
        !          1152: externe ({\tt Faux}).
        !          1153: Il y a en effet deux sortes de re'fe'rences, inde'pendemment\footnote{Notons
        !          1154: cependant que les inclusions sans expansion sont toujours des re'fe'rences
        !          1155: externes puisqu'elles de'signent tout un document.} de leur type~:
        !          1156: \begin{itemize}
        !          1157: \item
        !          1158: les re'fe'rences internes~: la re'fe'rence et l'e'le'ment qu'elle de'signe
        !          1159: appartiennent au me^me document,
        !          1160: \item
        !          1161: les re'fe'rence externes~: la re'fe'rence et l'e'le'ment qu'elle de'signe
        !          1162: appartiennent a` des documents diffe'rents.
        !          1163: \end{itemize}
        !          1164: Apre`s le boole'en vient le label de l'e'le'ment de'signe' par la re'fe'rence
        !          1165: (voir page~\pageref{label} pour la repre'sentation du label) et, dans le cas
        !          1166: des re'fe'rences externes, le nom du document contenant l'objet de'signe' par
        !          1167: la re'fe'rence. Ce nom est une simple suite de caracte`res termine'e par un
        !          1168: octet nul.
        !          1169: 
        !          1170: Notons que l'e'le'ment de'signe' peut se trouver aussi bien avant qu'apre`s
        !          1171: la re'fe'rence qui le de'signe. La re'fe'rence peut aussi ne pas e^tre
        !          1172: affecte'e~; dans ce cas le label est une chai^ne vide.
        !          1173: 
        !          1174: \begin{verbatim}
        !          1175: Reference =         Marque-Refer TypeReference Designation .
        !          1176: Marque-Refer =      O18 .
        !          1177: TypeReference =     Marque-Renvoi /
        !          1178:                     Marque-Inclusion /
        !          1179:                     Marque-Expansion .
        !          1180: Designation =       Vrai Label /
        !          1181:                     Faux Label Nom-Document .
        !          1182: Marque-Renvoi =     'r' .
        !          1183: Marque-Inclusion =  'i' .
        !          1184: Marque-Expansion =  'e' .
        !          1185: \end{verbatim}
        !          1186: 
        !          1187: \subsection{Constantes et parame`tres}
        !          1188: 
        !          1189: S'il s'agit d'une constante, il n'y a pas de contenu, puisque
        !          1190: le nume'ro de type permet de retrouver, dans le sche'ma de structure, la
        !          1191: valeur de la constante utilise'e.
        !          1192: 
        !          1193: \begin{verbatim}
        !          1194: Constante =       NIL .
        !          1195: \end{verbatim}
        !          1196: 
        !          1197: De me^me, s'il s'agit de l'utilisation d'un parame`tre dans le document
        !          1198: (et non de la de'finition de sa valeur, qui se trouve au de'but du fichier),
        !          1199: il n'y a pas de contenu, puisque la valeur, s'il y en a une, est unique et
        !          1200: a de'ja` e'te' indique'e au de'but du fichier pivot.
        !          1201: 
        !          1202: \begin{verbatim}
        !          1203: Parametre =       NIL .
        !          1204: \end{verbatim}
        !          1205: 
        !          1206: \subsection{Ele'ments structure's}
        !          1207: 
        !          1208: S'il s'agit d'un e'le'ment structure', le contenu est forme' d'un octet
        !          1209: {\tt Marque-Debut}, suivi de la suite des repre'sentations de chacun des
        !          1210: e'le'ments qu'il contient au niveau imme'diatement infe'rieur, et d'un
        !          1211: octet {\tt Marque-Fin}. Si cet e'le'ment est vide, son contenu est simplement
        !          1212: marque' par les deux octets {\tt Marque-Debut} et {\tt Marque-Fin}.
        !          1213: 
        !          1214: \begin{verbatim}
        !          1215: Elem-Struct =     Marque-Debut  Suite-Elem  Marque-Fin .
        !          1216: Suite-Elem =    < Element > .
        !          1217: \end{verbatim}
        !          1218: 
        !          1219: \section{Codage des e'le'ments graphiques et des symboles}
        !          1220: 
        !          1221: Dans le fichier pivot des documents Thot, les e'le'ments de base graphiques et
        !          1222: symboles sont repre'sente's par un caracte`re avec la convention suivante~: \\
        !          1223: Graphique~:
        !          1224: \label{pagegraph}
        !          1225: 
        !          1226: \begin{description}
        !          1227: \item{ {\tt 'C' } }un cercle inscrit dans la boi^te~: $\bigcirc$
        !          1228: \item{ {\tt 'R' } }un rectangle qui est le contour de la boi^te
        !          1229: \item{ {\tt 'c' } }un rectangle qui est le contour de la boi^te, avec les coins arondis
        !          1230: \item{ {\tt '0'..'9' } }une trame a` l'inte'rieur de la boi^te, le contour de
        !          1231: la boi^te est trace'
        !          1232: \item{ {\tt '\verb+\+260'..'\verb+\+270' } }une trame a` l'inte'rieur de la boi^te, 
        !          1233: le contour de la boi^te n'est pas trace'
        !          1234: \item{ {\tt 't' } }un trait horizontal~: le co^te' supe'rieur de la boi^te~: ---
        !          1235: \item{ {\tt 'h' } }un trait horizontal de la longueur de la boi^te, au milieu
        !          1236: de la boi^te~: ---
        !          1237: \item{ {\tt 'b' } }un trait horizontal~: le co^te' infe'rieur de la boi^te~: \_\_
        !          1238: \item{ {\tt '>' } }une fle`che vers la droite au milieu de la boi^te, de la longueur de la boi^te~: $\rightarrow$
        !          1239: \item{ {\tt '<' } }une fle`che vers la gauche au milieu de la boi^te, de la longueur de la boi^te~: $\leftarrow$
        !          1240: \item{ {\tt 'l' } }un trait vertical~: le co^te' gauche de la boi^te~: $\mid$
        !          1241: \item{ {\tt 'v' } }un trait vertical au milieu de la boi^te, de la hauteur de la boi^te~: $\mid$
        !          1242: \item{ {\tt 'r' } }un trait vertical~: le co^te' droit de la boi^te~: $\mid$
        !          1243: \item{ {\tt '\^{}'} } une fle`che vers le haut au milieu de la boi^te, de la hauteur de la boi^te~: $\uparrow$
        !          1244: \item{ {\tt 'V' } }une fle`che vers le bas au milieu de la boi^te, de la hauteur de la boi^te~: $\downarrow$
        !          1245: \item{ {\tt '/' } }la diagonale Sud-Ouest Nord-Est de la boi^te~: /
        !          1246: \item{ {\tt '} $\backslash$ {\tt '} } la diagonale Nord-Ouest Sud-Est de la boi^te~: $\backslash$
        !          1247: \item{ {\tt 'O' } }la diagonale Nord-Ouest Sud-Est de la boi^te, avec une fle`che en haut~: $\nwarrow$
        !          1248: \item{ {\tt 'e ' } }la diagonale Nord-Ouest Sud-Est de la boi^te, avec une fle`che en bas~: $\searrow$
        !          1249: \item{ {\tt 'E ' } }la diagonale Sud-Ouest Nord-Est de la boi^te, avec une fle`che en haut~: $\nearrow$
        !          1250: \item{ {\tt 'o' } }la diagonale Sud-Ouest Nord-Est de la boi^te, avec une fle`che en bas~: $\swarrow$
        !          1251: \item{ {\tt ' ' } }un e'le'ment transparent~:
        !          1252: \item{ {\tt 'P' }} un rectangle aux coins arrondis avec une barre horizontale en haut
        !          1253: \item{ {\tt 'Q' }} une ellipse avec une barre horizontale en haut~: $\bigcirc$
        !          1254: \item{ {\tt 'W' }} un coin sup\'{e}rieur droit~: $\rceil$
        !          1255: \item{ {\tt 'X' }} un coin inf\'{e}rieur droit~: $\rfloor$
        !          1256: \item{ {\tt 'Y' }} un coin inf\'{e}rieur gauche~: $\lfloor$
        !          1257: \item{ {\tt 'Z' }} un coin sup\'{e}rieur gauche~: $\lceil$
        !          1258: \end{description}
        !          1259: 
        !          1260: Symbole~:
        !          1261: 
        !          1262: \begin{description}
        !          1263: \item{ {\tt 'r' } }un radical de la taille de la boi^te~: $\surd$
        !          1264: \item{ {\tt 'i' } }une inte'grale simple de la hauteur de la boi^te~: $\int$
        !          1265: \item{ {\tt 'c' } }une inte'grale curviligne de la hauteur de la boi^te~: $\oint$
        !          1266: \item{ {\tt 'd' } }une inte'grale double de la hauteur de la boi^te~: $\int\int$
        !          1267: \item{ {\tt 't' } }une inte'grale triple de la hauteur de la boi^te~: $\int\int\int$
        !          1268: \item{ {\tt 'S' } }le symbole de la sommation, de la taille de la boi^te~: $\sum$
        !          1269: \item{ {\tt 'P' } }le symbole du produit de la taille de la boi^te~: $\prod$
        !          1270: \item{ {\tt 'U' } }le symbole de l'union de la taille de la boi^te~: $\cup$
        !          1271: \item{ {\tt 'I' } }le symbole de l'intersection de la taille de la boi^te~: $\cap$
        !          1272: \item{ {\tt '>' } }une fle`che a` droite, de la longueur de la boi^te~: $\rightarrow$
        !          1273: \item{ {\tt '<' } }une fle`che a` gauche, de la longueur de la boi^te~: $\leftarrow$
        !          1274: \item{ {\tt '\^{}'} } une fle`che vers le haut, de la hauteur de la boi^te~: $\uparrow$
        !          1275: \item{ {\tt 'V' } }une fle`che vers le bas, de la hauteur de la boi^te~: $\downarrow$
        !          1276: \item{ {\tt '(' } }une parenthe`se ouvrante, de la hauteur de la boi^te~: (
        !          1277: \item{ {\tt ')' } }une parenthe`se fermante, de la hauteur de la boi^te~: )
        !          1278: \item{ {\tt '\{' } }une accolade ouvrante, de la hauteur de la boi^te~: \{
        !          1279: \item{ {\tt '\}' } }une accolade fermante, de la hauteur de la boi^te~: \}
        !          1280: \item{ {\tt '[' } }un crochet ouvrant, de la hauteur de la boi^te~: [
        !          1281: \item{ {\tt ']' } }un crochet fermant, de la hauteur de la boi^te~: ]
        !          1282: \end{description}
        !          1283: 
        !          1284: \newpage
        !          1285: \section{Grammaire du format pivot}
        !          1286: 
        !          1287: Les re`gles suivantes de'finissent la structure d'un fichier de re'fe'rences
        !          1288: externes entrantes.
        !          1289: 
        !          1290: \begin{verbatim}
        !          1291: Fichier-Ref-Ext =    Elem-Ref < Elem-Ref > .
        !          1292: Elem-Ref =           Label Doc-Externe < Doc-Externe > .
        !          1293: 
        !          1294: Label =              Marque-Label-Chaine CHAINECAR /
        !          1295:                      Marque-Label-Court Numero-Label-Court /
        !          1296:                      Marque-Label-Long Numero-Label-Long .
        !          1297: Marque-Label-Chaine = O11 .
        !          1298: Marque-Label-Court = O12 .
        !          1299: Marque-Label-Long =  O13 .
        !          1300: Numero-Label-Court = NUMERO .
        !          1301: Numero-Label-Long =  NUMERO NUMERO .
        !          1302: 
        !          1303: Doc-Externe =        Marque-Doc-Ext Nom-Document .
        !          1304: Marque-Doc-Ext =     O15 .
        !          1305: Nom-Document =       CHAINECAR .
        !          1306: \end{verbatim}
        !          1307: 
        !          1308: Les re`gles suivantes de'finissent la structure d'un fichier de re'fe'rences
        !          1309: a` modifier.
        !          1310: 
        !          1311: \begin{verbatim}
        !          1312: Fichier-Ref-Modif = El-Ext-Modif < El-Ext-Modif > .
        !          1313: El-Ext-Modif =      Ancien-Label Nouveau-Label
        !          1314:                     Ancien-Doc Nouveau-Doc .
        !          1315: Ancien-Label =      Label .
        !          1316: Nouveau-Label =     Label .
        !          1317: Ancien-Doc =        Doc-Externe .
        !          1318: Nouveau-Doc =       Doc-Externe .
        !          1319: \end{verbatim}
        !          1320: 
        !          1321: Les re`gles suivantes de'finissent la structure d'un fichier pivot.
        !          1322: 
        !          1323: \begin{verbatim}
        !          1324: Fichier-Pivot = [ Version ]
        !          1325:                 [ Label ]
        !          1326:                 < Marque-Langue Nom-Langue >
        !          1327:                 [ Commentaire ]
        !          1328:                   Classe-Document
        !          1329:                 < Classe-Objet >
        !          1330:                 < Marque-Param Param >
        !          1331:                 < Marque-Associe Suite-Associes >
        !          1332:                   Marque-Document Le-Document Marque-Fin-Document .
        !          1333: 
        !          1334: Version =         Marque-Version Marque-Version Numero-Version .
        !          1335: Marque-Version =  O22 .
        !          1336: Numero-Version =  OCTET .
        !          1337: 
        !          1338: Marque-Langue =   O8 .
        !          1339: Nom-Langue =      CHAINECAR .
        !          1340: 
        !          1341: Commentaire =     Marque-Commentaire Longueur-Commentaire
        !          1342:                          Contenu-Commentaire /
        !          1343:                   Marque-Commentaire-Ancien Marque-Debut
        !          1344:                          Texte-Commentaire Marque-Fin .
        !          1345: Marque-Commentaire =        O5 .
        !          1346: Longueur-Commentaire =      NUMERO .
        !          1347: Contenu-Commentaire =       CHAINEOCT .
        !          1348: Marque-Commentaire-Ancien = O3 .
        !          1349: Marque-Debut =              O4 .
        !          1350: Texte-Commentaire =         CHAINECAR .
        !          1351: Marque-Fin =                O6 .
        !          1352: 
        !          1353: Classe-Document = Classe .
        !          1354: Classe-Objet =    Classe .
        !          1355: Classe =          Marque-ClassExt Nom-Schema-Struct
        !          1356:                   [ Code-Schema-Struct ] NomSchema-Pres .
        !          1357: Marque-ClassExt = Marque-Classe / Marque-Extension .
        !          1358: Marque-Classe =   O14 .
        !          1359: Marque-Extension =O10 .
        !          1360: Nom-Schema-Struct=CHAINECAR .
        !          1361: Code-Schema-Struc=NUMERO .
        !          1362: NomSchema-Pres =  CHAINECAR .
        !          1363: 
        !          1364: Marque-Param =    O16 .
        !          1365: Param =           Element .
        !          1366: 
        !          1367: Marque-Associe =  O2 .
        !          1368: Suite-Associes =  Element < Element > .
        !          1369: 
        !          1370: Marque-Document = O19 .
        !          1371: Le-Document =     Element .
        !          1372: Marque-Fin-Document = O26 .
        !          1373: 
        !          1374: Element =         Type-Element
        !          1375:                 [ Marque-Inclus TypeReference
        !          1376:                           Designation [ Marque-SemiExpansion ] ]
        !          1377:                 [ Label ]
        !          1378:                 [ Marque-Holophraste ]
        !          1379:                 < Marque-Attribut  Numero-Classe  Numero-Attribut
        !          1380:                   Valeur-Attribut >
        !          1381:                 < Regle-Presentation >
        !          1382:                 [ Commentaire ]
        !          1383:                 [ Contenu ] .
        !          1384: 
        !          1385: Type-Element =  [ Marque-Classe Numero-Classe ]
        !          1386:                   Marque-Type Numero-Type.
        !          1387: Numero-Classe =   NUMERO .
        !          1388: Marque-Type =     O20 .
        !          1389: Numero-Type =     NUMERO .
        !          1390: 
        !          1391: Marque-Inclus =   O9 .
        !          1392: TypeReference =   Marque-Renvoi /
        !          1393:                   Marque-Inclusion /
        !          1394:                   Marque-Expansion .
        !          1395: Marque-Renvoi =   'r' .
        !          1396: Marque-Inclusion ='i' .
        !          1397: Marque-Expansion ='e' .
        !          1398: Marque-SemiExpansion = O21 .
        !          1399: 
        !          1400: Marque-Holophraste = O23 .
        !          1401: 
        !          1402: Marque-Attribut = O1 .
        !          1403: Numero-Attribut = NUMERO .
        !          1404: Valeur-Attribut = Valeur-Absolue Signe /
        !          1405:                   Valeur-Texte /
        !          1406:                   TypeReference Designation /
        !          1407:                   Numero-Valeur .
        !          1408: Valeur-Absolue =  NUMERO .
        !          1409: Signe =           '+' / '-' .
        !          1410: Valeur-Texte =    CHAINECAR .
        !          1411: Numero-Valeur =   NUMERO .
        !          1412: 
        !          1413: Regle-Presentation= Marque-Regle Numero-Vue
        !          1414:                   Type-Boite Contenu-Regle .
        !          1415: Marque-Regle =    O7 .
        !          1416: Numero-Vue =      NUMERO .
        !          1417: Type-Boite =      NUMERO .
        !          1418: Contenu-Regle =   Marque-Hauteur Dimension /
        !          1419:                   Marque-Largeur Dimension /
        !          1420:                   Marque-Position Distance Signe /
        !          1421:                   Marque-Corps Distance /
        !          1422:                   Marque-Style CARACTERE /
        !          1423:                   Marque-Famille CARACTERE /
        !          1424:                   Marque-NoBreak1 Distance /
        !          1425:                   Marque-NoBreak2 Distance /
        !          1426:                   Marque-Ajuste Alignement /
        !          1427:                   Marque-Justif Booleen /
        !          1428:                   Marque-CoupureMots Booleen /
        !          1429:                   Marque-Retrait Distance Signe /
        !          1430:                   Marque-Interligne Distance /
        !          1431:                   Marque-Souligne CARACTERE /
        !          1432:                   Marque-SoulEpaisseur CARACTERE /
        !          1433:                   Marque-StyleTrait CARACTERE /
        !          1434:                   Marque-EpaisseurTrait        Distance /
        !          1435:                   Marque-TrameRemplissage Indice /
        !          1436:                   Marque-CouleurFond Indice /
        !          1437:                   Marque-CouleurTrace Indice /
        !          1438:                   Marque-ImageDescriptor CroppingFrame 
        !          1439:                                          ImagePresentation 
        !          1440:                                          ImageType .
        !          1441: 
        !          1442: Marque-Hauteur =  'H' .
        !          1443: Marque-Largeur =  'L' .
        !          1444: Dimension =       Type-Dimension Valeur Unite-Dimension Signe .
        !          1445: Type-Dimension =  Absolue / Relative .
        !          1446: Absolue =         'A' .
        !          1447: Relative =        'R' .
        !          1448: Valeur =          NUMERO .
        !          1449: Unite-Dimension=  Point-Typo / Caracteres / Pour-Cent .
        !          1450: Point-Typo =      'P' .
        !          1451: Caracteres =      'C' .
        !          1452: Pour-Cent =       '%' .
        !          1453: 
        !          1454: Marque-Position =  Marque-Position-X / Marque-Position-Y .
        !          1455: Marque-Position-X = 'X' .
        !          1456: Marque-Position-Y = 'Y' .
        !          1457: Distance =        Valeur Unite .
        !          1458: Unite =           Point-Typo / Caracteres .
        !          1459: 
        !          1460: Marque-Corps =    'T' .
        !          1461: Marque-Style =    'S' .
        !          1462: Marque-Famille =  'F' .
        !          1463: 
        !          1464: Marque-NoBreak1 = '1' .
        !          1465: Marque-NoBreak2 = '2' .
        !          1466: 
        !          1467: Marque-Ajuste =   'A' .
        !          1468: Alignement =      Align-Gauche / Align-Droite / Centre / Pointille .
        !          1469: Align-Gauche =    'G' .
        !          1470: Align-Droite =    'D' .
        !          1471: Centre =          'C' .
        !          1472: Pointille =       'P' .
        !          1473: 
        !          1474: Marque-Justif =   'J' .
        !          1475: Booleen =         Vrai / Faux .
        !          1476: Vrai =            'V' .
        !          1477: Faux =            'F' .
        !          1478: 
        !          1479: Marque-CoupureMots =    'C' .
        !          1480: Marque-Retrait =        'R' .
        !          1481: Marque-Interligne =     'I' .
        !          1482: Marque-Souligne =       'U' .
        !          1483: Marque-SoulEpaisseur =  'E' .
        !          1484: Marque-StyleTrait =     'l' .
        !          1485: Marque-EpaisseurTrait = 'W' .
        !          1486: Marque-TrameRemplissage='p' .
        !          1487: Marque-CouleurFond =    'b' .
        !          1488: Marque-CouleurTrace =   't' .
        !          1489: 
        !          1490: Indice =           NUMERO .
        !          1491: 
        !          1492: Marque-ImageDescriptor = 'P' .
        !          1493: CroppingFrame =     X Y Largeur Hauteur .
        !          1494: ImagePresentation = CARACTERE .
        !          1495: ImageType =         NUMERO .
        !          1496: X =                 NUMERO .
        !          1497: Y =                 NUMERO .
        !          1498: Largeur =           NUMERO .
        !          1499: Hauteur =           NUMERO .
        !          1500: 
        !          1501: Contenu =         Feuille / Reference / Constante /
        !          1502:                   Parametre / Elem-Struct .
        !          1503: 
        !          1504: Feuille =       [ Alphab-Langue ] Marque-Debut Contenu-Feuille
        !          1505:                   Marque-Fin.
        !          1506: Alphab-Langue =   Alphabet / Langue .
        !          1507: Alphabet =        CARACTERE .
        !          1508: Langue =          Marque-Langue Numero-Langue .
        !          1509: Numero-Langue =   OCTET .
        !          1510: Contenu-Feuille = CHAINECAR / CARACTERE / Indic-Page / Ident-Paire .
        !          1511: 
        !          1512: Indic-Page =      Numero-Page Numero-Vue Type-Page Page-Modif .
        !          1513: Numero-Page =     NUMERO .
        !          1514: Type-Page =       Calcule / Debut / Utilisateur / Rappel .
        !          1515: Calcule =         'C' .
        !          1516: Debut =           'D' .
        !          1517: Utilisateur =     'U' .
        !          1518: Rappel =          'R' .
        !          1519: Page-Modif =      Booleen .
        !          1520: 
        !          1521: Ident-Paire =     NUMERO NUMERO .
        !          1522: 
        !          1523: Reference =         Marque-Refer TypeReference Designation .
        !          1524: Marque-Refer =      O18 .
        !          1525: Designation =       Vrai Label /
        !          1526:                     Faux Label Nom-Document .
        !          1527: 
        !          1528: Constante =       NIL .
        !          1529: 
        !          1530: Parametre =       NIL .
        !          1531: 
        !          1532: Elem-Struct =     Marque-Debut  Suite-Elem  Marque-Fin .
        !          1533: Suite-Elem =    < Element > .
        !          1534: 
        !          1535: END
        !          1536: \end{verbatim}
        !          1537: 
        !          1538: \newpage
        !          1539: 
        !          1540: \tableofcontents
        !          1541: 
        !          1542: \end{document}

Webmaster