Peter Kahrel, pour ceux qui ne le connaissent pas, compte parmi les plus éminents développeurs de Javascript et spécialistes du GREP pour InDesign. Il est l'auteur de plusieurs ouvrages, en anglais, sur ces deux domaines (son site).

Que fait ce JavaScript, compatible Mac et Windows, InDesign CS3/CS4 ? C'est simple. Il dresse la liste de toutes les requêtes GREP enregistrées au format XML dans le dossier Find-Change Queries > GREP (utilisateur ou application) de votre machine, et permet d'en sélectionner plusieurs pour les exécuter en une seule fois.

La procédure à suivre pour son utilisation est on ne peut plus simple :

  1. ouvrez le document InDesign;
  2. double-cliquez sur le JavaScript chain_queries qui se trouve dans le panneau Scripts (Fenêtre > Automatisation > Scripts ou raccourcis clavier). Une fenêtre listant toutes les requêtes GREP apparaît alors sur votre écran;
  3. séléctionnez les requêtes que vous souhaitez lancer à la chaîne;
  4. choisissez l'étendue d'application de la manipulation : Story (article), All documents (tous les documents) et Document;
  5. cliquez sur OK.




Prenons comme exemple des nombres, de 1 à 999 999. Vous souhaitez du rouge pour les nombres impairs, du bleu pour les nombres pairs et une espace fine comme séparateur de milliers. Vous disposez de trois requêtes GREP pour chacune de ces opérations. Grâce à Chain_queries, un seul clic donnera le résultat ci-dessous.



Par défaut, les requêtes du panneau GREP queries sont classées par ordre alphabétique. Ce qui veut dire que leur exécution se fait aussi suivant cet ordre, en l'occurrence du haut vers le bas, comme les styles GREP à l'intérieur d'un paragraphe. Or, des problèmes peuvent apparaître si le champ d'application de plusieurs expressions régulières porte sur un même critère contradictoire, dans la mesure où  la dernière regex exécutée s'impose sur ses devancières.

Pour mieux comprendre ce qui se passe, reprenons nos trois requêtes, numérotées 01_nombre_impair, 02_nombre_pair et 03_nombre_séparateur_milliers. À cette dernière, nous avons ajouté un critère de remplacement, à savoir la couleur verte (Remplacer le format > Couleur des caractères). Le résultat est immédiat :



Parmi tous les nombres compris entre 1 000 et 999 999, on ne distingue plus les pairs des impairs. Comme demandé initialement, la regex 01_ a repéré et colorisé en rouge les nombres impairs ; au "deuxième passage", la regex 02_ a sélectionné et mis en bleu les nombres pairs ; au "troisième et dernier passage", l'expression régulière 03_ a reconnu tous les nombres de quatre à six chiffres, pour y placer une espace fine mais en y ajoutant le vert, supprimant de facto les deux autres couleurs.

Il est donc important de définir par avance l'ordre d'exécution des expressions régulières et veiller à ce qu'elles ne renferment pas de critères de remplacement opposés. Cette précaution prise, le script permet un gain de temps appréciable.

Le JavaScript chain_queries est téléchargeable sur le site de Peter Kahrel, ici.