TotalRescale | Last-Minute Layout Adjustment
December 16, 2011 | Snippets | en | fr
Sometimes you want to slightly translate or scale an entire layout while maintaining the page size and a strict relationship between the pages and the contents. Of course you can take advantage of the Layout Adjustment feature if the layout is allowed to reflow in a framework based on new page margins and dimensions. But this is of no use if the layout is fixed in itself. What we would like is a general way of repositioning and/or scaling the whole piece on every page just as we transform an image in Photoshop.
A solution would be to manually group the objects and to repeat the desired transformations in seeking to match the final margins, but you can guess that this is not the option we recommend! A much more powerful tool is available, although inaccessible by regular InDesign means. In short, we change the inner scale and the inner coordinates of the pages without actually resizing nor moving them. (This is only possible in CS5 and newer.)
Technical note. — The beginnings of TotalRescale germinated in an article I posted in August 2011, “Transforming spreads in InDesign”. Meanwhile I discovered an interesting property: unlike the Spread
view, the Page
view can be transformed independently of page items. Imagine you have the power to temporarily stretch an elastic page without distorting the objects it contains. When you print or export that page to its real-world size (i.e. not stretched), the objects become shrunken compared to their apparent size on the screen. That's basically how the script works. But I use an additional trick to prevent scaling from being perceptible on the screen: an inverse transformation is applied to the spreads. This way the user sees the actual size of the pages (unchanged) and the actual size of the objects at the end of the process. It seems to me a excellent illustration of combining spread space and page space transformations.
How to use TotalRescale
TotalRescale only works in InDesign CS5 or newer.
1) Start ID and open a document.
2) From the Pages panel, select the master page that exposes the margins of your current layout—these margins represent the original reference area.
3) Create a rectangle on the master page. The bounds of this object will delimit the final area, i.e. the final margins of the layout. (The rectangle can be larger or smaller than the reference area, it can be proportional or non-proportional to the reference area, etc.)
4) Select the rectangle and run TotalRescale.jsx from your Scripts panel.
If you are working on a facing-pages document, the script offers you the option to apply a symmetrical template with respect to left-hand and right-hand page sides (as shown below). Instead you could choose to uniformly apply the template disregarding page sides.
Disclaimer
1) As usual, THIS SCRIPT IS PURELY AND OVERTLY EXPERIMENTAL AND I DO NOT GUARANTEE it will work properly in any environment or configuration. Always make a backup of your document before you try.
2) TotalRescale relies on transformations that you CANNOT DIRECTLY OPERATE OR REVERSE FROM THE USER INTERFACE. Use this script when you have to adjust the final layout before exporting a document. It is highly inadvisable to use this script during the creation process.
3) Once the transformation is applied, InDesign may display dimensions, measurements or text size in RELATIVE units. This primarily depends on the “Transformations are Totals” option, and other similar settings.
4) This script DOES NOT support layouts whose pages vary in dimensions. It is assumed that the size of the pages is the same in the entire document.
5) When Baseline Grid alignement is activated, some lines MAY UNEXPECTEDLY SHIFT on the next page. This is very likely a rounding error caused by InDesign itself.
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 ;)