Quelques styles de caractères régulant la contraction du texte.

Cette capture d'écran illustre un moyen esthétiquement discutable mais pratiquement satisfaisant par lequel un maquettiste peut loger dans le même espace des longueurs de texte variant du simple au double. Le problème se pose couramment dans les mises en page structurées selon un gabarit rigide (catalogue de produits, annuaire, base de données...). C'est aussi pour ce genre de document que l'on souhaite alléger au maximum les ajustements manuels, compte tenu du nombre de données à traiter.

La démarche qui vient aussitôt à l'esprit est de créer, en plus du style de paragraphe donnant la mise en forme dominante pour un champ donné, des styles de caractères chargés de resserrer les lignes trop longues par rapport au calibrage moyen. Ci-dessus, le style TITLE-LightStretch applique une échelle horizontale de 98 % et une approche de –2. Puis, un style encore plus agressif, TITLE-StrongStretch, s'occupe des cas cliniques en étroitisant le texte à 90 % avec une approche de –15.

Mise en œuvre avec les Styles Grep

À la longue, le maquettiste a fini par mesurer les seuils à partir desquels il recourt à ces régimes spéciaux. Au-delà de 15 caractères, resserrement léger ; au-delà de 20, grosses contractions ! Fort bien. Alors, plutôt que de se fatiguer à un traitement manuel, ne pourrait-on pas faire en sorte que le style de paragraphe hôte (TITLE) s'applique automatiquement les styles de caractères correspondants ?

Il suffit de s'aventurer dans la section “Style Grep” pour trouver la réponse :

Les styles Grep permettent de sélectionner automatiquement le style de caractère adéquat selon la longueur du texte.

Comme vous le voyez ci-dessus, on tire grand profit du quantificateur d'intervalle, qui officie au sein des expressions régulières comme un compteur d'occurrences successives. Sa syntaxe générale, {min,max}, permet de reconnaître l'expression antéposée si elle apparaît au moins min fois et au plus max fois. L'écriture partielle {min,} retient uniquement la condition du minimum sans imposer de maximum. Ainsi, le motif ^.{15,} reconnaît tout paragraphe d'au moins 15 caractères. (La séquence est entièrement capturée car le quantificateur d'intervalle est « avide ».)

La première instruction Grep donnée à InDesign a donc pour effet d'appliquer au texte le style de caractère TITLE-LightStretch sitôt que la longueur égale ou dépasse 15 caractères. Puis, nous récidivons avec une seconde regex, ^.{20,}, qui va appliquer le style TITLE-StrongStretch si la longueur du texte égale ou dépasse 20 caractères. Il est important de noter que tout paragraphe vérifiant cette condition vérifie également la précédente : s'il y a au moins 20 caractères, c'est qu'il y au moins 15 caractères ! Par conséquent, InDesign appliquera ici successivement le style TITLE-LightStretch et le style TITLE-StrongStretch. Mais comme le deuxième surcharge les paramètres du premier, c'est lui qui impose sa loi. On voit ici que l'ordre dans lequel s'enchaînent les Grep Styles est décisif lorsque les styles invoqués entrent en concurrence.

Bien entendu, on pourrait ajouter à la suite une nouvelle instruction agissant sur les chaînes d'au moins 25 caractères, et ainsi de suite...