Cet article présente une méthode simple permettant d’automatiser la correction des espaces insécables sur le logiciel InDesign en utilisant des expressions régulières.
Les expressions régulières, qu’est-ce que c’est ?
Vous n’êtes pas obligés de comprendre le principe des expressions régulières pour les utiliser, mais je vais quand même essayer de vous l’expliquer le plus clairement possible…
Une expression régulière, également connue sous le nom de regex, est une séquence de caractères qui décrit un modèle de recherche de chaînes de caractères dans du texte. Les expressions régulières sont utilisées pour effectuer des opérations de recherche, de remplacement et de validation de texte. Elles permettent de rechercher des motifs de texte spécifiques en utilisant des caractères spéciaux pour représenter des classes de caractères, des répétitions et des alternatives. Les expressions régulières sont souvent utilisées dans des langages de programmation, des outils de ligne de commande et des éditeurs de texte pour manipuler du texte de manière efficace et automatisée.
Il s’agit d’un outil puissant et flexible pour travailler avec des données textuelles, mais cela peut paraître un peu délicat à comprendre pour les débutants. Quelque soit la complexité d’une expression régulière, celle-ci est créée progressivement est peu se décomposer en petits morceaux simples. Sur ce principe, nous pouvons comparer une expression régulière complexe à une énorme construction de lego qui se compose de petites briques toutes simples.
Voici un exemple d’expression régulière qui va vous paraître probablement très complexe à premier abord (incompatible avec InDesign d’ailleurs) :
^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,}$
Cette expression régulière peut être décomposée en sept morceaux :
^
: Ce symbole indique qu’il s’agit du début d’un « mot ».[a-zA-Z0-9._-]+
: cette partie peut se décomposer en deux morceaux[a-zA-Z0-9._-]
et+
. Les accolades contiennent les caractères autorisés, c’est à dire toutes les lettres minuscules de a à z, majuscules de A à 9, les chiffres de 0 à 9, le point, l’underscore (tiret du bas) et le tiret. Le+
indique que nous souhaitons un ou plusieurs des caractères autorisés.@
: Ce symbole correspond tout simplement au symbole arobase.[a-zA-Z0-9._-]{2,}
: cette partie se compose également en deux morceaux[a-zA-Z0-9._-]
et{2,}
. Le premier morceau est le même que précédemment, une liste de caractères autorisés. La seconde partie précise que l’on souhaite au moins deux caractères autorisés sans nombre maximum.\.
: Il s’agit ici de recherche un point. Le\
permet d’indiquer que le.
ne correspond pas à un code spécial d’expression régulière mais bien à un simple point. Cela s’appelle un caractère d’échappement.[a-zA-Z]{2,}
: encore une fois, cette partie se décompose, en deux morceaux, la différence ici est que seules les lettres sont autorisées.$
: Ce symbole indique qu’il s’agit de la fin d’un « mot ».
Cette expression régulière désigne donc un « mot », composé de caractères, du symbole @, de caractères, d’un point et de lettres. De quoi s’agit-il ? Vous l’avez certainement déjà deviné, il s’agit d’une adresse de courrier électronique. Nous avons donc ici une description de la syntaxe d’une adresse email valide.
Ce qu’il faut retenir, c’est qu’une expression régulière est un ensemble de règles qui permettent de chercher des mots ou des phrases spécifiques dans du texte en utilisant des symboles spéciaux pour représenter les caractères.
Comment automatiser le traitement des insécables ?
Pour effectuer la correction des espaces insécables, nous allons utiliser les fonctions Rechercher/Remplacer combinées avec les expressions régulières. Nous allons ainsi chercher, dans le documents, les éléments de ponctuation présents avec les espaces qui les entourent pour les remplacer par un élément de ponctuation identique mais avec les espaces adaptés.
Pour exploiter la puissance des expressions régulières, ouvrez la fenêtre Rechercher/Remplacer disponible dans le menu Edition ou utilisez le raccourci clavier Ctrl + F. Dans la fenêtre qui s’ouvre activez l’onglet GREP qui va vous permettre de saisir des regex.
Tous les éléments de langage des expressions régulières ainsi que les codes spécifiques à InDesign sont accessibles via le menu @ en face des champs de saisie Rechercher et Remplacer par. Vous pouvez donc construire vos expressions sans connaître la syntaxe par cœur.
Correction automatique des insécables
Gestion des deux points :
En fonction du texte que vous souhaitez corriger, vous avez plusieurs possibilités.
Cas n°1 : le plus simple
Voici la requête GREP à utiliser pour corriger automatiquement les espaces insécables avant deux points :
- Rechercher :
\s*:
- Remplacer par :
~S:
Cette requête permet de rechercher des espaces quelconques \s
présentes zéro ou plusieurs fois *
suivies de :
. Nous prenons donc en compte les espaces oubliées et les espaces en double.
Le remplacement se fera par une espace insécable ~S
suivie de :
.
Cas n°2 : prise en compte des adresses URL
Si votre texte contient des adresses URL qui se composent de :
après le protocole http, vous pouvez utiliser la requête suivante qui précise que les :
ne doivent pas ^
être suivis d’un /
.
- Rechercher :
\s*:[^/]
- Remplacer par :
~S:
Cas n°3 : prise en compte des espaces après les deux points
Voici le cas le plus complet. Si vous souhaitez gérer les espaces après les deux points pour corriger les espaces oubliées ou en double, il est possible de compléter le cas précédent :
- Rechercher :
\s*:[^/][espace]*
(le motespace
doit être remplacé par une espace saisie au clavier). - Remplacer par :
~S:espace
(le motespace
doit être remplacé par une espace saisie au clavier).
En complément de la requête précédente, nous recherchons donc une espace [ ]
présentes zéro ou plusieurs fois *
que nous remplaçons par une espace justifiante. Nous n’utilisons pas le caractère spécial \s
correspondant à plusieurs espaces quelconques car les sauts de paragraphe sont alors considérés comme des espaces.
Gestion des points virgule, d’interrogation et d’exclamation
En français, la règle pour les points virgules, d’interrogation et d’exclamation est différente de celle des deux points. Il s’agit dans ce cas d’utiliser une espace fine (insécable) à la place d’une insécable classique.
Cas n°1 : le plus simple
Voici la requête GREP à utiliser pour corriger automatiquement les espaces fines (insécables avant les points virgule, d’interrogation et d’exclamation :
- Rechercher :
\s*([?;!])
- Remplacer par :
~<$1
Cette requête permet de rechercher des espaces quelconques \s
présentes zéro ou plusieurs fois *
suivies d’un ensemble de caractères possibles [ ]
. Les parenthèses permettent de créer ce que l’on appelle une expression à laquelle nous allons pouvoir faire référence lors du remplacement.
Le remplacement permet donc d’insérer une espace fine ~<
suivie du caractère (?
, ;
ou !
) contenu dans l’expression n°1 de la recherche $1
.
Cas n°2 : prise en compte des espaces après les éléments de ponctuation
Comme pour les deux points, nous pouvons aussi vérifier les espaces qui se trouvent après la ponctuation. Pour corriger les espaces oubliées ou en double, il est possible de compléter le cas précédent :
- Rechercher :
\s*([?;!])[espace]*
(le motespace
doit être remplacé par une espace saisie au clavier). - Remplacer par :
~<$1espace
(le motespace
doit être remplacé par une espace saisie au clavier).
Nous recherchons donc après l’élément de ponctuation une espace [ ]
présentes zéro ou plusieurs fois *
que nous remplaçons par une espace justifiante.
Gestion des guillemets à la française
Les guillemets à la française demandent une espace insécable à l’intérieur. Voici donc la règle GREP correspondante.
- Rechercher :
(«)(\s*)(.+?)(\s*)(»)
- Remplacer par :
$1~S$3~S$5
ou«~S$3~S»
Cette requête permet de rechercher un guillemet ouvrant «
suivi de zéro ou plusieurs espaces quelconques \s*
suivi de n’importe quel caractère .
répété plusieurs fois +?
avec la correspondance la plus courte (pour ne pas prendre le guillemet fermant d’une autre paire de guillemets), suivi de zéro ou plusieurs espaces quelconques \s*
, suivies d’un guillemet fermant »
. Les cinq morceaux décrits précédemment sont découpés en cinq expressions avec les ( )
.
Le remplacement va insérer le contenu de la première expression $1
suivi d’une espace insécable ~S
suivie du contenu de la troisième parenthèse $3
, suivi d’une espace insécable ~S
, suivie du contenu de la cinquième expression $5
. Ceci pourrait être simplifié en «~S$3~S»
, mais c’est moins drôle…
Si vous souhaitez simplifier au maximum la saisie, vous pouvez utiliser la requête suivante :
- Rechercher :
«\s*(.+?)\s*»
- Remplacer par :
«~S$1~S»
Mémorisez les expressions régulières
Notez qu’il est possible d’enregistrer vos requêtes GREP favorites pour pouvoir les réutiliser à volonté.
Pour cela, il suffit de cliquer sur l’icône de sauvegarde à côté du nom de la Requête (par défaut [Personnalisée]). Vous pourrez alors saisir un nom que vous retrouverez dans le menu déroulant Requête.
Sauf mention contraire*, l'article Automatiser la correction des insécables sur InDesign et son contenu par Julien Crego sont mis à disposition selon les termes de la licence Creative Commons
Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International
Cette licence vous permet de remixer, arranger, et adapter cette œuvre à des fins non commerciales tant que vous créditez la source en citant le nom des auteurs et que les nouvelles œuvres sont diffusées selon les mêmes conditions.
* Cette notice est intégrée automatiquement à la fin de chaque article de ce site.
Bonjour, en utilisant cette technique j’aboutis à des espaces insécables minuscules, à peine visibles dans la composition. Et qui ne sont pas les mêmes que lorsque je demande au logiciel, manuellement et au coup par coup, de remplacer une espace par une insécable (Texte > Insérer une espace > Espace insécable). Comment se fait-ce ? Merci pour votre aide !
Bonjour Maxime,
Ce tutoriel propose d’utiliser deux insécables différentes, des « classiques » et des fines.
Le problème est peut être là ? Vous pouvez adapter les codes pour n’utiliser que des insécables classiques si vous le souhaitez.
En effet, j’avais mal lu ! J’ignorais qu’il existait une règle typographique commandant une espace fine pour les points virgule, d’interrogation et d’exclamation… Pour moi il fallait une espace classique. Merci Julien pour votre aide en tous cas !