Hallo Hans,
jetzt haben wir ja schon eine Menge herausbekommen.
Doch es gibt noch mehr. Und ich komme auf Index und uniqueID zurück.
Alle Stilvorlagen bekommen in der Reihenfolge ihrer Erstellung eine laufende Nummer, den
Index. Wird eine Stilvorlage gelöscht, werden die Nummern neu vergeben, die Reihenfolge ändert sich dabei nicht.
Neben dem Index wird jeder neuen Stilvorlage eine
uniqueID zugewiesen, die der Stilvorlage aber bis an ihr Lebensende erhalten bleibt. Wird z. B. die Stilvorlage mit der uniqueID 2 gelöscht, dann kommt die uniqueID 2 eben nicht mehr vor. QXP ist aber bestrebt, diese Lücke aufzufüllen und gibt der nächsten neuen Stilvorlage in diesem Beispiel die uniqueID 2. Das bedeutet: Die uniqueID entsprechen nicht der Reihenfolge, in der die Stilvorlagen angelegt wurden.
Dieses Prinzip wird in der langen Stilvorlagenliste meines ersten Eintrags deutlich. Zunächst habe ich alle Stilvorlagen bis »Zitat nText« (Index 31) angelegt. Dann die Stilvorlage nach »GS Aufz« gelöscht, so dass die uniqueID 12 fehlte. Anschließend habe ich die Stilvorlage »GS ff blau« angelegt, der die fehlende uniqueID 12 zugewiesen wurde. Damit fehlten keine ID mehr und als ich die letzten Stilvorlagen (ab Index 33) anlegte, bekamen die jeweils eine neue uniqueID.
Mit meiner Umgehung (Skript im grauen Feld des ersten Eintrags) konnte ich alle Stilvorlagennamen korrekt auslesen, weil die höchste uniqueID der Anzahl der Stilvorlagen entsprach.
Als ich Hans’ Test nachvollzog,
--- (Text)
testa
testb
testc
testd
teste
testf
testg
---
und die Stilvorlagen testb und teste gelöscht hatte, stieß dieses Skript an seine Grenzen, da es in dem Dokument nicht zu jedem Index eine uniqueID gab.
---
Name, Index, uniqueID
Normal, 1, 1
testa, 2, 2
testc, 3, 4
testd, 4, 5
testf, 5, 7
testg, 6, 8
---
Damit das Skript funktioniert, müssen die gelöschten Stilvorlagen durch zusätzliche (notfalls Dummy-)Stilvorlagen »ersetzt« werden. Anders ausgedrückt: Die ursprüngliche Anzahl der Stilvorlagen muss wiederhergestellt werden.
In der erweiterten Form des obigen Skripts wird also zunächst geprüft, ob Stilvorlagen gelöscht und nicht ebensoviele neu angelegt wurden. Falls ja, legt das Skript Dummy-Stilvorlagen in erforderlicher Anzahl an. Um doppelte Stilvorlagennamen zu vermeiden, kommt die fehlende uniqueID mit in den Namen.
--- (nameList: Liste aller Stilvorlagen, sortiert nach uniqueID)
Normal
testa
z_tmp3
testc
testd
z_tmp6
testf
testg
---
Mit dieser Liste kann das Skript die Stilvorlagennamen korrekt zusammenstellen.
---
{"testa", "Kein Stil", "testc", "testg", "Kein Stil", "testf", "testg"}
---
Das ist zwar jetzt für die Umgehung von
set allPara to (name of style sheet) of every paragraph eine ganze Menge Code, aber der größte Teil davon läuft bei jedem Skriptgang nur einmal ab und mit do script recht flott.
Entgegen Deiner Beobachtung, Hans, listet dieser Code die Stilvorlagennamen nicht in der gleichen Reihenfolge auf wie der folgende:
Der erste sortiert die Namen nach der uniqueID, der zweite nach dem Index. Da aber über die uniqueID auf den Stilvorlagennamen zugegriffen wird, ist auch diese Sortierung erforderlich, und zwar aufgefüllt mit allen Ersatzstilvorlagen.
Grüße, Goar