TotalRescale | Ré-empagement de dernière minute
December 16, 2011 | Snippets | fr | en
Il arrive que l'on souhaite décaler ou changer légèrement l'échelle d'une mise en page tout en préservant à la fois le format du document et la stricte correspondance entre chaque page et son contenu. Que faire en pareil cas ? Évidemment, on pourrait songer à « Activer la modification de mise en page » (Page > Modifier la mise en page...). Cela fonctionnerait — bon an mal an ! — si la composition était autorisée à se redistribuer librement selon de nouvelles marges et repères. Mais ici, puisque la mise en page est fixée en elle-même et ne doit plus bouger, l'ajustement automatique n'est d'aucun secours. Ce qui nous sauverait, ce serait de pouvoir repositionner et/ou remettre à l'échelle le contenu de chaque page pris comme un tout — ainsi qu'on procéderait avec une simple image sous Photoshop.
Une solution serait de grouper (i.e. associer) manuellement les objets et de transformer le tout, page par page, afin de faire coïncider la maquette finale avec les marges du nouveau gabarit d'empagement. Vous devinez que ce n'est pas tout à fait le genre d'approche que nous préconisons par ici ! Un outil infiniment plus puissant est à notre portée, quoique inaccessible depuis l'interface d'InDesign. En résumé, notre stratégie consistera à modifier le facteur d'échelle et, si nécessaire, le point d'origine des pages elles-mêmes. Ces paramètres invisibles modifient ce qu'on appelle « l'espace de coordonnées interne » (inner coordinate space) associé à chaque objet Page
. Depuis InDesign CS5, cet espace est transformable (au sens des matrices de transformations), ce qui nous ouvre certaines possibilités contre-intuitives, notamment celle de changer l'échelle d'aperçu d'une page sans pour autant modifier ses dimensions réelles !
Note technique. — Les prémices du script TotalRescale ont germé dans un article publié en août 2011, « Transforming spreads in InDesign » (en anglais). Entre-temps, j'ai découvert un fait singulier : à la différence des vues de planches (objet Spread
), les vues de pages (objet Page
) peuvent être transformées indépendamment des objets situées sur lesdites pages. Imaginez que vous avez le pouvoir d'étirer une page, comme un élastique, mais sans appliquer cette distorsion aux objets qu'elle contient. Lorsque vous imprimez ou exportez cette page à sa taille réelle (c'est-à-dire non étirée), les objets qui n'avaient subi aucune transformation apparente, à l'écran, vont soudain se rétracter selon les lois inverses de l'étirement de la page. Telle est l'astuce sur laquelle repose le script. J'utilise ensuite un stratagème qui neutralise à l'écran la transformation subie par les pages. Comment ? En appliquant la transformation réciproque aux planches (objets parents des pages). Ce faisant, on restitue à l'utilisateur la taille réelle des pages et, du coup, il voit immédiatement à l'écran la contrepartie ressentie au niveau des objets. Ce petit tour de passe-passe fournit un exemple fructueux de collaboration entre deux transformations inverses, l'une portant sur la vue des pages, l'autre portant sur la vue des planches.
Utilisation du script TotalRescale
TotalRescale ne peut tourner que sous InDesign CS5 ou plus récent (car la faculté de transformer des pages n'était pas implémentée auparavant).
1) Démarrez ID et ouvrez un document.
2) À partir de la palette Pages, sélectionnez la page type qui porte les marges de votre actuel gabarit d'empagement — ces marges constituent notre aire de référence initiale.
3) Sur la page type, créez et positionnez un rectangle. Le périmètre de ce dernier représente le gabarit désiré, c'est-à-dire la situation des marges à la fin de l'opération. (Le rectangle en question peut être plus grand ou plus petit que l'aire de référence, proportionnel ou disproportionné, etc.)
4) Sélectionnez le rectangle et exécutez TotalRescale.jsx depuis la palette Scripts.
Si le document de travail est basé sur des pages en vis-à-vis, le script vous proposera le cas échéant d'appliquer votre gabarit en mode miroir (symétriquement) selon les pages « main gauche » et « main droite », comme illustré ci-dessous. À l'inverse, vous pouvez décider d'appliquer le gabarit uniformément, c'est-à-dire sans tenir compte du vis-à-vis.
Avertissement
1) Comme d'habitude dans cette rubrique, le script proposé ici est PUREMENT ET OUVERTEMENT EXPÉRIMENTAL. Je NE GARANTIS PAS son bon fonctionnement dans n'importe quelle configuration. N'oubliez pas de sauvegarder vos documents de travail avant le grand saut.
2) TotalRescale exploite des fonctionnalités que VOUS NE POUVEZ PAS DIRECTEMENT COMMANDER NI INVERSER DEPUIS L'INTERFACE D'INDESIGN (toutefois, il est possible d'annuler l'effet du script par Édition > Annuler TotalRescale). Utilisez ce script en phase finale, au moment de l'export ou de la production définitive. Il est solennellement déconseillé de l'exécuter durant les étapes de création et de mise en page, en raison du trompe-l'œil qu'il met en œuvre dans l'interface utilisateur.
3) Une fois la transformation opérée, InDesign est susceptible d'afficher certaines dimensions, mesures, tailles de texte en unités RELATIVES. Cela dépend notamment de l'option « Les transformations sont totales » du panneau de contrôle, mais pas que.
4) Ce script EST INCAPABLE de traiter des documents basés sur des formats de pages variables. Il est donc présumé que la taille des pages est la même pour l'ensemble des planches maquettées. (Le script affecte toutes les pages du document.)
5) Contre toute attente, lorsqu'un alignement sur ligne de base est actif, certaines des lignes soumises à cette contrainte PEUVENT INOPINÉMENT se démarquer de la conformation initiale. Dans cette situation exceptionnelle, le principe de conservation de la mise en page n'est donc plus respecté. Il y a fort à parier que ce « bug » résulte d'une erreur d'arrondi engendrée par InDesign lui-même lorsqu'il est confronté à d'infimes décalages d'interligne.
Comments
Pas mal quand le client se rend compte qu'il t'a filé un mauvais format… ET que la deadline reste la même (CQFD :-)
Format des marges puisque on ne change pas le format de page
Concrètement je pense que ça peut être utile quand le client n'avait pas anticipé l'épaisseur du bouquin (changement de papier, de « main », de pagination) et qu'on se retrouve avec un « petit fond » trop faible vis-à-vis de l'ouverture du volume. Ou bien au contraire quand on a un problème de massicotage. Enfin bref, quand on a besoin pour une raison ou pour une autre de réajuster les marges en dernière minute. C'est là que TotalRescale pourrait servir.
Je pense qu'il peut aussi régler des erreurs de conception, voire des erreurs de manip dont le maquettiste ne se sort plus, genre dissymétrie ou inversion malencontreuse des gabarits en vis-à-vis. On peut aussi bien translater l'empagement que changer son échelle, ou les deux…
Mais attention: dans tous les cas le script préserve le FORMAT initial des pages. C'est justement là que se situe son originalité. Il modifie le « rapport d'échelle » et/ou l'origine des marges sans jamais toucher aux dimensions externes.
PS. — J'avais prévu de faire une traduction en français du billet, mais comme mes productions n'intéressent plus grand-monde aujourd'hui, j'avoue que je tire une petite flemme sur le versant hexagonal ;-) Quoi qu'il en soit, l'interface du script est bilingue EN/FR.
Merci d'être passé.
@+
Marc
"J'avais prévu de faire une traduction en français du billet, mais comme mes productions n'intéressent plus grand-monde aujourd'hui"
Vous plaisantez j'espère !! :(
Vos productions ont le mérite d'être connues et diffusées…
Nous sommes d'ailleurs plusieurs "Hexagonaux" à le faire…
J'"oblige" par exemple l'utilisation de scripts et automatisation dans certains des sujets que je donne en cours de design graphique et d'édition.
Vos productions font le bonheur de pas mal d'étudiants…
Merci donc pour eux (et pour moi qui les utilises également) !! ;)
[I]"J'avais prévu de faire une traduction en français du billet, mais comme mes productions n'intéressent plus grand-monde aujourd'hui"[/I]
Euh… sur quoi vous basez-vous pour affirmer cela ?
Personnellement, j'ai programmé une "surveillance" sur indiscript afin d'être informé de chaque nouveauté.
Parfois par manque de temps, plus souvent par fainéantise, je ne commente pas, mais en tout cas, le site est dans mes favoris…
Au plaisir :)
@Mandrake @Reskator
Merci les amis. Vous avez raison de me rappeler que ce site a aussi des aficionados fidèles, et je ne voudrais pas donner l'impression de cracher dans la soupe. Je plaide coupable. Petit coup de fatigue de mon côté.
Allez, recharge des batteries ;-)
Amitié,
Marc
Bonjour Marc,
En anglais comme en français, tes travaux sont toujours dignes d'intérêts.
Personnellement, je maîtrise mieux le français. Désolé ;-)
À tous,
Vos vœux sont exaucés (c'est de saison !) : billet désormais lisible en français.
J'en profite pour rappeler que si un article bilingue ne s'affiche pas dans la langue adéquate — réglage qui dépend de la localisation de votre navigateur — il est toujours possible de basculer vers l'autre langue en cliquant sur l'étiquette « FR » (ou « EN ») située en ligne de sous-titre.
@+,
Marc
Merci à toi Marc.
;-)
Merci, c'est toujours plus agréable de lire dans sa langue natale…
*****************************************
PS. — J'avais prévu de faire une traduction en français du billet, mais comme mes productions n'intéressent plus grand-monde aujourd'hui, j'avoue que je tire une petite flemme sur le versant hexagonal ;-) Quoi qu'il en soit, l'interface du script est bilingue EN/FR.
*****************************************
Certes, je ne viens sur votre site qu'irrégulièrement, mais je n'en reste pas moins fidèle... C'est d'ailleurs, en tant que fidèle utilisateur (donc) de vos scripts géniaux que je suis venu sur votre site ce jour vous présenter tous mes bons voeux pour cette nouvelle année...
Au plaisir toujours d'utiliser vos productions, parfois de visiter votre site et y lire avec délectation vos articles toujours passionnants..
;-)
Merci à tous pour vos appréciations, vœux et encouragements.
@+
Marc
Merci Marc pour ce petit bijou. Ta connaissance du scriptage te permet de produire des outils que tu qualifies de fort "simples" mais dont l'utilité est immense pour les néophytes en javascript dont je suis.
Une petite question à propos de ce script magique : lorsque tu as procédé à la mise à l'échelle d'un doc, les tailles de typos disposent (comme cela arrive depuis très longtemps) de 2 valeurs. La valeur d'origine puis la valeur mise à l'échelle en parenthèses. Au vu de la description que tu donnes du fonctionnement du script cela me semble normal mais *mode honte* JE NE SAIS PLUS comment me débarrasser de ces parenthèses pour ne garder que la taille mise à l'échelle *mode honte off*. Sur les conseils de Stéphane (Baril) qui ne sais pas plus que moi d'ailleurs je te pose la question directement…
Merci encore
Bonjour Alan,
> […]
> *mode honte* JE NE SAIS PLUS comment me débarrasser
> de ces parenthèses pour ne garder que la taille
> mise à l'échelle *mode honte off* […]
Eh bien, il n'y avait pas à en rougir, car cette option d'affichage simplifié n'existe pas réellement — j'observe d'ailleurs que c'est un serpent de mer : http://indesignsecrets.com/getting-...
Depuis InDesign CS4, la seule solution apparente est de « Redéfinir la mise à l'échelle à 100 % », option accessible depuis le menu contextuel de la palette Transformation (sous réserve que le bloc-texte visé soit sélectionné, ce qui oblige d'ailleurs à répéter l'opération N fois).
Cependant, il doit être fermement signalé que cette option n'est pas un simple commutateur d'affichage : elle applique une véritable transformation réciproque compensée par un redimensionnement interne. Au final, l'objet soumis à la mise à l'échelle est « reconstitué » à l'échelle 1, et du coup l'affichage du corps des caractères retrouve son univocité.
Mais dans le cas qui nous occupe, on l'aura compris, c'est loin d'être satisfaisant !
@+
Marc
Merci pour cette réponse détaillée.
J'avais remarqué que la fonction dont tu donnes le lien n'existe plus dans CS5 mais je virais dingue en la cherchant.
Rassurant donc.
C'est dommage, elle était utile cette petite fonction :)
Redéfinir la mise à l'échelle à 100% revient au final à annuler l'action du script donc inutile en l’occurrence je trouve.
Pas grave, on s’accommode bien des parenthèses quand on voit les services que rend ce script.
Merci encore pour ce temps précieux que tu m'as fais gagner.
…comme mes productions n'intéressent plus grand-monde aujourd'hui…
Je peux t'assurer que partout ou je vais on me parle de toi et de tes produits. Tes compétences et ton talent, nombre de boites se les arracheraient aujourd'hui (tu n'as qu'à me demander pour que je te les liste ;) )
Quant au grand public, je pense qu'il y a juste un déséquilibre entre l'aura que tu as auprès des utilisateurs et les retours que tu reçois. Mais encore une fois, cet éventuel silence ne trahit en rien un manque de considération.
A titre personnel, tu me fais juste rêver à chacune de tes sorties, ta compréhension des mécaniques profondes, ta capacité à sortir des scripts carrés, fonctionnels et puissants est juste à la limite du supportable :)
Continue à nous en mettre plein la vue. Dis toi que si on est si peu diserts, c'est juste qu'on est trop occupés à ramasser nos dents…
Eh bien Loïc, on n'a plus qu'à se pacser ;-)
Merci pour ces louanges.
Marc
"on n'a plus qu'à se pacser ;-)"
trop tard ;)