[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Absatzformate für linke und rechte Seiten (CS4, WIN)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

5. Jul 2011, 22:19
Beitrag # 1 von 10
Bewertung:
(4117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

hiermit versuche ich gerade Überschriften, die auf linken Seiten sind, ein neues Absatzformat zuzuweisen:

Code
//clear the find/change text preferences  
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.appliedParagraphStyle = "Überschrift1";
app.findTextPreferences.findWhat = '';
var myFound = app.activeDocument.findText();


for( var n = myFound.length-1; n >= 0; n-- ) {

var myIndex = myFound[n].insertionPoints[0].index;
var myStory = myFound[n].parentStory;

var myFrame = myStory.insertionPoints[myIndex].textFrames;

var meineSeite = myFrame.parent.name; <<=======

if (meineSeite.side == PageSideOptions.LEFT_HAND) {

myFound.appliedParagraphStyle = "Überschrift1_links";
}
}


Nun benötige ich die Seitenzahl "meineSeite", um herauszufinden, ob das Absatzformat auf einer linken oder auf einer rechten Seite angewendet wurde.

Und wie kann ich dem Fund dann ein neues Abstzformat zuweisen?

Gruß
Christoph

(Dieser Beitrag wurde von cwenet am 5. Jul 2011, 22:20 geändert)
X

Absatzformate für linke und rechte Seiten (CS4, WIN)

Martin Fischer
  
Beiträge gesamt: 12711

6. Jul 2011, 08:28
Beitrag # 2 von 10
Beitrag ID: #475280
Bewertung:
(4064 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

»var meineSeite = myFrame.parent.name;« gibt Dir den Namen der Seite.
Die Seite selbst ist parent von myFrame (also myFrame.parent).

Zu myFound.appliedParagraphStyle = "Überschrift1_links":
myFound ist ein Array mit gefundenen Absätzen. Hier fehlt also noch der Index n für das einzelne Element des Arrays.


Du brauchst für die Ermittlung des Textrahmens nicht den Umweg über den InsertionPoint und die Story zu nehmen. Du kannst statt dessen von der Fundstelle (Absatz) mit parentTextFrames[0] direkt zum Textrahmen, in dem sich der Absatz befindet, hochklettern (vorausgesetzt, der Absatz ist nicht im Übersatz; dazu wäre noch eine Überprüfung sinnvoll).

Code
var myFrame = myFound[n].parentTextFrames[0]; 



als Antwort auf: [#475278]
(Dieser Beitrag wurde von Martin Fischer am 6. Jul 2011, 08:29 geändert)

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

6. Jul 2011, 12:31
Beitrag # 3 von 10
Beitrag ID: #475292
Bewertung:
(4032 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Merci Martin,

auch für die schöne Erklärung.

So sieht es jetzt aus und funktioniert:

Code
//clear the find/change text preferences   
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.appliedParagraphStyle = "Überschrift1";
app.findTextPreferences.findWhat = '';
var myFound = app.activeDocument.findText();


for( var n = myFound.length-1; n >= 0; n-- ) {

var myFrame = myFound[n].parentTextFrames[0];

var meineSeite = myFrame.parent;

if (meineSeite.side == PageSideOptions.LEFT_HAND) {

myFound[n].appliedParagraphStyle = "Überschrift1_links";
}
}


Schöne Grüße
Christoph


als Antwort auf: [#475280]
(Dieser Beitrag wurde von cwenet am 6. Jul 2011, 12:36 geändert)

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

31. Jul 2011, 10:00
Beitrag # 4 von 10
Beitrag ID: #477189
Bewertung:
(3920 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe das Script nun noch etwas erweitert.
Es merkt sich vorher die Abweichungen und weist sie nach Nueformatierung wieder zu:


Code
//var searchPairs= [["Überschrift 2","Überschrift 2_links"],["Überschrift 3",  "Überschrift 3_links"],["Überschrift 4",  "Überschrift 4_links"] ]  
var searchPairs= [["Überschrift 2_links","Überschrift 2_rechts"],["Überschrift 3_links", "Überschrift 3_rechts"],["Überschrift 4_links", "Überschrift 4_rechts"] ]


for(var j=0;j<searchPairs.length;j++)
{

//clear the find/change text preferences
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.appliedParagraphStyle = searchPairs[j][0];
app.findTextPreferences.findWhat = '';
var myFound = app.activeDocument.findText();


for( var n = myFound.length-1; n >= 0; n-- ) {

var myFrame = myFound[n].parentTextFrames[0];

var meineSeite = myFrame.parent;

//if (meineSeite.side == PageSideOptions.LEFT_HAND) {
if (meineSeite.side == PageSideOptions.RIGHT_HAND) {


//Abstand davor und danach und Rasterschnapp merken
var merkeAbstandUnten = myFound[n].paragraphs[0].spaceAfter;
var merkeAbstandOben = myFound[n].paragraphs[0].spaceBefore;
var anRasterAusrichten1 = myFound[n].paragraphs[0].alignToBaseline;
var anRasterAusrichten2 = myFound[n].paragraphs[0].gridAlignFirstLineOnly;

myFound[n].appliedParagraphStyle = searchPairs[j][1];


//gemerkter Abstand davor und danach und Rasterschnapp wieder zuweisen
myFound[n].paragraphs[0].spaceAfter = merkeAbstandUnten;
myFound[n].paragraphs[0].spaceBefore = merkeAbstandOben;
myFound[n].paragraphs[0].alignToBaseline = anRasterAusrichten1;
myFound[n].paragraphs[0].gridAlignFirstLineOnly = anRasterAusrichten2;


} //if meineSeite.side
} //for n


} //for j

alert("fertig")


Das Script soll jetzt aber unter CS5 eingesetzt werden.
Leider läuft es da nicht mehr.

Diese Zeile scheint Problem zu machen:
if (meineSeite.side == PageSideOptions.RIGHT_HAND) {

Fehler:
Objekt unterstützt Eigenschaft nicht.

Hat jemand eine Idee, wie ich dies für CS5 lauffähig machen kann?

Gruss
Christoph


als Antwort auf: [#475292]

Absatzformate für linke und rechte Seiten (CS4, WIN)

Uwe Laubender
Beiträge gesamt: 5293

31. Jul 2011, 12:23
Beitrag # 5 von 10
Beitrag ID: #477191
Bewertung:
(3899 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christoph!
Der Lapsus liegt bei:
Code
var meineSeite =  myFrame.parent; 


Probiere mal:
Code
var meineSeite =  myFrame.parentPage; 


PageSideOptions.RIGHT_HAND gibt's nach wie vor in InDesign CS5.

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium


als Antwort auf: [#477189]

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

31. Jul 2011, 15:12
Beitrag # 6 von 10
Beitrag ID: #477195
Bewertung:
(3877 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Merci viel mal Uwe,

jetzt klappt es wieder prima.

Grüße
Christoph


als Antwort auf: [#477191]

Absatzformate für linke und rechte Seiten (CS4, WIN)

Hans Haesler
  
Beiträge gesamt: 5822

31. Jul 2011, 17:39
Beitrag # 7 von 10
Beitrag ID: #477197
Bewertung:
(3859 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

gut, dass es wieder klappt.

Aber etwas möchte ich gerne wissen: Wodurch unterscheidet sich das Absatzformat für eine rechte Seite von jenem für eine linke?

Gruss, Hans


als Antwort auf: [#477195]

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

31. Jul 2011, 18:00
Beitrag # 8 von 10
Beitrag ID: #477199
Bewertung:
(3848 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

die Überschriften sind mit einer Randlinie zwischen Zähler und Text versehen. Dies habe ich über die Absatzlinie gelöst. (siehe auch Screenshots)
Nun brauchte ich die Unterscheidung zwischen links und rechts.
Das Script lasse ich dann einfach am Schluss drüber.
Zusätzlich habe ich mir noch die Merker eingebaut, da hin und wieder beim Umbruch Abweichungen hinzugefügt werden.

Grüße
Christoph


als Antwort auf: [#477197]
(Dieser Beitrag wurde von cwenet am 31. Jul 2011, 18:03 geändert)

Anhang:
Urechts.png (5.30 KB)   Ulinks.png (5.28 KB)

Absatzformate für linke und rechte Seiten (CS4, WIN)

WernerPerplies
Beiträge gesamt: 2723

1. Aug 2011, 07:58
Beitrag # 9 von 10
Beitrag ID: #477203
Bewertung:
(3777 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

falls Dein Skript in beiden Versionen funktionieren soll, könnte Folgendes funktionieren:

try
{
Version 1
}
catch
{
Version 2
}


als Antwort auf: [#477195]

Absatzformate für linke und rechte Seiten (CS4, WIN)

cwenet
Beiträge gesamt: 1117

1. Aug 2011, 09:47
Beitrag # 10 von 10
Beitrag ID: #477207
Bewertung:
(3751 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieben Dank Werner,

für Deine Ergänzung.

Schöne Grüße
Christoph


als Antwort auf: [#477203]
X