Note : utilisation de Word pour encoder

Sous-sections :

Dès qu'on a encodé les informations liées au format Word (mise en page, typographie, etc.), on a généralement intérêt à en sortir en copiant le résultat dans un éditeur de texte et à poursuivre avec un format texte (plus sûr, meilleures expressions rationnelles, pas d'initiative malheureuse du type conversion de tiret en tiret cadratin ou autres "caractères spéciaux", etc.)

La possibilité de passer dans une syntaxe XML des documents au format Word est un fort enjeu vu le volume de ressources disponibles dans ce format ; le site de la TEI consacre 32 slides au problème pour montrer qu'il n'y a pas de solution satisfaisante : http://www.tei-c.org/Talks/HCUSS2001/sdr-wordxml.htm

En effet, le format interne de Word n'est pas prévu pour un usage non destiné au rendu : certaines marques sont redondantes, exprimées plusieurs fois, ou éclatées en plusieurs morceaux contigus, etc. De plus le format interne est peu documenté et peu accessible. On ne peut donc convertir directement d'un format à l'autre ; c'est à dire qu'on est obligé de passer par le niveau de l'interface du logiciel Word, où l'information est propre (une suite en italique est assurée d'être accessible comme un bloc d'un seul tenant d'italique.).

Pour manipuler Word depuis le logiciel on peut soit manipuler les fonctions disponibles dans des boîtes de dialogue (rechercher, remplacer, etc.) de l'interface graphique, soit automatiser ces tâches en utilisant les "macros" Visual Basic qui permettent de piloter les mêmes fonctions avec plus d'automatisation. On illustre d'abord la solution utilisant les interfaces utilisateurs de Word, puis on essayera quelques macros.

Dans tous les cas il est nécessaire de commencer par faire le tour de ce qu'on compte annoter, s'assurer que tout est réalisable sans contradiction, etc. Un élément important oublié à cette étape risque d'être perdu si le résultat a été enrichi et que l'on ne peut plus revenir sans perte au format Word. Il vaut mieux également tester l'ensemble de la procédure dans un fichier test (suffisamment volumineux pour que tous les cas de figures soient représentés) avant de l'appliquer au corpus.


Convertir en balises les propriétés physiques d'un document source

La solution générale consiste à utiliser la possibilité de chercher du texte sur les paramètres de mise en forme pour lui ajouter des balises :

La mise en forme recherchée peut être de tout type : propriétés de la police, du paragraphe, Style, etc. : cf. les boîtes de dialogues proposés par le bouton "Format".


Utiliser Word pour baliser

Cette solution permet non seulement de marquer des traits existants avec des balises, mais également de se servir de Word comme d'un éditeur où, plutôt que de saisir à la main les balises, on applique dans un premier temps un trait de mise en forme de Word, que l'on remplace d'un seul coup à la fin de l'encodage par les balises voulues.

Dans tous les cas, Word marque des traits physiques. Dans le premier cas, grâce au remplacement, on explicite les traits physiques dans un encodage qui permettra de sauver l'information hors de Word. Dans le second cas, on se sert des marques physiques pour noter une information logique, en comptant remplacer la marque par une balise.

Comme marque physique à utiliser dans cette perspective il vaut mieux exclure des choses trop générales (comme le gras, susceptible de se mélanger avec des choses qui existent déjà), et plutôt créer un nouveau "style" Word.

On peut utiliser les "raccourcis clavier" pour appliquer le style par une simple combinaison de touches : se rendre dans Outils -> personnaliser -> clavier, dans la liste "Catégories" sélectionner l'item "Styles" puis sélectionner le style voulu à droite, enfin lui attribuer une combinaison de touches dans "Nouvelles touche de raccourcis". Cf. Figure 4.

Figure 4 : Attribuer une touche de raccourcis à un style.

Une fois le raccourci défini, il suffit de le solliciter pour appliquer le style au texte sélectionné.

NOTE : Word n'est vraiment pas un "éditeur de texte", mais un traitement de texte : il risque à tout moment d'insérer des caractères spéciaux de son propre chef, de modifier des caractères (notamment l'italique et l'apostrophe), il n'est pas stable ni sûr, etc. Un usage comme éditeur est surtout justifié pendant la conversion, par la suite et dès qu'on peut disposer d'un fichier au format texte, mieux vaut utiliser un éditeur comme TEI-Emacs pour l'aide à l'insertion de balises.


Problèmes particuliers


Automatiser avec Visual Basic

Sous-sections :

Intérêt de VB :


Automatiser le remplacement d'une collection de traits

La fonction "Remplacer par" peut être effectuée au moyen d'une macro. Lorsqu'on a plusieurs remplacements à faire à la suite (marquer l'italique, le gras, différents styles...), il peut y avoir un gain en temps substantiel à le programmer via une macro plutôt que de réaliser les remplacements un par un dans la boîte de dialogue remplacer. On peut alors créer une macro (avec Outils -> Macro -> Macro -> Bouton "créer"). Dans le "Visual Basic Editor" qui s'ouvre alors (on pourra y revenir ultérieurement en sélectionnant "Modifier" dans la même boîte de dialogue), on peut coller autant de fois que nécessaire le code permettant de remplacer toutes les occurrences d'une forme, eg. :


Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
	.Text = ""
	.Font.Bold = True
	.Replacement.Text = "<hi rend='bold'>^&</hi>"
	.Forward = True
	.Wrap = wdFindContinue
	.Format = True
	.MatchCase = False
	.MatchWholeWord = False
	.MatchKashida = False
	.MatchDiacritics = False
	.MatchAlefHamza = False
	.MatchControl = False
	.MatchWildcards = False
	.MatchSoundsLike = False
	.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

C'est la ligne ".Font.Bold = True" qui spécifie ici le format à rechercher. On peut la remplacer par ".Font.Italic = True" pour de l'italique, ou, pour rechercher un style, par .Style = ActiveDocument.Styles("nom_du_style"). Les propriétés sont bien documentées dans l'aide de VB. De même il faut préciser dans .Replacement.Text les balises qu'on veut ajouter à "^&".

Figure 5 : La fenêtre de l'éditeur Visual Basic de Word.


Ajouter directement une étiquette au texte sélectionné

Enfin on peut se servir d'une macro pour éviter l'étape intermédiaire quand on se sert de Word pour ajouter des balises (appliquer la macro qui ajoutera directement les balises à la sélection, plutôt que d'appliquer le style à la sélection pour, ultérieurement, lui ajouter des balises). La macro suivante ajoute le texte précisé dans "Replacement.Text" au texte sélectionné dans l'éditeur :

	
Sub remplacer2()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = Selection.Text
        .Replacement.Text = "^&"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    With Selection
        If .Find.Forward = True Then
            .Collapse Direction:=wdCollapseStart
        Else
            .Collapse Direction:=wdCollapseEnd
        End If
        .Find.Execute Replace:=wdReplaceOne
    End With
End Sub
	
	

Comme pour les styles, il est possible d'affecter un raccourci clavier à une macro. Cf. figure 4. Résultat : il suffit de sélectionner le texte et d'invoquer tel raccourci pour le décorer de la balise voulue.


Autres méthodes

Si l'on veut récupérer l'intégralité du formatage de Word, ce qui est probablement rarement pertinent dans le cas d'un corpus, les méthodes vues ci-dessus ne sont pas forcément les mieux adaptées puisqu'elles supposent de parcourir une à une toutes les propriétés du texte : les 18 propriétés d'un paragraphe, les 23 propriétés d'un caractère, etc. Parmi les solutions à considérer : passer par Open Office pour récupérer un encodage de rendu en XML ; convertir en RTF puis convertir RTF2XML avec les librairies disponibles en Perl et Java ; utiliser la librairie vw sous linux pour développer (en C) un module de conversion, etc.