Erreurs RTF

Ce qui arrive en général

Le format RTF est certainement la meilleure création de Microsoft. Il est bien documenté, mais son plus grand inconvénient est qu'il ne permet  pas la plus petite erreur de syntaxe.

D'abord, il utilise une structure de blocs délimités par des accolades ouvrantes { et  fermantes }.

Dans le fichier, il doit y avoir exactement le même nombre de chaque type d'accolades.

Jusqu'ici, cela a toujours été le problème que j'ai rencontré quand Word a refusé d'ouvrir un fichier.

Maintenant si Word ouvre le fichier mais se plante, le problème est plus difficile. En général, c'est lié aux tableaux. J'ai rencontré uniquement les erreurs suivantes :

Dans ces cas, vous devez trouver ces anomalies et les corriger à la main...

Plan rapproché sur les tableaux

D'abord, le RTF traite de rangées, pas de tableaux.

Word reconstitue un tableau à partir de rangées en ouvrant le fichier RTF.

Un exemple de 2 rangées, 2 colonnes :

\trowd \trgaph70\trleft-70 \cellx4536\cellx9142 \pard\plain
\widctlpar\intbl \f4\fs20\lang1036 Rang 1 colonne 1\cell Rang 1 colonne 2\cell
\pard \widctlpar\intbl \row 
\trowd \trgaph70\trleft-70 \cellx4000\cellx9000 \pard \widctlpar\intbl Rang
2 colonne 1\cell Rang 2 colonne 2\cell \pard \widctlpar\intbl \row
\pard \widctlpar

explications :

\trowd : une rangée commence
\cellx : longueur de la cellule (nombre qui suit)
\cell : indique la fin d'une cellule
\row : la fin d'une rangée
\intbl : doit suivre n'importe quelle déclaration de paragraphe (pard) à l'intérieur d'une cellule

Si on regarde à nouveau la première rangée commentée (entre / *    * /, ce n'est pas une syntaxe de RTF !)

\trowd \trgaph70\trleft-70 \cellx4536\cellx9142

/ * commentaire : description de la première rangée * /

/ * cette rangée a deux cellules qui se terminent aux abscisses 4536 et 9142 */

\pard\plain \widctlpar\intbl \f4\fs20\lang1036 Rang 1 colonne 1\cell

/ * le contenu de la première cellule est le texte : " Rang 1 colonne 1 " */

Rang 1 colonne 2\cell

/ * le contenu de la cellule 2 est le texte :  " Rang 1 colonne 2 " */

\pard \widctlpar\intbl \row

/ * la fin de la rangée, doit être précédée par de \pard \intbl */

Si le nombres de cellx et de cell sont différents dans une rangée... Boum !

Yves
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Yves SAGNIER                       " ICEBERG " 
Centre d'Etudes de la Navigation Aerienne (CENA)
1-9, rue Champagne, 91200 Athis-Mons, FRANCE
Tel :   [33] 01 69.57.70.91  Fax : [33] 01 60 48 70 20
E-mail : SAGNIER_Yves@cena.dgac.fr
URL : http://www.cena.dgac.fr/~sagnier/
" Tomorrow will bring happiness or at least another day " (Phil Ochs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~