L'histoire commence par un cri coutumier : Pourquoi diable est-il si laborieux de réaliser une tâche si simple dans InDesign ? Mon problème était juste d'éditer, au plus vite, des étiquettes. Par étiquette, je veux dire n'importe quel petit bloc-texte doté d'un contour et contenant un titre ou juste quelques mots, sur une ligne. Appelez ça un pavé ou une brique si vous préférez. Ce genre de machins, j'y recours en permanence, pour visualiser et relier des idées, des intitulés, des unités quelconques.

Et comme je passe le plus clair de mon temps avec InDesign en chauffe, j'ai tendance à le considérer comme un éditeur structurel (un outliner), ce qu'il n'est rigoureusement pas. Cependant, il reste un excellent metteur en forme, le meilleur sans doute de sa catégorie. Alors je crée un nouveau document, définis quelques styles plaisants, et me voilà à cloner et à agencer péniblement mes étiquettes, basculant sans arrêt entre la saisie de texte et la manutention des blocs :

Exemple typique de diagramme sur lequel je m'échine.

Les étiquettes constituent vraiment un exemple canonique. Nos blocs-texte deviennent en quelque sorte des cellules au rabais. Une fois leur style fixé, ils n'ont plus qu'à recevoir des infos et à proliférer. Les débats académiques sur la composition multilignes s'évanouissent complètement. En fait, on voudrait juste garder l'outil Texte actif (pour la saisie !) tout en ayant la possibilité de dupliquer les étiquettes à la volée, selon un protocole à peu près cohérent.

Or, dans la mesure où une étiquette contient un unique paragraphe et n'a pas vocation à se développer en roman-fleuve, on n'y actionne pas la touche Entrée, et probablement pas la tabulation. Du coup, rien ne nous interdirait de réinterpréter ces commandes autrement… par exemple pour créer de nouvelles étiquettes ! Tel est le postulat d'AutoStick.

Cloner et dupliquer des blocs-texte à la volée

Jetez d'abord un œil sur la petite démo YouTube (le texte est en anglais mais le processus se comprend de lui-même) :

Le script AutoStick (pour InDesign CS6 et CC) n'est pas d'une complexité inédite. Il repose essentiellement sur un objet IdleTask, mécanisme d'écoute qui permet au code de réagir presque instantanément quand un changement se produit. Par exemple, lorsque l'utilisateur presse la touche Entrée dans un bloc-texte, InDesign produit effectivement un saut de paragraphe, mais AutoStick identifie cet événement, supprime le retour chariot et enclenche à la place une action programmée. Il duplique le bloc où l'événement est advenu, positionne le bloc résultant et trace une ligne entre les deux objets.

Note. - Un autre exemple de script réactif a été illustré dans ISFR #10: “Making a Group Responsive Using an IdleTask”, avec une démo YouTube qui sera plus parlante pour les non anglophones : Group Magnet.

Le code JSX d'AutoStick vous est livré en clair pour l'amour de la science. Les plus experts d'entre vous auront donc tout loisir d'affiner quelques réglages. Notamment :

• Vous pouvez désactiver la liaison systématique des blocs en fixant la constante AUTO_LINK à false. Dans ce cas, les étiquettes ne sont plus connectées par une ligne, à moins que vous tapiez un tiret bas (_) avant la commande.

• Vous pouvez ajuster les rapports d'espacement (DX et DY dans le script). Ces valeurs déterminent l'espace horizontal (respectivement vertical) en pourcentage de la largeur (respectivement hauteur) du bloc courant. Les coefficients par défaut sont de 20% horizontalement et de 50% verticalement.

• Vous pourriez même redéfinir les caractères de commande (assemblés dans la constante DUPL_CMD) au cas où des raccourcis-clavier personnalisés rendraient le script inopérant sur votre système. AutoScript suppose en effet les correspondances suivantes :

Touche(s) Caractère dans InDesign Commande AutoStick
Entrée \x0D (U+000D) Dupliquer au-dessous
Tab \x09 (U+0009) Dupliquer à droite
Maj Entrée \x0A (U+000A) Dupliquer au-dessus
Maj Tab \x08 (U+0008) Dupliquer à gauche

Installation et utilisation

Téléchargez et installez le script comme à l'ordinaire. AutoStick fonctionne comme un interrupteur. Exécutez-le pour le rendre actif, exécutez-le à nouveau pour le désactiver. Lorsqu'il est en fonction, les blocs-texte à contour non vide sont pris en charge à travers les touches Entrée, Tab, Maj+Entrée et Maj+Tab comme illustré plus haut. (Les autres blocs ne sont pas « sur écoute » et fonctionnent donc normalement.)