[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

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

Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

cwenet
Beiträge gesamt: 1139

29. Mai 2012, 20:19
Beitrag # 1 von 5
Bewertung:
(2161 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich würde gern nach einem beliebigen Indexeintrag suchen und jeweils einen String davorsetzen.
Die Grepsuche lässt dies ja zu:
Suche: (~I)
Ersetze: Stringdavor$0

Der String wird mir jetzt aber natürlich in den Fliesstext gesetzt.
Wie muss die Ersetzung aussehen, damit der Index selber manipuliert wird?

Gruss
Christoph
X

Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

Hans Haesler
  
Beiträge gesamt: 5826

29. Mai 2012, 22:33
Beitrag # 2 von 5
Beitrag ID: #495754
Bewertung:
(2131 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

eine grosse Bitte an Dich (und an die meisten Problem-Lösung-Suchenden):
Stelle doch ein Beispiel-Dokument zur Verfügung!

Dadurch werden ...
1. Die Chancen erhöht, dass Du eine Antwort bekommst ...
2. ... weil ein Hilfsbereiter nicht rätseln muss ...
3. ... und ein Problem eins zu eins nachvollzogen werden kann.

Ich habe nun ein Dokument erzeugt und in einem Textrahmen nacheinander zwei Worte ausgewählt und mit dem Index-Bedienfeld einen Seitenverweis eingefügt. Die beiden Worte habe ich nachträglich ausgewählt und mit Bold und Magenta ausgezeichnet.

Wenn ich nun Dein GREP-Suchen/Ersetzen ausführe, wird Stringdavor nicht in der Grundschrift, sondern in Bold und Magenta ausgezeichnet. Aber nur, weil die Indexmarke auch so formatiert ist. Oder war ... Denn: Die Indexmarke ist weg.

Per Script gelingt mir das Erhalten der Indexmarke und das Formatieren des eingefügten Textes so:

Code
app.findGrepPreferences = app.changeGrepPreferences = null; 

app.findGrepPreferences.findWhat = "~I";

for (var s=0; s<app.activeDocument.stories.length; s++) {
var foundIndex = app.activeDocument.stories[s].findGrep();
for (var i=foundIndex.length-1; i>-1; i--) {
var firstChar = app.activeDocument.stories[s].characters.item((foundIndex[i].index)+1);
firstChar.contents = "Stringdavor" + firstChar.contents;
}
}

app.findGrepPreferences = app.changeGrepPreferences = null;

Gruss, Hans


als Antwort auf: [#495747]

Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

cwenet
Beiträge gesamt: 1139

30. Mai 2012, 16:48
Beitrag # 3 von 5
Beitrag ID: #495785
Bewertung:
(2085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

Du hast Recht. Es ist für den Helfer einfacher.
Danke für das Script.
In diesem Fall wäre sogar ein Dokument hilfreicher gewesen, denn ich habe es wohl etwas unglücklich formuliert.
Der String soll später nicht im Fliesstext sichtbar sein, sondern der Indexeintrag soll manipuliert werden.
Ich habe das Dokument mal drangehängt, wie es hinterher aussehen soll.
In der Indexpalette unter dem Buchstaben S kannst Du es sehen.

Grüße
Christoph


als Antwort auf: [#495754]
Anhang:
index.idml (35.3 KB)

Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

Peter Kahrel
Beiträge gesamt: 182

30. Mai 2012, 23:20
Beitrag # 4 von 5
Beitrag ID: #495806
Bewertung:
(2055 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Wenn du einen Indexeintrag mittels ~I findest, weisst du der Name des Eintrags nicht. Viel besser, und einfacher, ist alle Topics zu ändern:

Code
var topics = app.activeDocument.indexes[0].allTopics; 
for (var i = topics.length-1; i >= 0; i--)
topics[i].name = "Stringdavor" + topics[i].name;


Peter


als Antwort auf: [#495785]

Nach Indexeintrag suchen und ersetzen (CS5.5, WIN7)

cwenet
Beiträge gesamt: 1139

31. Mai 2012, 06:01
Beitrag # 5 von 5
Beitrag ID: #495809
Bewertung:
(2027 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dear Peter,

vielen Dank für Deine Antwort.

So funktioniert es sehr gut.

Best regards
Christoph


als Antwort auf: [#495806]
X