InGutter | Script en beta-test
October 08, 2009 | InGutter | fr | en
InGutter offre la possibilité de créer, styliser et gérer sans effort un jeu de filets entre les colonnes d'un bloc-texte dans InDesign CS3/CS4. Ce script JS librement téléchargeable met en œuvre et étend la technique que nous avons explorée ici-même il y a quelques semaines. Essayez-le en version beta et n'hésitez pas à m'envoyer vos commentaires.
Cet article est obsolète. Découvrez la nouvelle version du script à partir de la page principale d'InGutter.
[MàJ 26/10/09] InGutter 1.04b offre une interface améliorée et simplifiée. Les obscures cases à cocher « Gouttière libre » et « Mouvement libre » ont disparu et vous contrôlez désormais dans une zone unique, Décalage filets, le décentrage à gauche ou à droite des filets vis-à-vis de la gouttière:
[MàJ 09/10/09] Le bug CS3 révélé par Edfred est résolu. Merci à Loic Aigon qui m'ai aidé à trouver l'aiguille dans la botte de foin...
Ainsi que nous l'avons joyeusement expérimenté dans le billet « Créer des filets de colonnes dans InDesign », il existe un moyen de simuler des filets inter-colonnes adaptatifs dans n'importe quel bloc-texte. Le terme adaptatif signifie qu'une fois le groupe créé et connecté, il reste librement redimensionnable dans les deux dimensions et préserve le parfait ajustement des filets vis-à-vis des gouttières et du bloc principal. La seule difficulté est que l'utilisateur est supposé construire manuellement le sous-bloc magique. Or, comme le jeu de filets est caché derrière le bloc principal et encapsulé dans un groupe, il devient vite fastidieux d'ajouter une colonne, de modifier le style de ligne, de changer la couleur de fond, etc. De surcroît, on ne dispose plus d'un accès direct à la boîte de dialogue « Options de bloc de texte », non disponible pour les groupes.
InGutter fait tout ce boulot à votre place ! Sélectionnez un bloc-texte (ou placez le point d'insertion dans le texte) et appelez simplement InGutter.jsxbin à partir de la palette de Scripts. (Mieux encore, je vous suggère de lier le script à un raccourci, du genre Cmd Alt B.) La boîte de dialogue vous permet de créer, positionner et personnaliser le jeu de filets comme s'il s'agissait d'un composant du bloc-texte. Bien entendu, vous pourrez également relancer le script sur un bloc ou un groupe qu'il aura précédemment traité, et faire évoluer les paramètres à votre guise.
Installation, prérequis et limitations
Téléchargez et placez le fichier InGutter.jsxbin dans votre dossier de scripts. C'est tout ! InGutter est prêt à gouverner.
Le script est supposé compatible InDesign CS3/CS4, Mac ou Windows. L'interface Mac présente la particularité de ne pas offrir de boutons ascenseurs à gauche des zones de saisie ; l'utilisateur peut toutefois obtenir un fonctionnement similaire avec les touches fléchés du clavier (Haut/Bas).
Sous ID CS4 seulement, l'action du script est globalement annulable via Édition/Annuler InGutter.
InGutter fournit une interface française ou anglaise selon la localisation de l'application. L'anglais est la langue par défaut. Des propositions de traduction dans d'autres langues seront les bienvenues, contactez-moi à marc{at}indiscripts{dot}com.
L'interface dialoguée devrait afficher les unités de mesure correspondant aux préférences courantes de l'utilisateur. Cependant, vous avez toujours la possibilité de saisir des valeurs avec une unité de mesure explicite dans les champs de saisie métriques.
À noter que les boîtes de liste affichent les noms de nuances et les noms de styles de contours sans leur rendu visuel.
InGutter gère correctement — j'espère ! — les blocs transformés par rotation et/ou déformés sur X. Il gère également les blocs éventuellement contenus dans un groupe (et préserve la hiérarchie).
Le script ne sait pas construire le jeu de filets à partir d'un bloc ancré. Cependant, une fois créé, il semble possible de couper/coller à l'intérieur d'un conteneur un groupe préalablement traité, et d'invoquer ensuite le script pour modifier les paramètres.
InGutter ne prend pas en charge les effets d'arrondis et ne peut pas traiter comme on l'espérerait les blocs non rectangulaires.
Si besoin, le jeu de filets peut cohabiter avec un contour de bloc.
Le jeu de filets est groupé avec le bloc principal, et ceci est une condition cruciale pour préserver le comportement adéquat du composant. Si par erreur vous rompez l'unité, il reste possible de relancer le script pour resynchroniser automatiquement les éléments.
N'hésitez pas à me signaler toute anomalie, ce n'est encore qu'une version beta !
Comments
Juste un problème d'affichage des filets — et uniquement là — quand la fenêtre de dialogue est en premier plan… Sinon, sublime et adopté par urbanbike.com !!!!
Bref, encore un script au poil !!!
Devrait être payant et/ou proposé par Adobe dans le CS5…
> Juste un problème d'affichage des filets
> — et uniquement là — quand la fenêtre
> de dialogue est en premier plan
Oui, c'est une question de rafraîchement d'écran au niveau InDesign. La boîte de dialogue est modale, donc l'appli se la coule douce en tâche de fond. Il faut savoir que tant qu'un dialogue modal est actif (je parle au niveau scriptUI), il est impossible d'intervenir dans InDesign.
J'avais envisagé au départ une vision pleinement interactive du script (non modale), mais les bugs intrinsèques à ScriptUI (touche de tabulation non capturée sous Windows, etc.) me rendaient la tâche herculément complexe.
Moralité: modalité.
[Merci pour ton feedback... et pour le reste...]
@+
Marc
Bonsoir marc.
J'ai téléchargé votre script mais j'ai une erreur en l'appliquant.
Voici le contenu de cette erreur :
Javscript erreur
Numéro de l'erreur : 25
Chaine de l'erreur : Attendu : ;
Ligne : 1
Source : @JSXBIN@etc..................
Texte incorrect : .0
Je suis toujours sous CS3
Merci.
J'ai eu ce genre de mésaventure en exportant un script en binaire depuis ESTK CS4. Une fois exporté depuis l'ESTK CS3, tout était Ok.
Il semblerait que le moteur de cryptage soit un peu défaillant dans la cs4.
Sauf erreur.
A+ Loic
@edfred et loic:
Un grand merci pour le feedback! Ce serait donc une mauvaise nouvelle pour les utilisateurs CS3. Le script non binaire fonctionne pourtant avec les deux versions. Hélas, je doute que l'ESTK CS3 me fasse un export valable pour CS4. A vérifier. Pour l'instant, le script est donc CS4 only. Je me renseigne.
@+
Marc
Bonjour Marc,
D'abord Merci.
J'ai téléchargé le script et j'obtiens un fichier "jsxbin.txt".
Es-ce normal ?
cordialement !!!!
> J'ai téléchargé le script et j'obtiens
> un fichier "jsxbin.txt". Es-ce normal ?
Euh... non, pas normal.
L'url complète du script est:
www.indiscripts.com/blog/public/scripts/InGutter.jsxbin
La procédure conseillée est Clic droit + Enregistrer la cible sous...
En local, le fichier doit s'intituler "InGutter.jsxbin"
Tenez-moi au courant!
Salut Marc,
J'avais écrit un script mais quand je l'avais exporté en binaire via estk cs4, l'exploitation de de dernier semblait impossible et provoquait une erreur identique à celle pointée par Eddy.
J'avais simplement ouvert dans ESTK CS3 et exporté depuis lors. Et le script fonctionne à merveille.
Ce n'était pas tant une considération sur la fonctionnalité CS3/CS4 :-)
A+ Loic
@Loic
La question que je me pose -- une question de débutant, certes --, c'est: que se passe-t-il si le script contient des instructions destinées à ID CS4?
En effet, dans le code source d'InGutter, afin d'assurer la bi-compatibilité, je fais un routage du genre:
if ( parseInt(app.version) >= 6)
{
// >=CS4
}
else
{
// CS3
}
Mais le moteur ESTK CS3 saura-t-il gérer ça?
@+
Marc
J'ai téléchargé le script via un autre navigateur que Safari et cela fonctionne.
Encore Merci !!!
Bonne journée !
'une question de débutant'
Tu veux rire, tu es mon maître ;-)
En fait, c'est vraiment juste de cryptage dont il s'agit et à priori pas d'exécution.
Je pense donc qu'ESTK3 ne fera que lire les données et les crypter avec son moteur.
Sauf erreur de ma part, ca ne devrait pas affecter la fonctionnalité de ton script.
As-tu essayé la méthode longuement éprouvée de débugage qui s'appele "Give it a try" ? :-D
Débutant, c'est ça et moi j'ai une tunique blanche et j'habite Place St Pierre au Vatican ? :-))
A+ Loic
PS: tu mettrais pas un flux rss en place ?
En tout cas, je débute en ESTK binary export ;-)
Merci pour ton retour. Pour tester, faudrait-il encore que j'aie sur mon poste ESTK CS3 sous la main. On peut le rétrograder depuis CS4?
(Précision: je n'ai pas InDesign CS3. Je prétends que le script devrait tourner sous CS3 seulement parce que j'ai testé la rétrocompatibilité au niveau de l'interpréteur JavaScript, qui lui, est rétrogradable...)
PS. Normalement, un flux Atom est accessible dans la barre d'adresses du navigateur. Isn't it? L'url au cas où: www.indiscripts.com/feed/atom
@+
Marc
Tu veux que je te fasse l'export binaire ESTK CS3 et tester chez ouam ?
Ok pour le flux, désolé de t'avoir embêté avec çà.
A+ Loic
Volontiers. Dis-moi où envoyer le source.
@+
Marc
Sur mon mail : loic_aigon chez yahoo fr
Tu m'as envoyé qqch ?
Ben oui.
pas reçu :-( Yahoo doit encore faire des siennes :-(
essayes ici :
loic chez caldera eu
Hello vous deux.
Marc j'ai bien reçu un mail et y ai répondu avant de lire la suite des com's.
Rien ne presse et je peux attendre un peu que Loic ait crypté CS3 le script attendu.
Enfin, vous le faites comme vous le sentez.
PS : le "Eddy" cité par Loic, c'est moi.
Ok Marc,
Infos dans ta boite
A+ Loic
Bug résolu. (Grand merci à Loic pour le dépannage!)
Pour info, il y avait deux problèmes:
-- d'une part, l'instruction `for each(... in ...)` [JavaScript 1.6] est reconnue dans CS4 mais pas dans CS3, mais c'était un point mineur, facile à contourner.
-- d'autre part, l'erreur critique au lancement (qui ne semble pas liée au `for each` compte tenu du message récolté) résulterait d'un bug d'ExtendScript ToolKit. Comme l'a expliqué Loic, on peut tenir pour vraisemblable qu'ESTK CS4 n'exporte pas correctement un script en format binaire. Ou plutôt, qu'il ne l'exporte pas d'une façon uniformément compatible avec ID CS3. Il faut donc se replier sur ESTK 2.0 pour obtenir un 'jsxbin' valable à la fois pour CS4 et CS3.
Bon à savoir si vous développez des scripts multi-versions.
Merci Marc, quelle réactivité de votre part à Loic et vous-même.
} bientôt pour un nouveau script ou astuce... ;)
T'aider (toutes proportions gardées) fût un grand honneur et un plaisir.
A bientôt,
Loic
Bonjour la liste,
Je n'arrive pas à télécharger le script, j'ai une page web avec l'encodage ?
Sinon c'est un script que je recherche depuis très longtemps.
Merci
Yves
Bonjour Yves,
Apparemment le "Clic droit / Enregistrer la cible" n'est pas une procédure universelle pour tous les navigateurs.
Je crois que je vais plutôt mettre un lien sur un fichier ZIP, ça simplifiera la vie de tout le monde.
Mise à jour dans l'après-midi...
PS. - Je re-précise en passant que le script est en beta test. Il semble très bien fonctionner sous InDesign CS4, mais nous enregistrons encore quelques péripéties sous CS3. On y travaille!
@+
Marc
Marc,
A while ago I asked Adobe about CS3's incompatibility with jsxbin scripts generated in CS4. This incompatibility was confirmed as intended. It had to do with certain aspects of CS4 that couldn't be filtered out to produce legitimate CS3-compatible code.
It is a nuisance because to get a jsxbin script compatible with CS3 and CS4, you have to generate the jsxbin in CS3 and (as you mentioned) make sure that you don't use CS4 code that CS3 doesn't know about. A very unsatisfactory situation.
Regards,
Peter
Hi Peter,
> A very unsatisfactory situation.
You've said it! I'm now working to get the script "CS3-friendly" and I discover a mousetrap at every step:
- Number.toLocaleString() does not work as expected under ID CS3 (it's important for French users)
- a CS3 scriptUI control seems unable to listen to a 'keydown' event (!!!)
- better: did you notice that the 'click' event occurs in CS3 WHEN the control has been clicked (and the value updated), while it occurs in CS4 BEFORE the update.
etc.
Finally, I wonder if it isn't an insane idea to keep a script CS3 supported any way one can...
Thanks a lot for your message.
@+
Marc
Quote : "Finally, I wonder if it isn't an insane idea to keep a script CS3 supported any way one can..."
Yeah Marc, I was getting to that idea too. CS4 is now on the rails for more than a year. CS3 Users are probably going down day by day.
As far as I am concerned, I would consider a balance between time and effort about CS3 conversion. If it is quick and easy, why not but if it's a pain in the ...
IMHO Loic
Merci Marc, je vais essayer cela.
Ceci dit je vais passer à la version CS4 une question je me pose, est-ce nécessaire de faire beaucoup de travail de recherche pour cette version CS3?
Merci encore de vos effort
> est-ce nécessaire de faire beaucoup de travail
> de recherche pour cette version CS3?
Eh bien, comme dit Loic ci-dessus, il y a un juste équilibre à trouver. On ne peut pas faire comme si les utilisateurs d'InDesign CS3 n'existaient plus ;-)
Or, dans les cas les plus simples (quand on n'utilise pas de fonctionnalités avancées), un script mis au point pour ID CS4 tournera aussi sous CS3. Inversement, quand le script fait appel à des outils spécifiques à CS4, il est exclu d'assurer la rétrocompatibilité. InGutter se trouve dans une situation intermédiaire: il met en oeuvre une solution pratique (filets de paragraphes, etc.) qui n'est pas exclusive à CS4, MAIS il propose une interface dont certains composants ou mécanismes ne sont pas solubles "tels quels" dans la couche JavaScript de CS3. L'interface étant un élément accessoire, il me paraît normal dans ce cas de rechercher un compromis permettant aux utilisateurs CS3 de bénéficier quand même de l'outil. A noter que je ne développe pas une version "à part", le même code doit tourner sous CS4 et CS3.
Dans la version actuelle d'InGutter, je pense que ce compromis est obtenu. Et les efforts et le temps passé ne sont jamais perdus pour mon éducation personnelle.
Au fond, à quel moment faut-il jeter l'éponge en matière de rétrocompatibilité? Pour moi, le point de rupture est clair: je laisse tomber quand les modifications imposées au code par CS3 impactent les performances sous CS4. Là, ce serait du nivellement par le bas.
@+
Marc
Magique ;-)
Et j'ai récupéré le flux pour suivre ce blog de très près.
Gee, before I even had gotten to try your clever, manual trick for column rules I found this script of yours, which works splendidly in CS4 -- so far! Don't stop coding, dude. :-)
Thanks Klaus!
@+
Marc
this is absolutely brilliant and it works flawlessly. Thanks!!!
J'ai téléchargé le script via un autre navigateur que Safari et cela fonctionne.
Encore Merci !!!
Great script Marc! I am however running into an issue where I place an object with a text wrap over a text frame with InGutter applied. The wrap causes the rules to shift to the opposite spread. If i edit the InGutter setting to "ignore wraps", it then allows it, but the rules remain under the object. Is there a way for InGutter to allow the wrap to shorten the rules like it wraps the text? That would be a handy feature if it's not already available.
J'ai testé InGuter avec ID CS. Cela fonctionne bien.
Il y a juste une chose : en plus des filets de gouttière, le bloc s'encadre d'un filet noir de 1pt (quel que soit l'aspect du filet de gouttière).
Dans mon message précédent, le 5 a disparu.
Il s'agit d'un test avec InDesign CS5.
Merci Pierre,
InGutter n'ayant pas encore été mis à jour pour CS5, c'est déjà une chance qu'il n'ait pas fait exploser InDesign ;-)
@+
Marc