[Programmation Writer] comment identifier le formatage manuel

Bonjour,
J’ai un document de 100 pages où j’ai peut-être un peu de formatage manuel, qui va sans doute générer des classes CSS supplémentaires dans mon export EPUB. J’aimerais écrire une macro pour identifier tous les formatages manuels, hors styles. Pensez-vous que ce soit possible ?

Merci,
Rudi

Bonjour

Tu peux essayer quelque chose comme :

sub Main

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:ResetAttributes", "", 0, Array())

end sub

Regards

Sauf erreur de ma part, c’est équivalent à Ctrl+A puis Ctrl+M, ce qui efface le formatage direct mais ne l’identifie pas.

@ajlittoz en effet…

Tropisme révélateur de ma part lisant “comment identifier” et l’interprétant “comment supprimer”… :slight_smile:

@PYS: en théorie de la communication, il y a une kyrielle d’avertissements sur l’influence de la culture personnelle, de l’humeur du moment et de ses appétences sur la compréhension du message …

Je suis le premier à donner dedans :wink:

Cela dit, la réponse est utile car l’idée finale est de supprimer. Mais j’aimerais quand même pouvoir identifier. L’idée étant de reconnaître tous les formatages présents dans le document, pour voir comment l’exportation en EPUB gère la création de styles par rapports aux formatages présents, qu’ils soient styles ou formatage direct.

D’après mon expérience, on rencontre plus souvent le formatage direct comme ersatz de style de caractère que comme celui de paragraphe car cette dernière notion est plus commune. Malheureusement, le dialogue de recherche et remplacement ne peut prendre en compte que les styles de paragraphe, pas les styles de caractère. De plus, la situation est compliquée par le fait que le formatage direct se traduit techniquement par des styles anonymes (donc on peut pas utiliser leur “nom” dans la recherche).

Je connais ce problème de révision/relecture finale de document et je ne vois malheureusement qu’une seule façon de le traiter.

Il faut procéder paragraphe par paragraphe. C’est certainement long mais en le faisant à un stade précoce du document puis en s’abstenant ensuite de tout formatage direct, on facilite les remaniements ultérieurs.

  • Un paragraphe est sélectionné (quadruple clic)

  • Le menu des styles de paragraphe dans la barre d’outils indique le style attribué

  • Format>Effacer formatage direct

    Si l’aspect du paragraphe change après cette commande, c’est qu’il y avait du formatage direct. L’aspect peut être restitué par Ctrl+Z pour s’attaquer aux réglages.

    • Un changement de marges, espacement ou alignement traduit un formatage direct de paragraphe. Réfléchissez à la création d’un nouveau style de paragraphe, éventuellement lié à l’original de façon qu’un ajustement de ce dernier se transmette automatiquement au nouveau (sauf forçage).
    • Un changement interne au paragraphe (mot en gras ou italique, couleur, …) traduit un formatage direct de caractère. Voyez si un style existant peut faire l’affaire ou créez-en un nouveau.

Très souvent, le formatage direct est utilisé pour créer “à la va vite” des liste à puce ou numéro au lieu d’un style de paragraphe adapté. Cela a une cause indirecte: les styles de paragraphe d’usine Liste n ou Numérotation n ne sont pas configurés au départ pour les listes. Ce n’est pas grand-chose à faire mais c’est à faire manuellement (onglet Plan & numérotation).

Il existe une méthode pour identifier le formatage direct, mais elle n’est pas très pratique car elle nécessite une analyse du fichier équivalent en .fodt. Il faut repérer dans celui-ci les formatages …-style="xxx" qui ne correspondent à aucun style nommé. La complication vient du fait que toutes les applications de style passent par un nom “xxx” du genre “P999” (P=paragraphe, autre lettre pour les autres familles). Par le biais du dictionnaire des styles, on sait si “P999” correspond à un style nommé ou non (c’est alors du formatage direct). Extrêmement fastidieux!

Bonjour,

Merci pour cette réponse complète. En effet, je n’avais pas pensé à effectuer une recherche dans le source de l’OpenDocument, c’est une bonne idée.

Il n’y a probablement pas de solution facile à mon problème. J’ai rédiger le texte moi-même, donc je n’ai pas, je pense, de formatage direct. Je voulais juste m’en assurer. Cela dit je peux sans doute sélectionner le document entier et effectuer un CTRL+M.

En fait, après exportation directe en EPUB, j’ai été désagréablement surpris par la piètre qualité du résultat. J’aimerais diminuer le nombre de styles présents dans le CSS généré, peut-être en simplifiant le document source. Malheureusement, les style du CSS EPUB ne reprennent pas le nom des styles d’origine, ce qui rend le travail fastidieux.

De plus, j’ai des tableaux, cela doit augmenter le nombre de styles.

Présentement, les tableaux n’ont pas de style au sens habituel de Writer (les soi-disant styles de tableaux apparus dernièrement sont en réalité des modèles). Les mises en page de tableaux dans LO sont basées sur des informations paramétables à divers endroits (aboutissant à un équivalent de formatage direct). Tout ceci est récupéré pour être traduit par quelque chose de compréhensible par EPUB. Comme EPUB est du XML (ou HTML étendu) pour le contenu, CSS est utilisé pour la présentation. Nolens volens, cela fera des styles CSS supplémentaires.

Je n’ai pas la pratique du filtre d’exportation EPUB; tout dépend de son degré d’analyse. S’il effectue plusieurs passes (comme un compilateur), il est possible d’optimiser la traduction. Pour une traduction en une passe à la volée … !

Petite précision: il est difficile de se débarrasser du formatage direct de liste. Si elles ne sont pas l’objet du style dédié, il faut d’abord relâcher le bouton dans la barre d’outils avant de restyler.