Hallo Bruno,
das Wechseln der Stilvorlage muss im Handler geschehen, weil das Script im 'tell paragraph i'-Block ist, wenn der
Name festgestellt wird. Würde man nur die Zuweisung ändern, dann könnte dies an diesem Ort geschehen. Weil man aber
noch den Stilvorlagen-Namen des vorhergehenden Absatzes abfragen muss, ist die Verschiebung in den Handler notwendig.
Dort trifft man die gleiche 'tell block'-Struktur an, minus 'tell paragraph i'.
Gut, man könnte den 'tell paragraph i'-Block vermeiden durch 'if name of style sheet of paragraph i ...'. Dann geschieht das
Adressieren der Absätze innerhalb des 'tell story 1'-Blocks und der Handler wird überflüssig.
---
tell document 1 of application "QuarkXPress 5.01"
tell current box
tell story 1
repeat with i from 2 to count of paragraphs
try
if name of style sheet of paragraph i = "kursiv_taetigkeit" then
try
if name of style sheet of paragraph (i - 1) is not "adressen_email" then
set style sheet of paragraph (i - 1) to "kursiv_taetigkeit"
end if
on error
set style sheet of paragraph (i - 1) to "kursiv_taetigkeit"
end try
end if
end try
end repeat
end tell
end tell
display dialog "fertig" buttons "OK" default button 1 with icon 1
end tell
---
Zum Problem mit der Geschwindigkeit: es ist bekannt, dass manche Scripts mit QuarkXPress 5 viel langsamer laufen
als mit der Version 4. Und leider helfen die einfachen QXP-4-Tricks, um die Ausführung zu beschleunigen, nicht mehr
(auf das Objektwerkzeug wechseln, die Masspalette schliessen, die Auswahl aufheben).
Zwei Dinge kann man aber unternehmen:
1. Die Scripts nicht ab Skripteditor ausführen, sondern ab dem neuen QXP-5-Script-Menü.
2. Die "do script"-Methode anwenden.
Der erste Punkt ist leicht zu erfüllen: die Script-Datei in den Ordner "Scripts" im QXP-Programmordner stecken. Der
zweite Punkt ist schwieriger, weil beim kleinsten Irrtum die Meldung erscheint, dass das Script den Befehl nicht versteht.
Hier ist die obige Variante, eingebettet in ein 'do script':
---
script changeStyleSheet
tell document 1 of application "QuarkXPress 5.01"
activate
tell current box
tell story 1
repeat with i from 2 to count of paragraphs
try
if name of style sheet of paragraph i = "kursiv_taetigkeit" then
try
if name of style sheet of paragraph (i - 1) is not "adressen_email" then
set style sheet of paragraph (i - 1) to "kursiv_taetigkeit"
end if
on error
set style sheet of paragraph (i - 1) to "kursiv_taetigkeit"
end try
end if
end try
end repeat
end tell
end tell
display dialog "fertig" buttons "OK" default button 1 with icon 1
end tell
end script
tell application "QuarkXPress 5.01"
do script {changeStyleSheet}
end tell
---
Das Scriptobjekt 'changeStyleSheet' muss definiert sein, bevor im Script der Aufruf 'do script' erfolgt. Versuche es mal
mit dieser Methode. Die Beschleunigung dürfte mehr als spürbar sein.
Hans Haesler, hsa@ringier.ch
als Antwort auf: [#418170]