InGutter | Script Available for Beta Test
October 08, 2009 | InGutter | en | fr
InGutter gives the user the ability to effortlessly create, design and manage a set of rules between text columns in InDesign CS3/CS4. This free JS script implements and extends the technique explored in Indiscripts a few weeks ago. Try the beta version, and tell me.
This article is outdated. Discover the new version of the script from the InGutter's Main Page.
[Update 10/26/09] InGutter 1.04b brings a better user interface. The obscure Free Gutter and Free Offset checkboxes have been removed. Now you can control in a single field the Rule Offset —signed value,— which specifies the moving off centre of the rules within the gutter:
[Update 10/09/09] The CS3 bug reported by Edfred is now fixed — thanks to Loic Aigon who helps me to find the needle in the haystack.
As shown in “Introducing InDesign Column Rules”, there is a way to emulate adaptative rules between the columns of any text frame. By ‘adaptative’, I mean that once the group is set and connected, it remains freely resizeable in the two dimensions, and it always makes the lines fit the gutters. The only trouble for the user is that s/he needs to manually build the magic subframe. Because the rule set is hidden by the main frame and embedded in a group, it is tricky to add a column, to modify the rule style or to change the background color. In addition, we lose the direct access to the “text frame options” dialog —since it isn't available to groups.
InGutter makes the whole job for you! Select a text frame —or put the insertion point within the frame— and just call InGutter.jsxbin from the Automation/Script panel. (Even better, link the script to a shortcut key, e.g. Cmd Alt B.) The dialog box allows you to create, position and customize the rule set as if it were an actual component of the text frame. Of course, you can also run the script on a frame or a group it has previously managed, and then change the settings.
Installation, requirements, limitations
Download and place the InGutter.jsxbin file in your InDesign scripts folder. That's all, InGutter is ready to rule!
The script is intended to work with InDesign CS3/CS4, Mac or Win. The Mac interface has no ‘steppers’ on the left side of the edit boxes —I don't know how to implement that widget,— but the user will obtain the same behavior with the keyboard arrows keys (Up/Down).
With CS4 only, the script process is undoable via Edition/Undo InGutter.
InGutter provides an English or French interface according to the application locale. English is the default language. Translation into other languages are welcome, please contact me at marc{at}indiscripts{dot}com.
The dialog interface is supposed to fit the measurement units to the UI current preferences. Anyway, you still have the possibility to key a value with an explicit unit in any measurement field.
The listboxes display the swatch names and the stroke style names only (without ‘rendering’ the corresponding colors or styles).
InGutter works accurately —I hope!— on transformed text frames having rotation and/or shear angle. It also supports frames contained in a group (and preserves their hierarchy).
The script can't originate the rule set from an anchored frame. However, once being created, it seems possible to cut/paste an inguttered group in a parent container and to invoke the script manager afterwards.
InGutter doesn't support corner effects and can't work as expected on non-rectangular text frames.
If needed, the rule set may cohabit with strokes (around the main frame).
The rule set is grouped with the main frame. This is a crucial condition to preserve the accurate behavior of the component. If by mistake you break the unity, you can still run the script in order to fix the problem.
Thanks in advance for your feedback.
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