21 november 2010

Voor luie mensen: basislijnraster aanpassen


Je hebt je tekst vast staan op basislijn en je basislijn raster is dus hetzelfde als de regelafstand van die tekst natuurlijk (vergeet niet dat elk tekstkader zijn eigen, aparte – van het document basislijn-raster afwijkend – raster kan hebben, maar hier gaat het om het basislijn raster voor je document).

Verandert nu de regelafstand om layout-technische redenen bijvoorbeeld, dan moet je het basislijn-raster ook weer aanpassen.

Voor mensen die daar te lui voor zijn is het onderstaande script (niet van mijzelf!) bedoeld: Zet je cursor in een alinea, run het script en je basislijnraster zal gelijk worden gemaakt aan de regelafstand van de alinea waar je cursor in stond.


Knip/plak onderstaande tekst in een teksteditor en bewaar met de extensie .jsx.

As always*: plaats het script in InDesign/Scripts/Scripts Panel/(eventuele supmap)/


//Basislijn_aanpassen.jsx
//DESCRIPTION: Basislijn aanpassen aan regelafstand
Object.prototype.isText = function()
{
switch(this.constructor.name)
{
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "TextFrame":
return true;
default :
return false;
}
}
if (app.selection.length > 0 && app.selection[0].isText())
{
var myDoc = app.documents[0];
var mySel = app.selection[0];
var myOldPointsPerInch = myDoc.viewPreferences.pointsPerInch;
myDoc.viewPreferences.pointsPerInch = 72;
var myFirstBaseline = (mySel.constructor.name == 'TextFrame')
? mySel.insertionPoints[0].baseline
: mySel.parentTextFrames[0].insertionPoints[0].baseline;
var myLeading = ( mySel.insertionPoints[0].leading == 1635019116 )
? mySel.insertionPoints[0].pointSize * mySel.insertionPoints[0].autoLeading / 100
: Number ( mySel.insertionPoints[0].leading );
if (myLeading)
{
myDoc.gridPreferences.baselineStart = myFirstBaseline;
myDoc.gridPreferences.baselineDivision = pt2mm(myLeading);
}
myDoc.viewPreferences.pointsPerInch = myOldPointsPerInch;
}
function pt2mm(somePoints){
return somePoints*0.3528;
}


*As always, should you or any of your IM Force be caught or killed, the Secretary will disavow any knowledge of your actions
LOL! ;-)




1 opmerking:

Linda zei

Leuk! Enige minpuntje (vind ik) is dat het startpunt van het basislijnstramien er ook door beïnvloed wordt. Zou dat uit te zetten zijn? Bedankt voor alle tips!