13 maart 2013

Verschillende stijlen voor linker- en rechterpagina per script

.
Op een van de LinkedIn fora over InDesign werd de vraag gesteld hoe het makkelijk gemaakt kon worden om op de linker en rechterpagina 'automatisch' verschillende stijlen te gebruiken.
Let wel: de stijl 'Kopje' bijvoorbeeld zou op de linkerpagina een andere kleur moeten hebben dan op de rechterpagina bijvoorbeeld.
Natuurlijk: je maakt twee stijlen aan: een voor Kopje Rechts en een voor Kopje  Links.
Maar nu is de situatie zo dat vele pagina's met tekstketens nog bewerkt worden waardoor een kopje van de linker- naar de rechterpagina kan verschuiven. De stijlen moeten dan worden nagelopen en opnieuw worden toegepast.
Of dat makkelijker kon dan 'handwerk'

Tom ZingerInDesign Server / InDesign Scripting Specialist bij Marvia, www.getmarvia.com, had de vraag ook gezien en kwam met een perfect script dan na wat fine-tuning in staat is op drie stijlen achteraf automatisch toe te passen afhankelijk van of de tekst zich op een linker- of rechterpagina bevindt!

Het werkt zo: gebruik voor alle kopjes de alineastijl met de naam 'stijl_A', eventuele onderkopjes geef je dan 'stijl_B' en 'stijl_C'. Deze pas je toe op rechter en linkerpagina (bedenk: de tekst kan dus nog vershuiven). Maak ook alvast alineastijlen aan voor alleen de linkerpagina met de namen 'links_A', 'links_B' en 'links_C'.

Wanneer je nu aan het eind van de bewerkingen bent gekomen run je het script: op alle linkerpagina's wordt nu 'stijl_A' vervangen door 'links_A' op de rechterpagina blijft alles behouden. Idem voor 'stijl_B' en 'stijl_C'.

Hier kun je het script downloaden: klik met de rechtermuisknop en kies Bewaar link als..
Of kopieer de broncode en bewaar als platte tekst met de extensie .jsx
Plaats in InDesign/Scripts/Scripts Panel/eventuele map/

Broncode


//je document
var myDoc = app.activeDocument;
//de te vervangen stijlen
var myFindStyleCollection = ['stijl_A','stijl_B','stijl_C'];

//de stijlen waardoor vervangen wordt
var myReplaceStyleCollection = ['links_A','links_B','links_C'];

for(var myStyleIndex=0;myStyleIndex//je zoek-paragraafstijl
var myFindStyle = myDoc.paragraphStyles.item(myFindStyleCollection[myStyleIndex]);
//je vervang-paragrafstijl
var myChangeStyle = myDoc.paragraphStyles.item(myReplaceStyleCollection[myStyleIndex]);

//je instellingen leeg maken
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

//je zoekopdracht
app.findTextPreferences.appliedParagraphStyle = myFindStyle;

//je resultaat
var myFoundItems = myDoc.findText();
for (var myFoundIndex = 0; myFoundIndex < myFoundItems.length; myFoundIndex++) {

var myFoundItem = myFoundItems[myFoundIndex];
var mySide = myFoundItem.parentTextFrames[0].parentPage.side;
if(mySide==PageSideOptions.LEFT_HAND){
myFoundItem.appliedParagraphStyle = myChangeStyle ;
}
}
}


Tom voegt daar nog aan toe:
"Eigenlijk wil ik nog een keer het script aan het InDesign menu toe voegen, en dat je geen aanpassingen in het script zelf hoeft te doen maar stijlen aan kan klikken, of stijlmapjes.
Eerst maar eens zien of er veel reacties op komen."

Wel, kom maar op met de reacties!

2 opmerkingen:

Maarten Swart zei

Het werkt erg goed.
Echter ... hoe ik de koptekst met alinealijnen die buiten de tekst kolom doorlopen over de volle pagina breedte, moet omdraaien, ben ik nog niet uit: het script draait wel de style om, maar de alinea lijn en de daarin staande tekst doen dan heel raar.
Als daar nog eens een oplossing voor wordt gevonden ....

Maarten Swart zei

Wel Tom - en Frans - :
graag dat menuutje maken waarin je de stijlen dan kan aanklikken, lijkt me echt SUPER handig!