[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Skript zum Index generieren

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

Skript zum Index generieren

Martin Eckert
Beiträge gesamt: 102

2. Mär 2007, 11:51
Beitrag # 1 von 117
Bewertung:
(607567 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, scheinbar gibt es ein Skript zur Erzeugung eines Index mit Hilfe einer Textdatei. Kann mir da jemand einen Tipp geben wo ich das finde? Hintergrund: Ich habe ein Textdokument in dem ich Wörter habe, und muß diese nun innerhalb eines Buchs den passenden Seiten zuweisen und anschließend ein Register zu erstellen. Würde mir viel manuelles Gebastel ersparen.

(Dieser Beitrag wurde von Martin Eckert am 2. Mär 2007, 12:05 geändert)
X

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

2. Mär 2007, 12:15
Beitrag # 2 von 117
Beitrag ID: #279438
Bewertung:
(607446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

eine Übersicht über im Forum publizierte und diskutierte Skripte findest Du über den Link oben im Kasten (http://www.hilfdirselbst.org/indesign.php)

Das Skript "IndexFromList.js" findest Du hier:
IndexFromList.js

Könntest Du nach Deinen Versuchen mit dem Skript eine Rückmeldung geben, ob es das leistet, was Du erwartet hast?

Es ist im Zusammenhang mit einem Bug in JavaScript für InDesign mit Problemen bei Einträgen in Fußnoten zu rechnen. Außerdem bin ich mir nicht sicher, ob Text in Tabellen berücksichtigt wird.


als Antwort auf: [#279429]
(Dieser Beitrag wurde von Martin Fischer am 2. Mär 2007, 14:29 geändert)

Skript zum Index generieren

Martin Eckert
Beiträge gesamt: 102

2. Mär 2007, 14:24
Beitrag # 3 von 117
Beitrag ID: #279506
Bewertung:
(607423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
danke für die schnelle Hilfe. Kann das sein, daß das unter CS2 nicht läuft? Gibt es da eine passende Variante? Der von Dir angegebene Link tut nicht und das im Forum scheint CS1 zu sein.


als Antwort auf: [#279438]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

2. Mär 2007, 14:51
Beitrag # 4 von 117
Beitrag ID: #279523
Bewertung:
(607416 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin,

sorry, bei der Eingabe des Links ist mir ein Fehler passiert (ist jetzt korrigiert).

Habe das Skript auf die Schnelle überprüft.
Es läuft nicht auf CS2.

Das Skript ist mir ohnehin etwas seltsam gestrickt, deswegen hatte ich beim Verweis darauf auch etwas Unbehagen.

Es gibt ein tolles Skript von Peter Kahrel zur Indizierung von Begriffen, die mit einem bestimmten Zeichenformat ausgezeichnet sind.

Dieses Skript wollte ich mir immer schon mal als Grundlage nehmen für ein überarbeitetes Skript zur Herstellung der Indizierung über eine Konkordanzdatei. Im Prinzip bräuchte es dazu nur eine andere Methode, die Quelle zu bestimmen (nicht über das Zeichenformat, sondern über die Begriffe selbst, die über eine externe Datei eingelesen werden).

Bislang hatte sich mir der konkrete Bedarf nicht so dringend gestellt, daß ich mir dafür eine Stunde geopfert hätte. Und jetzt finde ich keine Stunde, in der ich das nachholen könnte.


als Antwort auf: [#279506]
(Dieser Beitrag wurde von Martin Fischer am 2. Mär 2007, 22:50 geändert)

Skript zum Index generieren

zaphodbeeblebroxx
Beiträge gesamt: 408

2. Mär 2007, 22:59
Beitrag # 5 von 117
Beitrag ID: #279612
Bewertung:
(607384 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Martin + Martin,

habe mich vor längerer Zeit auch mal mit dem Skript IndexFromList.js befasst. Aber bei mir lief es auch nicht.

Habe mir dann selbst eine Lösung gebastelt (Auf Basis von Peter Kahrels Ausführungen), die ich aber momentan in meinem "Skripte-Chaos" nicht auffinden kann.

Ausgangsbasis war eine Textdatei mit den zu suchenden Index-Einträgen/Begriffen (nur eine Index-Ebene). Zeilen jeweils mit einer Zeilenschaltung abgeschlossen.

Habe die komplette Textdatei in ein InDesign Textrahmen kopiert. (Damals wusste ich noch nicht so richtig, wie man per JS eine txt-Datei öffnen/auslesen kann).

Vor dem Starten des Skripts mußte dieser Rahmen mit den zu suchenden Begriffen aktiviert werden.

mit dem split()-Befehl wurden die Absätze (= Suchbegriffe) in ein Array eingelesen.

Dann wurde der aktivierte Textrahmen gelöscht (sonst wird der mitindexiert).

Dann eine Schleife durch die Array-Elemente und mittels myDoc.search() das geöffnete Dokument durchsucht.

Bei Übereinstimmungen einen Index-Eintrag mit dem Array-Element und der PageReference erzeugen (habe ich bei Peter "abgeschaut").

Am Ende der Schleife den Index updaten.

Fertig!

Fussnoten gab es bei mir nicht, deshalb weiß ich nicht, ob es auch mit Fussnoten funktioniert.

Bei der search()-Methode habe ich mit den Optionen caseSensitiv = true und wholeWord = true gearbeitet.

Das setzt natürlich dann bei der gelieferten Index-Liste voraus, dass es sich um komplette Suchbegriff und nicht um Teilbegriffe handelt.

D.h. wenn in der gelieferten Liste das Wort "Schlange" steht wird nur nach diesem Wort gesucht und nicht nach der Mehrzahl "Schlangen" oder einem Begriff wie z.B. "Schlagenlinie".

zaphodbeeblebroxx


als Antwort auf: [#279523]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

5. Mär 2007, 08:48
Beitrag # 6 von 117
Beitrag ID: #279797
Bewertung:
(607289 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mit folgendem Skript lassen sich Indexeinträge basierend auf einer Konkordanzliste (Liste mit aufzunehmenden Begriffen) erzeugen. Ein Dialog fordert zur Auswahl der Textdatei mit der Begriffsliste auf. Die Begriffe müssen durch Zeilenschaltung voneinander getrennt sein (je Begriff eine neue Zeile).

Code
// IndexFromList.jsx  
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

var myWords = getWords(myList);
proceedWithList(myWords);
alert("Habe fertig!");


// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art und von RETURNs durch RETURNs
aText = aText.replace(/\s+/g, '\n');

var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

app.findPreferences = app.changePreferences = null;

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneWord) {
var myResult = myDoc.search(oneWord, true, true, undefined);
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);
}
catch(e) {}
}
}


Das Skript basiert auf Peter Kahrels IndexFromCharacterStyle_shortVersion.js (Dank für die Vorlage).

Aktuell ist es so eingestellt, daß es Groß-/Kleinschreibung unterscheidet ("fischen" ungleich "Fischen") und daß es nach ganzen Worten sucht ("Fisch" findet "Fisch", aber nicht "Fischer").
Diese Einschränkung könnte bei Bedarf später per Dialog mit Optionen geöffnet werden.

Ferner ignoriert diese Version Fundstellen in Fußnoten.
Um letztere zu berücksichtigen, müßten die Fußnoten z.B. über das Skript notes2text.jsx von Peter Kahrel zunächst in Endnoten umgewandelt und nach der Erzeugung der Indexeinträge mit demselben Skript wieder in Fußnoten zurückkonvertiert werden.

edit (16.11.2007):
Eine aktualisierte Fassung (für InDesign CS2) findet sich in Indexhilfe erwünscht.


als Antwort auf: [#279612]
(Dieser Beitrag wurde von Martin Fischer am 16. Nov 2007, 23:51 geändert)

Skript zum Index generieren

zaphodbeeblebroxx
Beiträge gesamt: 408

5. Mär 2007, 09:27
Beitrag # 7 von 117
Beitrag ID: #279802
Bewertung:
(607284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

bei Dir gibt es anscheinend kein Wochenende!?

Wie ich sehe, hast Du bereits Deine Endfassung ins Forum gestellt.

Habe mir mal (kurz – wieder mal kaum Zeit während der Produktion) den Code angesehen. Das sieht m.E. sehr gut aus.

Beim Einlesen der Konkordanzliste könnte man evtl. noch auf doppelte Leerzeichen prüfen und durch einzelne ersetzen ...

Code
		aText = aText.replace(/\s+/g, ' '); 



zaphodbeeblebroxx


als Antwort auf: [#279797]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

5. Mär 2007, 09:33
Beitrag # 8 von 117
Beitrag ID: #279804
Bewertung:
(607282 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

> Beim Einlesen der Konkordanzliste könnte man evtl. noch auf doppelte Leerzeichen
> prüfen und durch einzelne ersetzen ...

Schaden tut's gewiß nicht.
Auf diese Fehlerquelle bin ich spontan nicht gekommen, auch wenn ich mich den überflüssigen Leerzeichen am Ende einer Zeile und überflüssigen Zeilen gewidmet habe.

Was könnte in der Konkordanzliste sonst noch alles falsch notiert werden?
Wer nicht ordentlich arbeitet, den betraft eben das Skript mit Nichtbeachtung fehlerhafter Einträge.


als Antwort auf: [#279802]

Skript zum Index generieren

zaphodbeeblebroxx
Beiträge gesamt: 408

5. Mär 2007, 09:59
Beitrag # 9 von 117
Beitrag ID: #279808
Bewertung:
(607271 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

alle Fehler wird man in der Tat nicht abfangen können ...

Die Wortliste sollte schon ordentlich angeliefert/vorbereitet werden.
Hatte ja auch bereits auf die möglichen Probleme mit verschiedenen Wortendungen aus dem jeweiligen textlichen Zusammenhang und der Groß-/Kleinschreibung hingewiesen.

Das entfernen der Leerzeilen halte ich aber für sehr sinnvoll. Sonst gibt es unnötige Index-Einträge.

zaphodbeeblebroxx


als Antwort auf: [#279804]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

5. Mär 2007, 19:42
Beitrag # 10 von 117
Beitrag ID: #279958
Bewertung:
(607231 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

> Beim Einlesen der Konkordanzliste könnte man evtl. noch auf doppelte Leerzeichen
> prüfen und durch einzelne ersetzen ...

Das habe ich gerade ausprobiert.
Funktioniert - aber zu weit.
Die RETURNs gehören zu den white space characters.
Deswegen werden die auch durch Leerzeichen ersetzt.
Das ist solange kein Problem, solange einer nicht zwei oder mehr aufeinanderfolgende Wörter (kommt das vor?) in das Register aufnehmen will. Dann kann man den white space einfach durch RETURN ersetzen:
Code
aText = aText.replace(/\s+/g, '\n'); 


Oder man ersetzt vorher die RETURNs temporär durch eine besondere Kombination, die man hinterher wieder in RETURNs auflöst.


als Antwort auf: [#279802]

Skript zum Index generieren

zaphodbeeblebroxx
Beiträge gesamt: 408

6. Mär 2007, 09:44
Beitrag # 11 von 117
Beitrag ID: #280029
Bewertung:
(607197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Martin,

anstatt den "white space characters" könnte man auch nur die "normalen" mehrfachen Leerzeichen ersetzen (+ mehrfach Returns durch einzelne). Ich hatte auch schon den Fall, das mehrere aufeinanderfolgende Wörter indexiert werden mussten.

Code
aText = aText.replace(/ +/g, ' ');  
aText = aText.replace(/\n+/g, '\n');


zaphodbeeblebroxx


als Antwort auf: [#279958]

Skript zum Index generieren

Peter Kahrel
Beiträge gesamt: 182

6. Mär 2007, 11:23
Beitrag # 12 von 117
Beitrag ID: #280050
Bewertung:
(607180 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
aText = aText.replace(/\n+/g, '\n');

ersetzt auch einzelne \n, also folgendes wäre es besser:

aText = aText.replace(/\n\n+/g, '\n');

oder

aText = aText.replace(/\n{2,}/g, '\n');

Peter


als Antwort auf: [#280029]
(Dieser Beitrag wurde von Peter Kahrel am 6. Mär 2007, 11:24 geändert)

Skript zum Index generieren

zaphodbeeblebroxx
Beiträge gesamt: 408

6. Mär 2007, 11:47
Beitrag # 13 von 117
Beitrag ID: #280054
Bewertung:
(607169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

vielen Dank für den Hinweis!

Das hatte ich trotz Lesen Deiner beiden O'Reilly-Bücher übersehen.

zaphodbeeblebroxx


als Antwort auf: [#280050]

Skript zum Index generieren

RONNY-LE
Beiträge gesamt: 2

21. Sep 2007, 11:32
Beitrag # 14 von 117
Beitrag ID: #313542
Bewertung:
(606155 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo! Jetzt muss ich diesen Thread nochmal ausgraben und um eine Frage bereichern. Für ein Stichwortverzeichnis von Personen mit Vor- und Nachnamen habe ich mir dieses Script angesehen und unter ID CS3 getestet. Das Auslesen und Erstellen des Indexes funktioniert wunderbar, nachdem ich folgend Zeile am Anfang in das Script eingfügt habe:

app.scriptPreferences.version = 4.0;

Nun stellt sich mir die Frage, ob es möglich ist, beim Indizieren den Nachnamen alphabetisch zu sortieren, anstelle des Vornamens. Mittels des Tastaturkürzels: Umschalt + Strg + Alt + ö lässt sich dies nämlich manuell in den Index aufnehmen und es steht anstelle von (Vorname Nachname) (Nachname, Vorname) im Index. Leider lässt sich dies m.W. nachträglich nicht mehr ändern.

Lässt sich dieses Script diesbezüglich ändern? Vielen Dank für eine Antwort und beste Grüße, Ronny


als Antwort auf: [#280054]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

21. Sep 2007, 12:22
Beitrag # 15 von 117
Beitrag ID: #313546
Bewertung:
(606134 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Stehen in der Konkordanzliste immer genau ein Vorname und ein Nachname in der Zeile?
Gibt es auch einen "Franz Xaver Fleischer"?
Oder eine "Hildegard Däumling, geb. Fletscher"?

Mach mal einen Versuch und ersetze die Zeilen
Code
// Hinzufügen des Themas  
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);


durch folgende Zeilen:
Code
// Hinzufügen des Themas  
aText = oneWord.split(" ");
nText = aText.pop() + ", " + aText.join(" ");
myTopic = myDoc.indexes[0].topics.add(nText);
// Hinzufügen der Referenz
myTopic.pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);


Ferner mußt Du die folgende Anweisung auskommentieren (zwei Schrägstriche vor aText setzen):

Code
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art und von RETURNs durch RETURNs  
aText = aText.replace(/\s+/g, '\n');



als Antwort auf: [#313542]
(Dieser Beitrag wurde von Martin Fischer am 21. Sep 2007, 12:36 geändert)

Skript zum Index generieren

RONNY-LE
Beiträge gesamt: 2

21. Sep 2007, 14:39
Beitrag # 16 von 117
Beitrag ID: #313575
Bewertung:
(38883 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
hab meinen Dummy mit dem geänderten Script abarbeiten lassen und mit einem "Franz Xaver Fleischer" in der Liste funktioniert es auch (Fleischer, Franz Xaver). Die zweite Variante ("Hildegard Däumling, geb. Fletscher") kommt in dem Index, seis gedankt, nicht vor ;)

Vielen Dank für die schnelle Hilfe,
Ronny


als Antwort auf: [#313546]

Skript zum Index generieren

Christian Glombitza
Beiträge gesamt: 493

24. Okt 2007, 12:00
Beitrag # 17 von 117
Beitrag ID: #318535
Bewertung:
(38807 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

sorry, das ich den alten Thread wieder ausgrabe.

Was müsste ich ändern, um dein Skript für CS3 zu verwenden?

Danke im voraus.

lg
Christian


als Antwort auf: [#279797]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

24. Okt 2007, 12:10
Beitrag # 18 von 117
Beitrag ID: #318540
Bewertung:
(38801 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christian,

Zitat Was müsste ich ändern, um dein Skript für CS3 zu verwenden?


Die Suchfunktion in der Funktion proceedWithList().


als Antwort auf: [#318535]

Skript zum Index generieren

Christian Glombitza
Beiträge gesamt: 493

24. Okt 2007, 12:17
Beitrag # 19 von 117
Beitrag ID: #318544
Bewertung:
(38794 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für die schnelle Antwort.

Ich habe mich wohl falsch ausgedrückt.

Ich habe von Javascript keine Ahnung - ich dachte evtl. an diverse InDesign-Einstellungen.

Ist die Anpassung für CS3 viel Aufwand? - würde mir sehr helfen.

lg
Christian


als Antwort auf: [#318540]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

17. Nov 2007, 00:06
Beitrag # 20 von 117
Beitrag ID: #322824
Bewertung:
(38726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christian,

> Ist die Anpassung für CS3 viel Aufwand? - würde mir sehr helfen.

Hier die für CS3 angepaßte Version:
Code
// IndexFromList_CS3.jsx   
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

clearFindChangeSettings();
app.findChangeTextOptions.wholeWord = true;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = true;

var myWords = getWords(myList);
proceedWithList(myWords);
alert("Erledigt!");

// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art durch ein Leerzeichen
aText = aText.replace(/ {2,}/g, ' ');

var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneWord) {
app.findTextPreferences.findWhat = oneWord;
var myResult = myDoc.findText();
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);
}
catch(e) {}
}
}

//Clear any existing find/change settings.
function clearFindChangeSettings()
{
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
}



als Antwort auf: [#318544]
(Dieser Beitrag wurde von Martin Fischer am 20. Nov 2007, 10:53 geändert)

Skript zum Index generieren

Christian Glombitza
Beiträge gesamt: 493

19. Nov 2007, 08:18
Beitrag # 21 von 117
Beitrag ID: #322986
Bewertung:
(38640 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, super - vielen Dank für die Mühe.

lg
Christian


als Antwort auf: [#322824]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Apr 2008, 07:58
Beitrag # 22 von 117
Beitrag ID: #343938
Bewertung:
(38141 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Aufgrund einer Anfrage im Scripting-Forum (CS3 IndexFromList.jsx with a twist) hier eine kleine Erweiterung des IndexFromList-Skripts.

Das Skript verarbeitet nun auch einen(!) Untereintrag.
Die Indexliste könnte etwa so aufgebaut sein:

Code
Meilenstein 
Stein | Steinwall
Stein | Steinbeißer


Beim ersten Begriff werden alle Vorkommen von 'Meilenstein' im Dokument gesucht. Im Index wird ein Eintrag 'Meilenstein' erzeugt mit Referenzen zu den Vorkommen von 'Meilenstein' im Dokument.

Bei den nächsten beiden Einträgen ('Stein | Steinwall' und 'Stein | Steinbeißer') wird ein Hauptstichwort 'Stein' angelegt. Darunter wird ein Unterstichwort 'Steinwall' mit Referenzen zu den Vorkommen von 'Steinwall' und ein Unterstichwort 'Steinbeißer' mit Referenzen zu den Vorkommen von 'Steinbeißer' angelegt.

Die erwartete Strukur ist also folgende:
Code
Hauptstichwort 
Hauptstichwort | Unterstichwort


Also entweder ein Hauptstichwort allein oder ein Hauptstichwort, kombiniert mit einem Unterstichwort. Als Trennzeichen dient ' | ' (also senkrechter Strich mit Leerzeichen davor und danach!).


Code
// IndexFromList_withOneSubtopic_CS3.jsx    
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

clearFindChangeSettings();
app.findChangeTextOptions.wholeWord = true;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = true;

var myEntries = getWords(myList);
proceedWithList(myEntries);
alert("Erledigt!");

// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art durch ein Leerzeichen
aText = aText.replace(/ {2,}/g, ' ');

var words = aText.split('\n');
var myPairs = getPairs( words );
aFile.close();
return myPairs;
}
else {
exit();
}
}

function getPairs( w )
{
var thePairs = new Array;
for (i = 0; i < w.length; i++ )
thePairs.push( w[i].split(' | ') );
return thePairs;
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneEntry) {
if ( oneEntry.length == 1 )
app.findTextPreferences.findWhat = oneEntry[0];
else
app.findTextPreferences.findWhat = oneEntry[1];

var myResult = myDoc.findText();
for (var i = myResult.length-1; i >=0; i--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneEntry[0]);
// Hinzufügen der Referenz
if ( oneEntry.length == 1 )
myDoc.indexes[0].topics.item(myResult[i].contents).pageReferences.add(myResult[i], PageReferenceType.currentPage);
else
{
//myDoc.indexes[0].topics.add( oneEntry[0]);
myDoc.indexes[0].topics.item( oneEntry[0] ).topics.add( oneEntry[1]);
myDoc.indexes[0].topics.item( oneEntry[0] ).topics.item( myResult[i].contents ).pageReferences.add(myResult[i], PageReferenceType.currentPage);
}
}
catch(e) {}
}
}

//Clear any existing find/change settings.
function clearFindChangeSettings()
{
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
}


Das Skript verarbeitet so zwei Indexstufen.
Bei Gelegenheit könnte es noch auf eine tiefere Untergliederung ausgebaut werden.

Tipp:
Mit der obigen Version könnten nun auch mehrere unterschiedliche Register verwaltet werden: Namenregister, Sachregister. Verwende 'Namen' und 'Sachen' als ersten Eintrag und die eigentlichen Indexeinträge als weiterer Eintrag:

Code
Namen | Kafka 
Namen | Peirce
Namen | Beck
Sachen | Geldbörse
Sachen | Augentropfen



als Antwort auf: [#322824]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

1. Apr 2008, 22:06
Beitrag # 23 von 117
Beitrag ID: #344134
Bewertung:
(38093 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Das Skript verarbeitet so zwei Indexstufen.
Bei Gelegenheit könnte es noch auf eine tiefere Untergliederung ausgebaut werden.


Im Premium Bereich ist nun eine erweiterte Version verfügbar, die neben einem Hauptstichwort bis zu max. drei Unterstichworte (das Maximum an Indexstufen, was InDesign verarbeiten kann) einträgt: IndexFromList_withSubtopics_CS3.jsx.

Beispiel:
Code
Meilenstein  
Mineral | Stein | Steinwall
Mineral | Stein | Steinbeißer | Zahnarzt



als Antwort auf: [#343938]

Skript zum Index generieren

perelly
Beiträge gesamt:

18. Jun 2008, 16:25
Beitrag # 24 von 117
Beitrag ID: #354854
Bewertung:
(37464 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Skript ist super für ein einfaches Dokument.
Könnte man es so erweitern, dass es auch für ein Buch funktioniert?

Schönen Gruß
perelly


als Antwort auf: [#322824]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

18. Jun 2008, 16:35
Beitrag # 25 von 117
Beitrag ID: #354856
Bewertung:
(37461 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Perelly,

im Forum müsste ein Skript zu finden sein mit dem Namen 'doScriptForBook.jsx' oder 'doScriptOfBook.jsx'.

In diesem Skript ist es möglich, ein externes Skript einzubinden, das auf alle Dokumente eines geöffneten Buchs angewandt wird (der Reihe nach die Buchdokumente öffnen und Skript auf das aktive Dokument anwenden).

Wenn Du's gefunden hast, kannst Du den Link dorthin angeben.

Klappt es damit?


als Antwort auf: [#354854]

Skript zum Index generieren

perelly
Beiträge gesamt:

19. Jun 2008, 11:28
Beitrag # 26 von 117
Beitrag ID: #354948
Bewertung:
(37380 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für Deine schnelle Hilfe. Leider finde ich das Skript, von dem Du gesprochen hast, nicht.

Hast Du einen Tip wie/wo ich es finden kann?

Schöne Grüße
Perelly


als Antwort auf: [#354856]

Skript zum Index generieren

Ralf Hobirk
Beiträge gesamt: 5961

19. Jun 2008, 11:53
Beitrag # 27 von 117
Beitrag ID: #354956
Bewertung:
(37373 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das hier ist wohl gemeint:
doScriptWithDocsOfBooks.jsx


als Antwort auf: [#354948]

Skript zum Index generieren

ohrwurm
Beiträge gesamt: 5

16. Aug 2008, 09:52
Beitrag # 28 von 117
Beitrag ID: #362775
Bewertung:
(36977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo! Auch hab mir dieses Skript für InDesign CS3 auf meinen mac geholt. Es erscheint auch der Dialog zur Auswahl der Themenliste (hab diese sowohl als indd als auch als rtf hinterlegt und ausprobiert), dann läuft das Skript und es erscheint der Hinweis "Erledigt!". Doch im Index-Menüfenster sind die Themen nicht hinterlegt. Was mach ich falsch?
Ich bin blutiger Neuling in InDesign und freu mich deshalb auf eure Hilfe.

Ach ja: Das Skipt zum Löschen von Index-Einträgen funktioniert einwandfrei!


als Antwort auf: [#343938]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

18. Aug 2008, 08:59
Beitrag # 29 von 117
Beitrag ID: #362875
Bewertung:
(36893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

> Es erscheint auch der Dialog zur Auswahl der Themenliste
> (hab diese sowohl als indd als auch als rtf hinterlegt und ausprobiert)

Das erwartete Format der Listendatei ist reiner Text, nicht RTF oder INDD oder XLS.


als Antwort auf: [#362775]

Skript zum Index generieren

mkuenster
Beiträge gesamt: 720

21. Aug 2008, 08:50
Beitrag # 30 von 117
Beitrag ID: #363309
Bewertung:
(36820 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich arbeite zurzeit noch mit ID CS1 (Mac) und habe gerade das Script von Martin Fischer (aus dem Beitrag vom 5. März 2007 8:48 Uhr) ausprobiert, um aus einer Konkordanzliste einen Index zu generieren. Leider bekomme ich dabei jedoch folgende Fehlermeldung:

JavaScript error!
Error Number: 8
Error String: "Syntax error"
Line: 19
Source: " aText = aText.replace (/ +\n/g,'\n').replace (/\n+/g, '\n');"

Kann mir da bitte jemand helfen?

BTW: Falls das möglich ist, würde ich mir auch wünschen, wenn z. B. das Wort "Analyse" in "Analysen", oder "Hypothek" in "Hypotheken" erkannt und indiziert werden könnte.

Gruß
Michael


als Antwort auf: [#279797]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

21. Aug 2008, 09:34
Beitrag # 31 von 117
Beitrag ID: #363316
Bewertung:
(25010 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Michael,

> Kann mir da bitte jemand helfen?

Tut mir Leid, aber unter Leopard kann ich das Skript in InDesign CS1 nicht mehr testen.
Kommentiere die Zeile einfach aus ('//' voranstellen). Ist eh nur eine Zeile zum Säubern der Liste (für undisziplinierte Texterfasser).

> Falls das möglich ist, würde ich mir auch wünschen, wenn z. B. das Wort "Analyse"
> in "Analysen", oder "Hypothek" in "Hypotheken" erkannt und indiziert werden könnte.

Die Begriffe werden so wie sie in der Liste auftauchen indiziert.
Wenn also neben "Analyse" auch "Analysen" indiziert werden soll, dann muss neben "Analyse" auch "Analysen" in die Liste.

Andernfalls, wenn das Skript von sich aus 'n' oder ein 'en' addieren würde, könnte es neben "Michael" leicht einen "Michaeln" oder einen "Michaelen" geben. ;-)
Wie sollte das Skript wissen, in welcher Form der jeweilige Begriff dekliniert wird?


als Antwort auf: [#363309]
(Dieser Beitrag wurde von Martin Fischer am 21. Aug 2008, 09:48 geändert)

Skript zum Index generieren

mkuenster
Beiträge gesamt: 720

21. Aug 2008, 10:28
Beitrag # 32 von 117
Beitrag ID: #363335
Bewertung:
(24994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Danke für Deine Antwort. Ich habe die Zeile durch voranstellen vonn "// " auskommentiert und die Fehlermeldung kommt jetzt nicht mehr, aber nachdem der Ball nun zwanzig Minuten rotiert ist, habe ich das Programm abgebrochen. Ca. 100 Begriffe auf 200 Seiten zu indexieren kann ja wohl nicht so lange dauern, oder?

Irgend etwas läuft schief. Ich bin in ID wenig bewandert und das ist das erste Script, das ich ausführe bzw. ausführen will. Hier noch einmal meine Vorgehensweise:

Ich habe das Script aus dem Forum per copy/paste in ein Word-Dokument kopiert und dann als "nur Text" abgespeichert; dann die Dateiendung auf ".js" geändert und die Datei in den Preset-Ordner des Programms geschoben. In ID habe ich dann den Text mit dem Inhaltswerkzeug markiert (alle Rahmen sind verknüpft) und in der Script-Palette das Script gestartet. Die Resultate sind bekannt.

Hast Du noch einen Tipp, was ich machen könnte?

Gruß
Michael


als Antwort auf: [#363316]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

21. Aug 2008, 10:58
Beitrag # 33 von 117
Beitrag ID: #363341
Bewertung:
(24982 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Michael,

ich vermute, dass es sich um ein CS2-Skript handelt, das unter CS1 nicht reibungslos läuft.
Dies kann ich aber mangels einer lauffähigen CS1-Version nicht (mehr) überprüfen und ggf. korrigieren.

Vielleicht findet sich noch jemand anders, der das genannte Skript in CS1 prüft und bei Bedarf daraufhin anpaßt.


> Ca. 100 Begriffe auf 200 Seiten zu indexieren kann ja wohl nicht so lange dauern, oder?

Du könntest auch hingehen und das Skript erst mal mit 2-5 Begriffen testen.
Es kömmt eben darauf an, wie häufig die Begriffe im Text auftauchen.
Kommen 100 Begriffe jeweils mindestens 100 mal vor, dann sind es mindestens 10.000 Einträge.
Kommen 100 Begriffe nur jeweils einmal vor, dann sind es nur 100 Einträge. Dazwischen liegt ein Unterschied.


als Antwort auf: [#363335]
(Dieser Beitrag wurde von Martin Fischer am 21. Aug 2008, 11:03 geändert)

Skript zum Index generieren

ohrwurm
Beiträge gesamt: 5

25. Aug 2008, 13:15
Beitrag # 34 von 117
Beitrag ID: #363742
Bewertung:
(24923 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin!
Hab's jetzt grad mit .txt probiert und es klappt! (Hätt ich ja auch selbst drauf kommen können...)
Ihr seid einfach einsame Spitze hier im forum.
Vielen Dank für die schnelle Hilfe und schöne Grüße aus Regensburg!

Ines


als Antwort auf: [#362875]

Skript zum Index generieren

.-=SIREX=-.
Beiträge gesamt: 14

1. Sep 2008, 13:09
Beitrag # 35 von 117
Beitrag ID: #364430
Bewertung:
(24857 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe ein(e) ganz andere(s) Problem/Aufgabenstellung:

In meiner Konkordanzdatei stehen Einträge wie z.B.

Test
Test-Bild
Test-Phase
Test-Flug
Müsli-Test
Cooler-Test
Mega-Test

Seltsamerweise unterschlägt er mir "Müsli-Test, Cooler-Test und Mega-Test" im Index.

Wenn ich den Begriff "Test" aus der Konkordanzdatei lösche, funktioniert es.

Mein Workaround bisher:
Habe die Konkordanzdatei gesplittet in einzelne und zusammengesetzte Wörter.

Also zunächst Index erzeugt auf die zusammenges. Wörter und dann aktualisiert mit den einzelnen Wörtern. Funktioniert schomal.

Ist das aber nun ein Fehler im Script, oder nur eine spezielle Anforderung von meiner Seite?

Was könnte man im Script anpassen?

Gruß,
Andreas


als Antwort auf: [#363309]

Skript zum Index generieren

Gabi Glück
Beiträge gesamt: 68

3. Sep 2008, 07:31
Beitrag # 36 von 117
Beitrag ID: #364650
Bewertung:
(24779 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Andreas,

wenn sich kein andererer regt, versuche ich mich an einer Antwort:

Es handelt sich nicht um einen Fehler des Skripts, sondern um einen Fehler bei der Organisation der Konkordanzliste.

Beim Indizieren wird unmittelbar vor jedem indizierten Begriff eine Indexmarke eingefügt. Da stehen dann die Angaben zur Aufnahme im Index drin.
Wenn Du nun "Test" indizierst, steht also vor dem "Test" eine Indesmarke.
Damit wird aus "Müsli-Test" die Zeichenfolge "Müsli-<Indexmarke "Test">Test" und das ist etwas anderes als "Müsli-Test".

Deswegen musst Du in der Konkordanzliste "Müsli-Test" vor "Test" notieren.

"Test-Bild" macht deswegen keine Prolbeme, weil die Indexmarke vor "Test" steht und damit außerhalb der Zeichenfolge "Text-Bild".


als Antwort auf: [#364430]

Skript zum Index generieren

.-=SIREX=-.
Beiträge gesamt: 14

3. Sep 2008, 09:34
Beitrag # 37 von 117
Beitrag ID: #364663
Bewertung:
(24761 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gabi,

also frei nach dem Motto "Its not a bug - its a feature" :)

Ich hatte mir bereits ein Bash-Script gebastelt, das mir die Konkordanzdatei nach Zeilenlänge sortiert. (Längste dann halt zuerst) So kann ich sicherstellen, dass Test (4 Zeichen) erst nach Test-Müsli (10 Z.) indexiert wird.

Demnach habe ich ja den richtigen Weg eingeschlagen.
Ich hatte nur an einen Fehler geglaubt... aber eigentlich ist es ja auch logisch.

Danke und Gruß,
Andreas


als Antwort auf: [#364650]

Skript zum Index generieren

M.Greiner
Beiträge gesamt: 49

9. Sep 2008, 17:12
Beitrag # 38 von 117
Beitrag ID: #365451
Bewertung:
(24677 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin Fischer,

ich habe in CS3 (5.0.2) Probleme mit Ihrem Script. Nach Einlesen einer dreizeiligen Liste (mit drei Begriffen) wird eine Fehlermeldung generiert:
Fehlernummer: 55
Fehlerzeichenfolge: Objekt unterstützt Eigenschaft oder Methode "changePreferences" nicht
Zeile:38
Quelle: app.findPreferences = app.changePreferences = null;

Was mache ich falsch?

Beste Dank für Ihre Hilfe und herzliche Grüße
von

Max reiner


als Antwort auf: [#279797]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

9. Sep 2008, 17:23
Beitrag # 39 von 117
Beitrag ID: #365454
Bewertung:
(24671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Max Reiner,

> Was mache ich falsch?

Sie verwenden ein InDesign CS2-Skript in InDesign CS3.
InDesign CS3 versteht kein 'app.findPreferences' mehr.
Es verlangt u.a. nach 'app.findTextPreferences'.

Bitte achten Sie bei den Skripten auf Kommentare, in denen oft Hinweise für die erforderliche InDesign-Version stehen.
Manchmal ist auch das Datum eines Beitrags ein Hinweis auf die erforderliche InDesign-Version (wenn nichts anderes dasteht, ist ein Skript für die zum Zeitpunkt der Veröffentlichung aktuelle InDesign-Version entwickelt worden).

Welches Skript setzen Sie ein?
Bzw. was soll das Skript machen?


als Antwort auf: [#365451]
(Dieser Beitrag wurde von Martin Fischer am 9. Sep 2008, 17:25 geändert)

Skript zum Index generieren

M.Greiner
Beiträge gesamt: 49

10. Sep 2008, 13:32
Beitrag # 40 von 117
Beitrag ID: #365545
Bewertung:
(24620 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank, Martin Fischer. Ich habe mittlerweile in Lauffähiges im Forum gefunden.

Schöne Grüße
von
Max Greiner


als Antwort auf: [#365454]

Skript zum Index generieren

Urgelmurks
Beiträge gesamt:

20. Okt 2008, 09:13
Beitrag # 41 von 117
Beitrag ID: #371028
Bewertung:
(24316 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
.... und geben Sie mir eine Idee wo??

Liebe Grüße
Claus


als Antwort auf: [#365545]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

20. Okt 2008, 09:23
Beitrag # 42 von 117
Beitrag ID: #371029
Bewertung:
(24309 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: .... und geben Sie mir eine Idee wo??


Siehe die Beiträge oben
- http://www.hilfdirselbst.ch/..._P365454.html#365454
- http://www.hilfdirselbst.ch/..._P322824.html#322824
- http://www.hilfdirselbst.ch/..._P343938.html#343938

Ist die Nase noch dran? ;-)


als Antwort auf: [#371028]

Skript zum Index generieren

Urgelmurks
Beiträge gesamt:

20. Okt 2008, 09:27
Beitrag # 43 von 117
Beitrag ID: #371030
Bewertung:
(24303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
... Du warst 5 Minuten schneller. Und es funktioniert super.

Martin ist der Größte!

Liebe Grüße
Claus


als Antwort auf: [#371029]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

20. Okt 2008, 09:29
Beitrag # 44 von 117
Beitrag ID: #371031
Bewertung:
(24302 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nein, es gibt größere.
Ich habe gestern einen gesehen.
Schuhgröße 47.
Ein Orthopäde.


als Antwort auf: [#371030]

Skript zum Index generieren

GePx
Beiträge gesamt: 330

2. Jan 2009, 17:05
Beitrag # 45 von 117
Beitrag ID: #379765
Bewertung:
(23901 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo Martin,

eine Frage habe ich zum Skript Index mit Untergruppen:

Die Datei, auf die zugegriffen wird, muss ja wohl eine *.txt-Datei sein, eine normale Word-Datei tuts wohl nicht.

Nun kann ich in einer solchen Text-Datei keine Wörter aufführen, die Sonderzeichen beinhalten, also z. B. statt Atisha: Atisa - wobei das s einen Akzent erhält.

Das Skript bearbeitet meine Datei, listet alle Vorkommnisse von Atisha auf, aber Atisa mit Akzent wird nicht gefunden und als Ati?a aufgeführt.

Gibt es eine Möglichkeit, Sonderzeichen mit einzubeziehen, z. B. indem eine Word-Datei als Grundlage genommen wird?

mit bestem Gruß
Gerd


als Antwort auf: [#371031]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

2. Jan 2009, 17:23
Beitrag # 46 von 117
Beitrag ID: #379772
Bewertung:
(20724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerd,

> Gibt es eine Möglichkeit, Sonderzeichen mit einzubeziehen, z. B. indem eine Word-Datei als Grundlage genommen wird?

Nein, in meinem Skript (und seinen Varianten) nicht.

Aber das sollte eigentlich auch nicht nötig sein.
Denn die Sonderzeichen in einer Textdatei im Unicode-Format sollten übernommen werden.
Kannst Du mal den Weg über eine UTF-8 oder UTF-16 codierte Textdatei versuchen?

Eventuell muß ich die geeignete Kodierung im Skript noch ergänzen.


als Antwort auf: [#379765]
(Dieser Beitrag wurde von Martin Fischer am 2. Jan 2009, 17:24 geändert)

Skript zum Index generieren

GePx
Beiträge gesamt: 330

2. Jan 2009, 17:30
Beitrag # 47 von 117
Beitrag ID: #379773
Bewertung:
(20722 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

genau das hilft, die Textdatei in Unicode-Format abspeichern.

Wieder etwas gelernt.

vielen Dank!
Gerd


als Antwort auf: [#379772]

Skript zum Index generieren

GePx
Beiträge gesamt: 330

14. Okt 2009, 11:16
Beitrag # 48 von 117
Beitrag ID: #411186
Bewertung:
(20065 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

da hab ich wohl nicht genau genug ausprobiert - es funktioniert mit UTF-8 nur bei einigen (vielen), aber nicht bei allen diakritischen Zeichen. <seufz>

Als UTF-16 kann ich es aus Word heraus nicht abspeichern. (Diese Codierung sollte es dann hoffentlich bringen!) Diese Option wird aber nicht angeboten.

Kennst du - oder jemand anders - eine andere Möglichkeit, die Word-Datei in ein korrektes txt-Format umzuwandeln?

Gerd


als Antwort auf: [#379773]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Okt 2009, 11:37
Beitrag # 49 von 117
Beitrag ID: #411193
Bewertung:
(20055 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hast Du einen Texteditor, der in UTF-16 speichern kann?


als Antwort auf: [#411186]

Skript zum Index generieren

GePx
Beiträge gesamt: 330

14. Okt 2009, 11:39
Beitrag # 50 von 117
Beitrag ID: #411194
Bewertung:
(20054 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
nein - wo könnte ich ihn bekommen?

Gerd


als Antwort auf: [#411193]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Okt 2009, 11:45
Beitrag # 51 von 117
Beitrag ID: #411197
Bewertung:
(20094 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Windows oder Mac?

Mac: TextWrangler
Windows: selber suchen (z.B. UltraEdit, aber um nur als UTF-16 abzuspeichern überdimensioniert)

----
edit: Der SuperEdi für Windows ist kostenlos.
Weitere hier: Comparison_of_text_editors


als Antwort auf: [#411194]
(Dieser Beitrag wurde von Martin Fischer am 14. Okt 2009, 11:49 geändert)

Skript zum Index generieren

GePx
Beiträge gesamt: 330

14. Okt 2009, 12:02
Beitrag # 52 von 117
Beitrag ID: #411206
Bewertung:
(20078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
vielen Dank, Martin,

ich hatte selber auch schon einige gefunden - und muss noch etwas rumprobieren. Es ist bei den bisher gefundenen nicht möglich, eine txt-Datei abzuspeichern, sie haben ein eigenes Dateiformat ...

Mal sehen, was sich in dieser comparison-Liste noch findet.

Gerd


als Antwort auf: [#411197]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

14. Okt 2009, 12:11
Beitrag # 53 von 117
Beitrag ID: #411208
Bewertung:
(20073 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Gerd,

alternativ könntest Du den Text in InDesign platzieren und dort (mit entsprechenden Exporteinstellungen) im TXT-Format exportieren.


als Antwort auf: [#411206]

Skript zum Index generieren

GePx
Beiträge gesamt: 330

14. Okt 2009, 12:26
Beitrag # 54 von 117
Beitrag ID: #411209
Bewertung:
(20067 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Was immer ich auch mache, das höchste der Gefühle ergibt das angehängte Beispiel. Was wohl auf keinen Fall in die Textdatei will, sind z. B. die Zeichen mit einem Punkt unter oder über dem Buchstaben (hier ein m und ein s mit Unterpunkt)

Wie es aussieht, muss ich doch den Index per Hand zusammentragen ...

Gerd

edit:

ich sehe hier im Anhang, dass die Zeichen korrekt wiedergegeben werden, nicht aber in meinem alten Texteditor ... im neuen EditPad mit UTF-16-Unterstützung schon!

Das ist also die Lösung: Aus Indesign heraus eine txt-Datei exportieren.
Danke Martin!


als Antwort auf: [#411208]
(Dieser Beitrag wurde von GePx am 14. Okt 2009, 12:29 geändert)

Anhang:
Indexliste_Versuch.txt (0.19 KB)

Skript zum Index generieren

Glagau
Beiträge gesamt: 32

11. Jan 2010, 14:31
Beitrag # 55 von 117
Beitrag ID: #429779
Bewertung:
(19656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

bei einem ca. 350 Seiten umfassenden Dokument, für das ich einen Index über eine vom Autor gelieferte Konkordanzliste erstellen möchte, taucht folgendes Problem auf: Die Liste wird über das Script einwandfrei und ohne Fehlermeldung abgearbeitet, aber während die Indexmarke am Anfang des Dokuments direkt vor dem Begriff steht, wandert sie mit zunehmender Seitenzahl immer weiter nach hinten, d.h. am Ende des Dokuments steht die Marke vier bis sechs Worte nach dem indizierten Begriff. Mit Blick auf mögliche Umbruchveränderungen ganz schlecht. Ist dieses Problem bekannt und wie könnte eine Lösung aussehen?

Mit Dank und vielen Grüßen,
Daniela

(Windows XP Pro, InDesign CS3)


als Antwort auf: [#411209]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Jan 2010, 15:10
Beitrag # 56 von 117
Beitrag ID: #429789
Bewertung:
(19635 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daniela,

mit welchem Skript (bitte Link angeben) versuchst Du den Index zu generieren?

Mit den in diesem Thread genannten sollte das eigentlich nicht passieren, da die Fundstellen von hinten nach vorne abgearbeitet werden.
Wenn ich das von Dir verwendete Skript kenne, dann kann ich da mal einen Blick reinwerfen.


als Antwort auf: [#429779]

Skript zum Index generieren

Glagau
Beiträge gesamt: 32

11. Jan 2010, 17:00
Beitrag # 57 von 117
Beitrag ID: #429806
Bewertung:
(19596 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich verwende das von Dir zur Verfügung gestellte Skript IndexFromList_withOneSubtopic_CS3.jsx (http://www.hilfdirselbst.ch/...post=344131#344131). Bisher gab es damit auch noch nie Probleme. Testweise habe ich die .txt-Datei nur mal mit einem Begriff durchlaufen lassen, aber auch hier stehen die Indexmarken mit zunehmender Seitenzahl einige Worte nach dem indizierten Begriff. Zur Illustration des Ganzen hänge ich mal ein Beispiel an.

Beste Grüße,
Daniela


als Antwort auf: [#429789]
Anhang:
Beispiel.pdf (157 KB)

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Jan 2010, 17:38
Beitrag # 58 von 117
Beitrag ID: #429810
Bewertung:
(19561 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daniela,

das Problem ist folgendes:

Wenn per Skript die Vorkommen eines Begriffs gesucht und intern gespeichert werden und wenn dann das Skript von der ersten Fundstelle zur nächsten bis zur letzten geht und stets einen Indexeintrag einarbeitet, stimmen wg. der Einarbeitung des Indexeintrags die Positionen der folgenden Fundstellen nicht mehr. Auch wenn ein Indexeintrag nicht sichtbar ist, so bewirkt er hinsichtlich der Adressierung von Zeichen/Wörtern eine Veränderung.

Um dieses Problem zu umgehen, arbeitet das Skript von hinten nach vorne.
Die Änderungen hinten interessieren die Fundstellen vorne nicht.

Das ist bei dem genannten Skript so gegeben.
Deswegen verstehe ich nicht, wie es trotzdem zu diesem Problem kommen kann.
Habe das Skript soeben mehrfach in CS3 ausgeführt und dabei auch Einträge doppelt eingearbeitet.
Die Indexmarke wird stets vor dem entsprechenden Begriff eingearbeitet.

Könntest Du mir die fotographierte Doppelseite zusammen mit Deiner Konkordanzliste zukommen lassen, damit ich den Test mit Originaldaten ausführen kann? Meine email-Adresse findest Du in meinem Profil.


als Antwort auf: [#429806]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Jan 2010, 21:18
Beitrag # 59 von 117
Beitrag ID: #429829
Bewertung:
(19510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Daniela,

herzlichen Dank für die Überlassung Deiner Testdateien.

Deine Fehlermeldung kann ich spontan bestätigen.
Als Verursacher habe ich Tabellen ausgemacht.
Aber Gründe kann ich im Moment noch keine finden/nennen.

Die Eintragungen vor den ersten drei Tabellen sind alle in Ordnung.
Nach der dritten Tabelle sind die Einträge verschoben.
Mir ist an der dritten Tabelle nichts besonderes aufgefallen.

Unterbreche ich den Textabschnitt zwischen der zweiten und der dritten Tabelle, so dass die dritte Tabelle zur ersten Tabelle eines neuen Textabschnitts wird, so besteht das Problem zwischen dieser und der nächsten Tabelle nicht mehr. Es liegt demnach nicht an der Struktur dieser Tabelle.
Nach der neuen zweiten Tabelle sind die Indexeinträge wieder verschoben.
Irgendwie hat es mit der Position der Tabelle im Textabschnitt zu tun.

Export als INX und neu öffnen bewirkt nichts.

Im Moment stehe ich vor einem Rätsel.
Das Verrückte ist: beim Debuggen kann ich die Fundstelle noch korrekt markieren. Es wird mir exakt der gesuchte Begriff ausgewählt. Und im nächsten Schritt wird der Indexeintrag weit hinter dieser Fundstelle eingearbeitet und nicht wie sonst üblich vor dem ersten Zeichen der Fundstelle (s. Anhang).

Fußnotentext – auch nach den Tabellen, die störend auf die Indexeintragung im Text wirken – zeigt sich unbeeindruckt. Dort ist alles in Ordnung.

Das Problem lässt sich auch in InDesign CS4 beobachten.


als Antwort auf: [#429810]
(Dieser Beitrag wurde von Martin Fischer am 11. Jan 2010, 21:55 geändert)

Anhang:
Bild 1.jpg (26.0 KB)

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

12. Jan 2010, 08:01
Beitrag # 60 von 117
Beitrag ID: #429840
Bewertung:
(19469 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

selbes Phänomen kann/muss ich auch für CS 2 bestätigen. Auch dort verschieben sich die Markierungen für die Indexmarken beim von Daniela beschriebenen Vorgehen.

Ob das generell an den Tabellen liegt, mag ich nicht zu beurteilen. In meiner aktuellen Satzdatei sind keine Tabellen vorhanden, die Indexmarkenverschiebung lässt sich nach Anwendung des Scripts IndexfromList.jsx (für CS2, ohne "subtopics") beobachten, wenn (was schon erstaunlich ist) bei der Indexerstellung einige Wörter nicht aufgenommen werden und dann nachträglich indiziert werden müssen.

Viele Grüße
Jörn


als Antwort auf: [#429829]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

12. Jan 2010, 12:27
Beitrag # 61 von 117
Beitrag ID: #429875
Bewertung:
(19366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

auch wenn ich nicht zur Lösung des Problems beitragen kann, hier mal meine Erkenntnisse zu dem Problem:

Wenn eine Tabelle, die vor dem gesuchten Wort liegt, mehr Zeilen hat als das gesuchte Wort lang ist, wird die Marke nach hinten verschoben.

Beispiel:
Gesuchtes Wort: "Gold" (4 Zeichen). Solange die davorliegende Tabelle <= 4 Zeilen hat, ist alles OK. Hat die Tabelle 5 oder mehr Zeilen wird die Marke verschoben.

Gesuchtes Wort: "Katze" (5 Zeichen). Hat die Tabelle 6 oder mehr Zeilen wird die Marke verschoben.

Soweit meine Versuche. Lösung hab ich wie gesagt auch keine.

Gruss

Flo


als Antwort auf: [#429829]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

12. Jan 2010, 13:40
Beitrag # 62 von 117
Beitrag ID: #429892
Bewertung:
(19337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

das deckt sich mit meinen Beobachtungen.

Allerdings kam mir die Abhängigkeit der richtigen Positionierung eines Indexeintrag von der Zeilenzahl der vorangehenden Tabelle so absurd vor, dass ich das in dieser Weise nicht öffentlich kundtun wollte.

Jetzt wo Du das bestätigst ist mir wg. meiner Beobachtung zwar etwas wohler, aber es bleibt für mich eine absurde Verbindung. Welchen Einfluss hat der Sturz eines Radfahrers in China auf unser Wetter?


als Antwort auf: [#429875]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

12. Jan 2010, 15:03
Beitrag # 63 von 117
Beitrag ID: #429903
Bewertung:
(19304 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

auf Grund der Erkenntnisse mit der Tabelle hab ich mir einen Workaround programmiert (ich verlege den InsertionPoint für die PageReference soweit nach vorne, so dass nach falscher Berechnung die PageReference wieder stimmt). Ist nicht besonders schön, aber es funktioniert.

Code
var rightInsertionPointIndex = myResult[i].insertionPoints[0].index;  
var maybeWrongPageReference = myDoc.indexes[0].topics.item( oneEntry[0] ).topics.item( myResult[i].contents ).pageReferences.add(myResult[i], PageReferenceType.currentPage);
var diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = myResult[i].parentStory.insertionPoints[rightInsertionPointIndex-diff];
maybeWrongPageReference =myDoc.indexes[0].topics.item( oneEntry[0] ).topics.item( myResult[i].contents ).pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = myResult[i].parentStory.insertionPoints[rightInsertionPointIndex-diff+1];
myDoc.indexes[0].topics.item( oneEntry[0] ).topics.item( myResult[i].contents ).pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
}
}


Gruss

Flo


als Antwort auf: [#429892]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

12. Jan 2010, 16:53
Beitrag # 64 von 117
Beitrag ID: #429917
Bewertung:
(19268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

hab Dank für Deine Mitarbeit und Deinen workaround.
Aus gegebenem Anlass werde ich diesen workaround voraussichtlich morgen testen.
Er könnte mir bei einem aktuellen Projekt eine große Hilfe sein.


als Antwort auf: [#429903]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

13. Jan 2010, 14:45
Beitrag # 65 von 117
Beitrag ID: #430054
Bewertung:
(19220 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo flobuc,

das Script-Workaround würde ich gerne testen, weil ich geisteswissenschaftliche Bücher mit massig Fußnoten und Tabellen ständig setze. Meine beiden Fragen: funktioniert das auch in CS2? Wenn ja, wohin in "indexfromlist.jsx" sollte ich es einbauen.

Meine Scriptkenntnisse sind weitgehend nicht vorhanden, zumindest nicht in diesem Fall; ich wäre für die Hinweise sehr dankbar.

Viele Grüße
Jörn


als Antwort auf: [#429903]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

13. Jan 2010, 15:37
Beitrag # 66 von 117
Beitrag ID: #430064
Bewertung:
(19198 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

Den Fehler hab ich in dem Skript von Martin Fischer "IndexFromList_withOneSubtopic_CS3.jsx" nachgestellt.
Das Skript "indexfromlist.jsx" kenne ich leider nicht. Und ob meine Befehle in CS2 funktionieren, kann ich Ihnen nicht sagen, da ich kein CS2 installiert habe.

Gruss

Flo


als Antwort auf: [#430054]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

13. Jan 2010, 15:53
Beitrag # 67 von 117
Beitrag ID: #430068
Bewertung:
(19193 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
IndexFromList_withOneSubtopic_CS3.jsx ist eine Weiterentwicklung von indexfromlist.jsx.
Im Prinzip dürfte der workaround im CS2-Skript zu integrieren sein.

Aber mir geht es wie Florian: Hab keinen Zugriff auf ein lebendiges CS2.


als Antwort auf: [#430064]

Skript zum Index generieren

Glagau
Beiträge gesamt: 32

13. Jan 2010, 16:46
Beitrag # 68 von 117
Beitrag ID: #430080
Bewertung:
(19169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin, hallo Florian,

an welcher Stelle muss der workaround denn in das CS3 Skript integriert werden. Ich würde es dann gern an meiner Datei mal testen.

Daniela


als Antwort auf: [#430068]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

13. Jan 2010, 17:22
Beitrag # 69 von 117
Beitrag ID: #430086
Bewertung:
(19149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin, hallo Florian,

stehe ich derart auf dem Schlauch? Ich wollte, wie Daniela gerade auch für CS3, nur wissen, an welcher Stelle im Script der Workaround eingefügt werden muss, damit ich es in CS2 testen und über Erfolg oder Misserfolg berichten kann. Brauchst Du/brauchen Sie dazu ein lebendes CS2?

Hier das Script (Martin hat Recht, das Script mit den "Subtopics" ist eine Weiterentwicklung des "alten" CS2-Scripts IndexfromList.jsx -- sorry, ich hatte die Schreibweise nur auf klein vereinheitlicht):

Code
// IndexFromList_1.jsx    
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

var myWords = getWords(myList);
proceedWithList(myWords);
alert("Erledigt!");

// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von zwei und mehr aufeinander folgenden Leerzeichen durch ein Leerzeichen
aText = aText.replace(/ {2,}/g, ' ');

var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

app.findPreferences = app.changePreferences = null;

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneWord) {
var myResult = myDoc.search(oneWord, true, true, undefined);
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
myDoc.indexes[0].topics.item(myResult[oneEntry].contents).pageReferences.add(myResult[oneEntry], PageReferenceType.currentPage);
}
catch(e) {}
}
}


Ich würde mich sehr freuen, wenn mir geholfen werden kann.

Viele Grüße
Jörn


als Antwort auf: [#430068]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

13. Jan 2010, 18:01
Beitrag # 70 von 117
Beitrag ID: #430090
Bewertung:
(19119 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

da anscheinend noch so großes Interesse an den beiden Skripten besteht, hier sind die zwei Skripte mit meinem Bugfix (hab noch ein CS2 zum Testen aufgetrieben). Mal sehen ob es bei euch auch funktioniert.

@Martin: Ich hoffe du bist mir nicht böse, wenn ich hier deine Skripte eigenmächtig geändert einfach so poste.

IndexFromList_CS2_FIXED.jsx:
Code
// IndexFromList_CS2_FIXED.jsx   
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

var myWords = getWords(myList);
proceedWithList(myWords);
alert("Habe fertig!");


// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art und von RETURNs durch RETURNs
aText = aText.replace(/\s+/g, '\n');

var words = aText.split('\n');
aFile.close();
return words;
}
else {
exit();
}
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

app.findPreferences = app.changePreferences = null;

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneWord) {
var myResult = myDoc.search(oneWord, true, true, undefined);
for (var oneEntry = myResult.length-1; oneEntry >=0; oneEntry--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
var currentTopic = myDoc.indexes[0].topics.add(oneWord);
// Hinzufügen der Referenz
createPageReference(currentTopic, myResult[oneEntry]);
}
catch(e) {}
}
}

//BUGFIX ********************************/
function createPageReference(aTopic, aText){
var rightInsertionPointIndex = aText.insertionPoints[0].index;
var maybeWrongPageReference = aTopic.pageReferences.add(aText, PageReferenceType.currentPage);

//Bugfix für PageReferenzen an der falschen Position
var diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = aText.parentStory.insertionPoints[rightInsertionPointIndex-diff];
maybeWrongPageReference =aTopic.pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = aText.parentStory.insertionPoints[rightInsertionPointIndex-diff+1];
aTopic.pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
}
}

}


IndexFromList_withOneSubtopic_CS3_FIXED.jsx:
Code
// IndexFromList_withOneSubtopic_CS3_FIXED.jsx     
//DESCRIPTION: Erzeugt Indexeinträge anhand einer externen Konkordanzdatei, die über einen Dialog ausgewählt wird.

var myDoc = app.activeDocument;
var myList = File.openDialog ("Liste mit Indexbegriffen");
if (!myList) exit();

clearFindChangeSettings();
app.findChangeTextOptions.wholeWord = true;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = true;

var myEntries = getWords(myList);
proceedWithList(myEntries);
alert("Erledigt!");

// Konkordanzliste einlesen
function getWords (aFile) {
if (aFile.exists) {
aFile.open ('r', undefined, undefined);
var aText = aFile.read()+'\n';
// löschen von Leerzeichen am Ende der Zeile + löschen von leeren Zeilen
aText = aText.replace(/ +\n/g, '\n').replace(/\n+/g, '\n');
// ersetzen von mehrfach aufeinander folgende Leerzeichen aller Art durch ein Leerzeichen
aText = aText.replace(/ {2,}/g, ' ');

var words = aText.split('\n');
var myPairs = getPairs( words );
aFile.close();
return myPairs;
}
else {
exit();
}
}

function getPairs( w )
{
var thePairs = new Array;
for (i = 0; i < w.length; i++ )
thePairs.push( w[i].split(' | ') );
return thePairs;
}

// Begriffsliste abarbeiten
function proceedWithList (w) {
// bei Bedarf wird ein neuer Index erzeugt
if (myDoc.indexes.length == 0)
myDoc.indexes.add();

for (var i = 0; i < w.length; i++)
if (w[i] != "")
makeEntry(w[i]);

// Aktualisieurng des Index
myDoc.indexes[0].update();
}

// Indexeintrag erzeugen
function makeEntry(oneEntry) {
if ( oneEntry.length == 1 )
app.findTextPreferences.findWhat = oneEntry[0];
else
app.findTextPreferences.findWhat = oneEntry[1];

var myResult = myDoc.findText();
for (var i = myResult.length-1; i >=0; i--) {
// Fehler abfangen, z.B. Fußnoten ausnehmen
try {
// Hinzufügen des Themas
var currentTopic = myDoc.indexes[0].topics.add(oneEntry[0]);
// Hinzufügen des Sub-Themas
if ( oneEntry.length > 1) {
currentTopic = myDoc.indexes[0].topics.item( oneEntry[0] ).topics.add( oneEntry[1]);
}
createPageReference(currentTopic, myResult[i]);
}
catch(e) {}
}
}

//BUGFIX ********************************/
function createPageReference(aTopic, aText){
var rightInsertionPointIndex = aText.insertionPoints[0].index;
var maybeWrongPageReference = aTopic.pageReferences.add(aText, PageReferenceType.currentPage);

//Bugfix für PageReferenzen an der falschen Position
var diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = aText.parentStory.insertionPoints[rightInsertionPointIndex-diff];
maybeWrongPageReference =aTopic.pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
diff = maybeWrongPageReference.sourceText.index-rightInsertionPointIndex;
if(diff !=0){
maybeWrongPageReference.remove();
var earlyInsertionPoint = aText.parentStory.insertionPoints[rightInsertionPointIndex-diff+1];
aTopic.pageReferences.add(earlyInsertionPoint, PageReferenceType.currentPage);
}
}

}


//Clear any existing find/change settings.
function clearFindChangeSettings()
{
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
}


Gruss

Flo


als Antwort auf: [#430086]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

13. Jan 2010, 18:17
Beitrag # 71 von 117
Beitrag ID: #430092
Bewertung:
(19109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Florian @Martin: Ich hoffe du bist mir nicht böse, wenn ich hier deine Skripte eigenmächtig geändert einfach so poste.


Aber Florian, ganz im Gegenteil!
Bin grad so sehr eingespannt, dass mir diese Entlastung äußerst gelegen kommt.
Hatte heute keinen Nerv, das Skript und den workaround zu testen.

Ich danke Dir.


als Antwort auf: [#430090]

Skript zum Index generieren

Glagau
Beiträge gesamt: 32

13. Jan 2010, 19:43
Beitrag # 72 von 117
Beitrag ID: #430101
Bewertung:
(19082 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian, hallo Martin,

ich habe das Skript gerade an meiner Datei getestet und mit dem workaround von Florian ist das Problem behoben. Über das gesamte Dokument hinweg stehen jetzt alle Indexmarken korrekt vor dem Begriff.

Habt vielen Dank für Eure Hilfe!!!
Daniela


als Antwort auf: [#430092]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

15. Jan 2010, 08:43
Beitrag # 73 von 117
Beitrag ID: #430291
Bewertung:
(19008 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

leider kann ich nicht so jubeln wie Daniela, aber das liegt wohl an der Machart meines Index sowie meinen beschränkten Script-Kenntnissen. Währen der ältere Teil des Scripts "IndexfromList" klaglos läuft, passt die Neuergänzung nicht, da meine Indexeinträge häufig aus mehreren Worten bestehen, der entsprechende Scriptabschnitt aber immer "oneWord" verlangt. Ich hoffe, dass ich das noch in den Griff bekommen kann.

Auf jeden Fall Martin und flobuc herzlichen Dank für die Arbeit, die die beiden investiert haben. Wenn es nicht schon geschehen wäre, würde ich aus Dankbarkeit meinen Member-Obolus gerne entrichten wollen.

Viele Grüße
Jörn


als Antwort auf: [#430101]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

15. Jan 2010, 13:14
Beitrag # 74 von 117
Beitrag ID: #430331
Bewertung:
(18988 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

ich hab das Skript nochmal getestet und es funktioniert so weit auch mit Indexeinträgen die aus mehreren Wörtern bestehen. Ich kann auch nichts erkennen was auf ein Problem mit mehreren Wörtern schließen lässt.
Muss irgendein anderes Problem sein, wie lautet den die Fehlermeldung?

Gruss

Flo


als Antwort auf: [#430291]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

16. Jan 2010, 17:56
Beitrag # 75 von 117
Beitrag ID: #430412
Bewertung:
(18933 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

danke für die Rückmeldung. Ich hänge ein Screen shot an.

Systemangaben: WinXP (SP3), 2 GB RAM, CS2 (4.05).

Ich bin beruhigt, dass es nur drei Tabellen auf 340 S. sind; ich habe mir jetzt geholfen, indem ich die Tabellen in Text (mit Tabs) konvertiert habe und sie dann nach der Indizierung wieder in Tabellen verwandle. Aber das nächste Buch auf dem Schreibtisch hat dummerweise hundert Tabellen (;-(), so dass ich natürlich an der Lösung interessiert bin. Zwischenzeitlich habe ich auch im Adobe Forum gesucht und dort das: http://forums.adobe.com/message/2320567#2320567 gefunden.

Bin gespannt auf die Antwort und vielleicht auch eine Lösungsmöglichkeit.

Viele Grüße und ein schönes Wochenende
Jörn


als Antwort auf: [#430331]
Anhang:
indesign4.05_fehler_index.jpg (78.7 KB)

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

18. Jan 2010, 10:02
Beitrag # 76 von 117
Beitrag ID: #430511
Bewertung:
(17810 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

dem "Search"-Aufruf wird statt nur einem Suchbegriff das ganze Array mit allen Suchbegriffen übergeben.
Der Fehler hat nichts mit dem Workaround zu tun.
Da scheint deine Textdatei mit deinen Indexeinträgen ein Problem zu machen. In den Sucheinträgen gibt es auch so komische Einträge wie "(=".
Vielleicht kannst du die mir mal zur Verfügung stellen, dann schau ich mal rein.

Gruss

Flo


als Antwort auf: [#430412]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

18. Jan 2010, 12:55
Beitrag # 77 von 117
Beitrag ID: #430556
Bewertung:
(17798 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

anbei die Text-Datei mit den Einträgen. Format: UTF-8, erstellt mit Notepad++. Die "(=" sind Bestandteile einiger Einträge, so wie sie auch im gesamten Text vorkommen.

Schau sie dir einfach mal an und sage mir, wo mein Fehler ist.

Viele Grüße
Jörn


als Antwort auf: [#430511]
Anhang:
register_orte.txt (1.52 KB)

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

18. Jan 2010, 14:27
Beitrag # 78 von 117
Beitrag ID: #430578
Bewertung:
(17771 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

ich hab für meinen Bugfix anscheinend eine falsche Version des Skriptes "IndexFromList" für CS2 erwischt.
Ersetz doch bitte in deinem Skript folgende Zeilen in der Funktion "getWords":
Code
// ersetzen von zwei und mehr aufeinander folgenden Leerzeichen durch ein Leerzeichen    
aText = aText.replace(/ {2,}/g, ' ');


Leider kann ich meinen alten Beitrag nicht mehr editieren, um das vorhergende Posting zu korrigieren.

Sonst funktioniert das Ganze bei mir, probier es doch bitte nochmal.

Gruss

Flo


als Antwort auf: [#430556]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

18. Jan 2010, 19:19
Beitrag # 79 von 117
Beitrag ID: #430614
Bewertung:
(17749 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

dein Script unterscheidet sich an drei Stellen vom meinem Script; deines bleibt weiterhin hängen (gleiche Fehlermeldung, jetzt aber für Zeile 50), auch wenn ich den geänderten Code-Schnipsel einsetze -- meines läuft durch und bringt ein Ergebnis. Deswegen im Anhang beide Scripte zur Prüfung. Schau mal in die Zeilen 40, 41 und 54--56 der beiden Scripte, da sind möglicherweise die Problemzonen. Tauchen deswegen die Fehler auf?

Zu meinem Ergebnis: das ist allerdings "suboptimal"; mit deiner Änderung in Z. 20 und dem eingesetzten Bugfix klappt es mit meinem Script allerdings auch nicht, ich habe die Verschiebung der Indexmarken nach hinten (vom betreffenden Wort) um annähernd die Zeichenanzahl, wie ich Zeilen in der Tabelle habe.

Ich komme mit meinen beschränkten Mitteln momentan nicht weiter, so dass ich die Tabellen aufgelöst habe (in "Tabulator-Text"), die Textmarken setze (das klappt sehr gut mit der Kombination deines Work-around und "meines" Scripts, das doch mehr von Martins Erfahrung und Kenntnisse lebt) und danach wieder den "Tabulator-Text" in Tabellen verwandle.

Ich versuche es weiter, vielleicht finde ich wie das blinde Huhn doch den Weg.

Viele Grüße
Jörn


als Antwort auf: [#430578]
Anhang:
IndexFromList.zip (2.46 KB)

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

18. Jan 2010, 19:44
Beitrag # 80 von 117
Beitrag ID: #430617
Bewertung:
(17741 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian und Jörn,

Ihr nehmt es mir bitte nicht übel, wenn ich mich weitgehend raushalte.
Bin noch diese Woche am Anschlag und kann grad nicht mitdenken und mitmachen.


als Antwort auf: [#430614]

Skript zum Index generieren

flobuc
Beiträge gesamt: 246

19. Jan 2010, 08:44
Beitrag # 81 von 117
Beitrag ID: #430651
Bewertung:
(17739 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

jetzt hab ich den Fehler gefunden. Und mit Hilfe der beiden Skripten die du geschickt hast lässt sich deine Fehlerbeschreibung auch erklären.
Du hast anscheinend irgendwann die Zeilen 40-41 in meinem Skript geändert, denn in allen geposteten Skripten sind sie richtig.
Richtig muss die Stelle so heißen:
Code
if (w[i] != "")    
makeEntry(w[i]);

Bitte kopiere dir doch nochmal das Skript aus meinem ursprünglichen Posting und kopiere den Bugfix für Zeile 20.
Dann müsste es auch bei dir klappen.

Gruss

Flo


als Antwort auf: [#430614]
(Dieser Beitrag wurde von Martin Fischer am 11. Mär 2020, 10:38 geändert)

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

19. Jan 2010, 10:30
Beitrag # 82 von 117
Beitrag ID: #430666
Bewertung:
(17718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

vielen Dank, jetzt endlich klappt es. Warum es vorher nicht wollte und ob es nur an dem in Z. 40f. lag, mag ich nicht ermessen. Aber an den Scripten habe ich, soweit ich mich erinnern kann, aus Ahnungslosigkeit eigentlich nichts verändern. Egal, ich bin dir sehr dankbar, dass du mir (und hoffentlich anderen CS2-Nutzern) aus dem Dilemma geholfen hast.

Vielleicht sollte Martin, wenn er wieder etwas Luft sieht, das Script in die Scriptabteilung aufnehmen.

Viele Grüße
Jörn


als Antwort auf: [#430651]

Skript zum Index generieren

helga0202
Beiträge gesamt: 16

22. Mär 2010, 16:38
Beitrag # 83 von 117
Beitrag ID: #437349
Bewertung:
(17416 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
Euch allen einen herzlichen Dank für die Skripthilfe!
Hab das IndexFromFile im Dezember für unsere Jahreschronik verwendet.
Hat soweit auch gut funktioniert.
Eine hilfreiche Verbesserung für mich wäre die Gross- und Kleinschreibung => Egal wie geschrieben... sollte er das Wort finden.
Zum Beispiel: israelisch am Satzanfang = Israelisch.


Für einen Tipp wäre ich sehr dankbar

LG
Helga


als Antwort auf: [#430666]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

22. Mär 2010, 16:57
Beitrag # 84 von 117
Beitrag ID: #437352
Bewertung:
(17408 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Helga,

ersetze in Deinem Skript die Zeile
app.findChangeTextOptions.caseSensitive = true;

durch
Code
app.findChangeTextOptions.caseSensitive = false; 


(also false statt true)


als Antwort auf: [#437349]

Skript zum Index generieren

helga0202
Beiträge gesamt: 16

23. Mär 2010, 08:17
Beitrag # 85 von 117
Beitrag ID: #437390
Bewertung:
(17366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ist ja einfach! :-)
hätt ich auch selbst draufkommen können *gg*

Vielen Dank!
LG
Helga


als Antwort auf: [#437352]

Skript zum Index generieren

smog
Beiträge gesamt: 19

3. Feb 2011, 14:40
Beitrag # 86 von 117
Beitrag ID: #463698
Bewertung:
(16254 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich arbeite an einer Buchdatei (ca. 400 Seiten) in InDesign Cs4, auf Mac OS X 10.6.2 und möchte einen Index generieren (ca. 1200 Einträge).

Das Skript (topicsfromlist) um die Topics aus der txt-Datei zu importieren funktioniert bestens. Wenn ich nun aber die References mit einem Skript (CreatePageRefforTopic) automatisch generieren möchte, beschränken sich die Resultate nur auf die aktive Anhangsdatei. (Die Datei, welche beim generieren des Skripts zu vorderst war)

Die anderen Kapitel des Buches sind geöffnet, das Buch auch, in der Index-Palette habe ich "Book" aktiviert.

Kennt sich jemand damit aus?
Ist das automatische Generieren eines Indexes über mehrere Dokumente einer Buchdatei möglich?
Wie?


als Antwort auf: [#279797]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

3. Feb 2011, 15:12
Beitrag # 87 von 117
Beitrag ID: #463703
Bewertung:
(16239 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Versuch's mal mit dem Skript doScriptWithDocsOfBooks.jsx.

Damit wählst Du ein Skript aus, das über alle Dokumente des Buchs hinweg ausgeführt wird.


als Antwort auf: [#463698]
(Dieser Beitrag wurde von Martin Fischer am 3. Feb 2011, 15:12 geändert)

Skript zum Index generieren

smog
Beiträge gesamt: 19

3. Feb 2011, 16:12
Beitrag # 88 von 117
Beitrag ID: #463714
Bewertung:
(16222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Unglaublich, die prompte Hilfe! Danke!

Allerdings funktionierts bei mir leider immer noch nicht.

Wenn ich das Script "DoBook" starte, ihm dann das für das ganze Buch auszuführende Script zuweise kommt ein Warnfeld mit dem Namen des jeweiligen Kapitels und es steht "Referenzfehler: Objekt ist ungültig".

"Create page Refernce for Topics" funktioniert, aber wieder nur in der zuvorderst geöffneten Anhangsdatei, von der ich das Script starte. Was bedeutet, dass der Index erst ab ca. Seite 350 auf den Inhalt verweist.

Könnte es daran liegen, dass ich auf CS4 arbeite?
Bei Deinem Link stand "Skript ist lauffähig in: InDesign Version CS2, InDesign Version CS3". Gibt es ein entsprechendes Script für CS4?

Beste Grüsse,
Julia


als Antwort auf: [#463703]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

3. Feb 2011, 16:31
Beitrag # 89 von 117
Beitrag ID: #463717
Bewertung:
(16213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Könnte es daran liegen, dass ich auf CS4 arbeite?
Bei Deinem Link stand "Skript ist lauffähig in: InDesign Version CS2, InDesign Version CS3". Gibt es ein entsprechendes Script für CS4?


Es sollte auch mit CS4 funktionieren.
"Skript ist lauffähig in: InDesign Version CS2, InDesign Version CS3" heißt so viel wie "ist in CS2 und CS3 getestet worden".

Es ist möglich, dass die beiden Skripte nicht gut 'zusammenarbeiten'.
Das werde ich gelegentlich mal testen.


als Antwort auf: [#463714]

Skript zum Index generieren

smog
Beiträge gesamt: 19

3. Feb 2011, 18:00
Beitrag # 90 von 117
Beitrag ID: #463728
Bewertung:
(16178 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ja, die zwei Scripte scheinen zusammen nicht zu funktionieren. Sehr schade. Bei 400 S. und 1200 Indexeinträgen, wäre es unglaublich hilfreich die Indexierung zu automatisieren.

Hat jemand vielleicht eine Alternative zu einem meiner zwei Scripts?
Für die Anwendung des Scripts auf alle Dokumente der Buchdatei habe ich Martins Script doScriptWithDocsOfBooks.jsx verwendet. Für die Erstellung der "Page references for topics" folgendes Script:

Code
//DESCRIPTION: Create page references for existing topics 

#target indesign;

if (app.documents.length > 0)
{
if (parseInt (app.version) > 5)
app.doScript ("pagerefs_from_topics ()", undefined, undefined, UndoModes.fastEntireScript);
else
pagerefs_from_topics ();
}

function pagerefs_from_topics ()
{
var found_topics;
var doc_topics = app.documents[0].indexes[0].allTopics;
pbar____ = progress_bar ("Creating page references");
for (var i = 0; i < doc_topics.length; i++)
{
pbar____.value = i;
app.findGrepPreferences.findWhat = doc_topics[i].name;
found_topics = app.documents[0].findGrep (true);
for (var j = 0; j < found_topics.length; j++)
try {doc_topics[i].pageReferences.add (found_topics[j], PageReferenceType.currentPage)}
catch (_){};
}
// update the preview
app.documents[0].indexes[0].update ();
}


function progress_bar (stop, title)
{
w = new Window ('palette', title);
pb = w.add ('progressbar', undefined, 0, stop);
pb.preferredSize = [300,20];
w.show()
return pb;
}


Kann mir damit jemand weiter helfen? Wir sind hier ziemlich am Verzweifeln. Als Dank stellen wir in unserem Büro einen Altar für den auf, der das Problem lösen kann.

Beste Grüsse,
Julia


als Antwort auf: [#463717]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

4. Feb 2011, 08:28
Beitrag # 91 von 117
Beitrag ID: #463760
Bewertung:
(21121 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julia,

versuch's mal damit:
Code
// indexFromTopics_in_docsOfBooks.jsx 
//DESCRIPTION:Create page references for existing topics in every doc of every book or every opened doc.

//Buch vorhanden -> arbeite alle Dokumente aller Bücher ab
if ( app.books.length > 0 )
{
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.neverInteract;
for ( var b = 0; b< app.books.length; b++ )
for ( var c = 0; c < app.books.item( b ).bookContents.length; c++ )
{
var doc = app.open( File( app.books.item( b ).bookContents.item( c ).fullName ) );
pagerefs_from_topics( doc );
}
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
}
// kein Buch vorhanden -> arbeite alle geöffneten Dokumente ab
else if ( app.documents.length > 0 )
{
for ( var i = app.documents.length-1; i >= 0; i-- )
pagerefs_from_topics( app.documents.item( i ) );
}


function pagerefs_from_topics ( doc )
{
var found_topics;
var doc_topics = doc.indexes[0].allTopics;
pbar____ = progress_bar ( doc_topics.length, "Creating page references in \"" + doc.name + "\"" );
for ( var i = 0; i < doc_topics.length; i++ )
{
pbar____.value = i;
app.findGrepPreferences.findWhat = doc_topics[i].name;
found_topics = doc.findGrep ( true );
for ( var j = 0; j < found_topics.length; j++ )
try {doc_topics[i].pageReferences.add ( found_topics[j], PageReferenceType.currentPage )}
catch ( _ ){};
}
// update the preview
doc.indexes[0].update ( );
}


function progress_bar ( stop, title )
{
w = new Window ( 'palette', title );
pb = w.add ( 'progressbar', undefined, 0, stop );
pb.preferredSize = [300,20];
w.show( )
return pb;
}

Sind Bücher geöffnet, dann werden alle Dokumente der geöffneten Bücher behandelt. Sind keine Bücher geöffnet, dann werden alle geöffneten Dokumente behandelt.
Für die Erstellung der Verweise werden die jeweiligen Themen des einzelnen Dokuments verwendet. Ein Dokument schaut also nicht über sich hinaus, um sich die Themen aus einem anderen Dokument zu holen.

Das von Dir veröffentlichte Skript index_pagerefs_from_topics.jsx stammt von Peter Kahrel.


als Antwort auf: [#463728]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

4. Feb 2011, 09:06
Beitrag # 92 von 117
Beitrag ID: #463764
Bewertung:
(21109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julia,

nun habe ich auch noch das Zusammenspiel von doScriptWithDocsOfBooks.jsx und Peters index_pagerefs_from_topics.jsx getestet.

Das funktioniert (unter CS4) prima und tut genau das, was m.E. zu erwarten ist.

Wie bist Du vorgegangen, dass es bei Dir nicht so funktioniert hat, wie Du es erwartet hast?

Zitat Wenn ich das Script "DoBook" starte, ihm dann das für das ganze Buch auszuführende Script zuweise kommt ein Warnfeld mit dem Namen des jeweiligen Kapitels und es steht "Referenzfehler: Objekt ist ungültig".


Was heißt "Warnfeld mit dem Namen des jeweiligen Kapitels"?
Erscheint ein Hinweis mit dem Namen des Dokuments?
Wird in der Fehlermeldung auch auf eine Skriptzeile verwiesen?
Kannst Du mir ein Bildschirmfoto zukommen lassen?


als Antwort auf: [#463714]

Skript zum Index generieren

smog
Beiträge gesamt: 19

4. Feb 2011, 14:21
Beitrag # 93 von 117
Beitrag ID: #463821
Bewertung:
(21075 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Es lag daran, dass ich die Topics nicht in jedes einzelne Dokument importiert hatte, sondern nur in eines bei aktiviertem Buch.
Jetzt hat es geklappt. Vielen Dank für Deine rasche, kompetente Hilfe!
Das ist wirklich unglaublich.

Beste Grüsse,
Julia


als Antwort auf: [#463764]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

4. Feb 2011, 14:35
Beitrag # 94 von 117
Beitrag ID: #463824
Bewertung:
(21070 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Julia,

Antwort auf: Es lag daran, dass ich die Topics nicht in jedes einzelne Dokument importiert hatte, sondern nur in eines bei aktiviertem Buch.


Danke für den Hinweis.
Es beruhigt immer wieder, eine Ursache für ein unerwartetes Verhalten zu erkennen und damit umgehen zu können.

Im Prinzip wäre es möglich, dass das obige, erweiterte Skript für die Ermittlung der Topic-Liste auf dasjenige Dokument im Buch zurückgreift, das als Referenz für die Synchronisierung der Formate markiert ist.

Aber ich vermute, Du hast die Topics schneller in jedes Dokument eingelesen.
Auch dabei könnte Dir doScriptWithDocsOfBooks.jsx eine Hilfe sein.


als Antwort auf: [#463821]
(Dieser Beitrag wurde von Martin Fischer am 4. Feb 2011, 14:35 geändert)

Skript zum Index generieren

smog
Beiträge gesamt: 19

4. Feb 2011, 14:53
Beitrag # 95 von 117
Beitrag ID: #463827
Bewertung:
(21059 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Aber ich vermute, Du hast die Topics schneller in jedes Dokument eingelesen. Auch dabei könnte Dir doScriptWithDocsOfBooks.jsx eine Hilfe sein.


Stimmt, das ist natürlich super.
Beste Grüsse und nochmals danke,

Julia


als Antwort auf: [#463824]
(Dieser Beitrag wurde von smog am 4. Feb 2011, 15:06 geändert)

Skript zum Index generieren

smog
Beiträge gesamt: 19

8. Feb 2011, 12:40
Beitrag # 96 von 117
Beitrag ID: #464133
Bewertung:
(20971 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Leider habe ich noch weitere Index-Fragen.
(das Thema ist auch zu komplex!)

Themenstufen
Auf der Themenstufe 1 habe ich den Begriff "abschreiben".
Auf der Themenstufe 2 wird dieser präzisiert: "im Garten", "Gedichte".
Wenn ich nun mit CreatepageRefForTopics.jsx die Verweise setze,
wird natürlich zuerst jedes "abschreiben", dann jedes
"abschreiben im Garten" und jedes "Gedichte abschreiben" verlinkt.
In diesem Fall möchte ich natürlich nur auf die vollständigen
Begriffe der Themenstufe 2 verweisen.
"abschreiben" alleine auf der Themenstufe 1 interessiert nicht.
Kann man die Verweise auf der Themenstufe 1 irgendwie sperren?

Verweis: Suche vs. Stichwort im Index
Unter "C" habe ich den Begriff "Caesar, Julius".
In den Themenoptionen gebe ich als Themenstufe "Julius Caesar" ein,
unter Sortieren nach "Caesar, Julius".
Beim Verweisen wird so "Julius Caesar" gefunden, im Index das
Stichwort "Julius Caesar" an der alphabetischen Stelle für
"Caesar, Julius" (also bei C und nicht bei J) gesetzt.
Gibt es eine Möglichkeit, dass im Index das Stichwort "Caesar, Julius"
steht, aber nach "Julius Caesar" gesucht wird?
Super-praktisch wäre zum Beispiel wenn man einem Begriff mehrere
Unterbegriffe Zuweisen könnte nach denen gesucht werden soll.
z.B. schreibe im Index "Accessoires, weibliche",
suche aber "weibliche Accessoires" und nach "Accessoires der Frau"
und nach "Accessoires der Frauen" aber nicht nach
"Accessoires" (alleine).
Ist so etwas möglich?
Oder gerate ich hier an die Grenzen des Programms?

Liebe Grüsse, bin dankbar um jede Hilfe,
Julia


als Antwort auf: [#463824]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

8. Feb 2011, 12:51
Beitrag # 97 von 117
Beitrag ID: #464136
Bewertung:
(20966 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
zu den Themenstufen:

im Prinzip ist das möglich.
Aber etwas kniffelig.

Das Skript IndexFromList_withSubtopics_CS3.jsx geht in diese Richtung.

Irgendwo habe ich eine Version, die nach einem bestimmten Begriff sucht, aber die Fundstelle unter einem anderen Namen einträgt. Vielleicht gibt es diese Version irgendwo im InDesign- oder im Premium-Forum.


zur Sortierung:

Das lässt sich mit der Sortierfunktion beim Indexeintrag feinsteuern.
Anderslautender Eintrag als Zeichenfolge der Fundstelle: s.o.


Nein, an die Grenzen des Programms kommst Du damit noch nicht.
Für die Skripte wäre das alles eine Frage der Organisation.
Man müsste den gesuchten Begriff von dem eingetragenen Begriff und davon wieder den zu sortierenden Begriff unterscheiden. Darüberhinaus noch mehrere Themenstufen.

Machbar wäre das schon.
Aber nicht mal schnell nebenher in der 5-Minutenpause.


als Antwort auf: [#464133]

Skript zum Index generieren

smog
Beiträge gesamt: 19

8. Feb 2011, 13:35
Beitrag # 98 von 117
Beitrag ID: #464145
Bewertung:
(20953 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] zu den Themenstufen:

im Prinzip ist das möglich.
Aber etwas kniffelig.

Das Skript IndexFromList_withSubtopics_CS3.jsx geht in diese Richtung.

Irgendwo habe ich eine Version, die nach einem bestimmten Begriff sucht, aber die Fundstelle unter einem anderen Namen einträgt. Vielleicht gibt es diese Version irgendwo im InDesign- oder im Premium-Forum.


Über das Script IndexFromList_withOneSubtopic_CS3.jsx
konnte ich das Problem mal ansatzweise lösen.
Besten Dank!

Antwort auf [ Martin Fischer ] zur Sortierung:

Das lässt sich mit der Sortierfunktion beim Indexeintrag feinsteuern.
Anderslautender Eintrag als Zeichenfolge der Fundstelle: s.o.

Nein, an die Grenzen des Programms kommst Du damit noch nicht.
Für die Skripte wäre das alles eine Frage der Organisation.
Man müsste den gesuchten Begriff von dem eingetragenen Begriff und davon wieder den zu sortierenden Begriff unterscheiden. Darüberhinaus noch mehrere Themenstufen.

Machbar wäre das schon.
Aber nicht mal schnell nebenher in der 5-Minutenpause.


Natürlich. Mal schauen was ich noch aus der Sortierfunktion rauskriege.

Beste Grüsse,
Julia


als Antwort auf: [#464136]

Skript zum Index generieren

smog
Beiträge gesamt: 19

8. Feb 2011, 13:59
Beitrag # 99 von 117
Beitrag ID: #464147
Bewertung:
(20945 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ smog ]
Über das Script IndexFromList_withOneSubtopic_CS3.jsx
konnte ich das Problem mal ansatzweise lösen.
Besten Dank!


Leider enstehr so wieder das Problem der Verdoppelung:
Es werden nur die Themen importiert und indexiert,
die auch ein Unterthema haben.
Die anderen werden ignoriert.
Wenn ich danach die anderen Topics importiere und mit
CreatePageRefFortopics.jsx indexiere, verdoppeln sich dadurch
natürlich die Einträge mit Subthemen, die ja bereitst
indexiert waren.


als Antwort auf: [#464145]

Skript zum Index generieren

smog
Beiträge gesamt: 19

14. Feb 2011, 10:54
Beitrag # 100 von 117
Beitrag ID: #464642
Bewertung:
(20855 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Leider habe ich immer noch einige Fragen bezüglich Indexierung.

Julius Caesar = Julius Cäsar = J. Caesar
Weiss jemand ob und wie es möglich ist den gesuchten Begriff mit mehreren Synonymen zu verlinken und von dem im Index eingetragenen Begriff zu unterscheiden?

Problem:
Das Skript arbeitet natürlich sehr präzise und findet Formen des gleichen Wortes nicht: es unterscheidet Versalien und Gemeine oder findet nur Wörter in einer bestimmten Reihenfolge.

Z.B:
Im Index steht unter C Caesar, Julius.
Aber wir suchen eigentlich Julius Caesar.
Im Fenster Themenoptionen habe ich die Themenstufe zu Julius Caesar und sortieren nach zu Caesar, Julius geändert.
Jetzt wird nach Julius Caesar gesucht und im Index an der alphabetischen Stelle von Caesar, Julius geschrieben.
Es wäre natürlich wünschenswert, dass nach Julius Caesar gesucht wird, aber dennoch im Index Caesar, Julius geschrieben wird.

Aber was viel wichtiger ist:
Ist es möglich Julius Caesar mit anderen Begriffen zu verlinken, die auch unter Julius Caesar gesucht werden sollen?
Das Script sollte wissen:
Suche nach Julius Caesar (was gleichbedeutend ist mit Julius Cäsar und J. Caesar) und schreibe Caesar, Julius im Index.
Da es im Buch viele Transkripte (auch mit grammatikalischen Fehlern) und verschiedene Versionen/Fälle eines Wortes gibt, würde dies unglaublich helfen!!! Anonsten bleibt mir nur noch das manuelle, einzelne Setzen der Indexmarken durch die Suchfunktion.

Topics vs. Subtopics
Um den Index zu erstellen importiere ich zuerst die Topics in alle Dokumente des Buches indem ich doScriptWithDocsOfBooks.jsx und TopicsFromList.jsx verwende. Danach erstelle ich die Verweise mit doScriptWithDocsOfBooks.jsx und CreatePageRefForTopics.jsx. Klappt alles bestens, leider sind in diesem Script Subtopics nicht berücksichtigt.

Mit Martins Script IndexFromList_withSubtopics_CS3.jsx wurden jeweils nur die Themen importiert, welche mindestens ein Subtopic haben – die anderen wurden ignoriert – und im selben Schritt die Seitenverweise generiert. Den Index in zwei Schritten zu erstellen (1. import der Themen, 2. Seitenverweise erstellen) ist in unserem Fall ganz gut, da es nach dem Import der Themen noch einiges zu editieren gilt.

Aber gibt es eine Möglichkeit die Subtopics-funktion in das Script TopicsFromList.jsx zu integrieren? Und in einem zweiten Schritt die Seitenverweise mit einem Script zu erstellen, das die Subtopics berücksichtigt?

Besten Dank für Ihre Hilfe und herzliche Grüsse,
Julia


als Antwort auf: [#464136]

Skript zum Index generieren

CSS2016User
Beiträge gesamt: 2

6. Nov 2017, 16:28
Beitrag # 101 von 117
Beitrag ID: #560437
Bewertung:
(11217 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich muss diesen alten Thread leider nochmal hochholen. Auf einem alten System mit CS3 hat das Skript super funktioniert. Danke schonmal für eure Vorarbeit.
Gibt es von dem Skript auch eine aktuelle Version für CSS2016?
Wegen einer anderen Problematik suche ich schon eine ganze Weile quer durchs Netz. Ich habe in einigen Tabellen Harte Zeilenumbrüche. Dadurch werden die Stichwörter nicht so gefunden, wie ich das gern hätte. Wie kann ich das denn lösen?

Beste Grüße


als Antwort auf: [#464642]

Skript zum Index generieren

Uwe Laubender
Beiträge gesamt: 5319

6. Nov 2017, 22:11
Beitrag # 102 von 117
Beitrag ID: #560447
Bewertung:
(11166 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: … Gibt es von dem Skript auch eine aktuelle Version für CSS2016? …


Hallo,
welche Version von InDesign genau?
Die aktuellste CC 2018?

Soweit ich mit einem simplen Beispiel testen konnte, funktioniert beispielsweise IndexFromList_withSubtopics_CS3.jsx immer noch mit der aktuellen CC 2018.


als Antwort auf: [#560437]

Skript zum Index generieren

CSS2016User
Beiträge gesamt: 2

7. Nov 2017, 08:20
Beitrag # 103 von 117
Beitrag ID: #560452
Bewertung:
(11132 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für die rasche Antwort, Uwe. Manchmal braucht man einfach jemdanden, der sagt, dass es geht. ;o)
Ich hatte beim Speichern einen Fehler gemacht. Das Skript funktioniert auch in der 2016er Version. Selbst die umgebrochenen Wörter konnten somit gefunden werden, wenn ich in die Text-datei "umge-^nbrochen" eingefüge.
Das Problem von smog stellt stellt sich mir allerdings dennoch. Wie kann ich diesem gesuchten Stichwort nun einen anderen Namen geben: umgebrochen = umge-^nbrochen?
Sind mit dem Skript auch Verweise möglich?

Viele Grüße
Björn


als Antwort auf: [#560447]

Skript zum Index generieren

Uwe Laubender
Beiträge gesamt: 5319

10. Mär 2020, 20:30
Beitrag # 104 von 117
Beitrag ID: #574459
Bewertung:
(7334 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
bin heute über einen Beitrag im Adobe InDesign-Forum gestolpert, der den Bug mit dem verschobenen Index-Marker beschreibt. Ist also immer noch ein Thema mit der aktuellen InDesign 2020-Version:


Index marker is not placed in the right location when added via a script.
jonasy18481676, Mar 06, 2020
https://community.adobe.com/...td-p/10967488?page=1

Mein erfolgreich getesteter Workaround:

1. Neuen, temporären Textrahmen im Dokument anlegen.
2. Den zu indizierenden Text in den Textrahmen schieben.
3. Die Textreferenz mit dem Text im neuen Textrahmen erzeugen.
4. Den Text samt neuen Index-Marker an den Ausgangspunkt zurückschieben.
5. Den temporären Textrahmen löschen.

In der gleichen Diskussion erwähnt übrigens Peter Kahrel einen Fall, in dem der Index-Marker in einem Fußnotentext landet. Auch ganz nett.

Weitere Beiträge zum gleichen Bug im Adobe InDesign-Forum mit einem "besonderen Fall", den Roland Dreger dokumentiert: Der Index-Marker wird fälschlicherweise in einer Textzelle einer Tabelle vor dem gefundenen Text erzeugt:

Crazy bug with index entry
drerol74, Jun 23, 2019
https://community.adobe.com/...td-p/10522742?page=1


als Antwort auf: [#560452]

Skript zum Index generieren

drerol74
Beiträge gesamt: 507

10. Mär 2020, 23:13
Beitrag # 105 von 117
Beitrag ID: #574461
Bewertung:
(7314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

gute Idee. Mich hat das damals auch einige Zeit gekostet, diesen Bug zu umgehen.

Meine Lösung war so ähnlich, wie die von Peter Kahrel. Konkret: untersuchen, ob der eingefügte Indexmarker in einer Zelle, Fußnote oder im gleichen Textabschnitt gelandet ist und dann an die ursprüngliche Stelle verschieben.

Was man sich erspart, ist das Erzeugen eines neuen Textfrahmens. Was man sich dabei allerdings einhandeln kann, sind Formatabweichungen, mit denen man umgehen muss.

Müsste man mit einem umfangreicheren Dokument mal testen, welcher Ansatz effizienter ist. Vermutlich kommt es aufs Gleiche raus. Oder siehst du Vorteile mit deiner Version?

Schöne Grüße
Roland


als Antwort auf: [#574459]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

11. Mär 2020, 09:36
Beitrag # 106 von 117
Beitrag ID: #574462
Bewertung:
(10951 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,
jetzt bin ich beruhigt, dass ich immer noch nicht alleine bin mit dem Bug; das Procedere werde ich dann durchspielen müssen.

Aber was ich beisteuern kann, ist folgendes: Es ist nicht nur allein ein Problem, das mit vorgeschalteten Tabellen zu tun hat, sondern auch mit einem Script zur Index-Auszeichnung, nämlich den Scripten "IndexvomCharacterStyle.jsx" bzw. "Index_from_charstyles.jsx". Dabei passiert es, dass die Indexmarke ein, zwei oder sogar drei Zeilen nach dem Begriff an einer Stelle eingetragen wird, an der sie nichts zu tun hat und für einen Index-Eintrag auch keinen relevanten Gewinn bedeutet.

Bei fünf (oder zwanzig) Seiten ist das vielleicht nicht so schlimm, bei über 500 (im aktuellen Projekt) ist das schon etwas anderes.


als Antwort auf: [#574461]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Mär 2020, 10:34
Beitrag # 107 von 117
Beitrag ID: #574463
Bewertung:
(10937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

Antwort auf: Es ist nicht nur allein ein Problem, das mit vorgeschalteten Tabellen zu tun hat, sondern auch mit einem Script zur Index-Auszeichnung, nämlich den Scripten "IndexvomCharacterStyle.jsx" bzw. "Index_from_charstyles.jsx". Dabei passiert es, dass die Indexmarke ein, zwei oder sogar drei Zeilen nach dem Begriff an einer Stelle eingetragen wird, an der sie nichts zu tun hat und für einen Index-Eintrag auch keinen relevanten Gewinn bedeutet.


Hier wäre zu prüfen, in welche Reihenfolge die Fundstellen abgearbeitet und mit Indexeinträgen versehen werden. Möglicherweise beeinflusst die Eintragung einer Indexmarke die Position der nächsten Fundstelle und "verschiebt" diese.

Schick mir doch mal Deine Skripte, wie Du sie einsetzt, zu. Dann kann ich prüfen, wie die Reihenfolge der Eintragungen eingerichtet ist. O.g. Problem könnte möglicherweise durch eine Abarbeitung der Fundstellen von hinten nach vorne gelöst werden.

Es ist aber auch möglich, dass andere Faktoren (Marken wie Verankerungen, Fußnoten oder Tabellen etc.) störend wirken.


als Antwort auf: [#574462]

Skript zum Index generieren

Uwe Laubender
Beiträge gesamt: 5319

11. Mär 2020, 10:35
Beitrag # 108 von 117
Beitrag ID: #574464
Bewertung:
(10936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Roland Oder siehst du Vorteile mit deiner Version?


Hallo Roland,
den Textrahmen braucht man nur einmal erstellen, vor der Schleife durch die gefundenen Textstellen. Das habe ich in der Schnelllösung im Adobe InDesign-Forum so nicht umgesetzt. Vor jedem Schleifendurchgang ist der ja geleert.

Sonst wäre noch zu sagen: Mit dieser Methode bin ich jedenfalls absolut sicher, dass der Index-Marker ohne weitere Formatabweichungen eingefügt wird. Und immer an der korrekten Position. Egal, welche Position der sonst haben würde, bugbedingt.

Und ja: An einem umfangreichen Dokument wäre die Geschwindigkeit zu testen.
Wobei ich mir sage: Sicherheit geht da vor Effizienz.


als Antwort auf: [#574461]

Skript zum Index generieren

WernerPerplies
Beiträge gesamt: 2762

11. Mär 2020, 11:05
Beitrag # 109 von 117
Beitrag ID: #574465
Bewertung:
(10927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

grundsätzlich sind Fundstellen nur unmittelbar nach der Suche gültig.

Deshalb habe ich mir angewöhnt, jede einzelne Fundstelle unmittelbar vor der Nutzung auf Gültigkeit zu überprüfen.

Das entbindet einen natürlich nicht von der Verpflichtung bei erwarteten Verschiebungen die Verarbeitung von hinten zu beginnen.

Da solche Verschiebungen nur innerhalb einer Story auftreten können, ist es hilfreich, die erzeugte Fundliste zuerst nach ParentStories und innerhalb der Stories von hinten nach vorne zu sortieren.


als Antwort auf: [#574464]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Mär 2020, 11:12
Beitrag # 110 von 117
Beitrag ID: #574467
Bewertung:
(10922 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Werner Perplies ] Da solche Verschiebungen nur innerhalb einer Story auftreten können, ist es hilfreich, die erzeugte Fundliste zuerst nach ParentStories und innerhalb der Stories von hinten nach vorne zu sortieren.


Oder man arbeitet von vornherein mit der Suche rückwärts - findText(true) / findGrep(true).


als Antwort auf: [#574465]

Skript zum Index generieren

WernerPerplies
Beiträge gesamt: 2762

11. Mär 2020, 11:20
Beitrag # 111 von 117
Beitrag ID: #574468
Bewertung:
(10913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

man vielleicht, ich prüfe, nachdem ich einige Male auf die Nase gefallen bin, immer zusätzlich. :-)


als Antwort auf: [#574467]

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

11. Mär 2020, 11:30
Beitrag # 112 von 117
Beitrag ID: #574469
Bewertung:
(10908 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jörn,

vielen Dank für die Überlassung der von Dir verwendeten Skripte.

In allen Skripten werden die Fundstellen von hinten nach vorne abgearbeitet.

Deswegen kann man (sic!) die Fehlerquelle durch Verschiebung der Positionen nach Einarbeitung von Indexeinträgen aus meiner Sicht ausschließen.

Mehr kann ich im Moment nicht machen.


als Antwort auf: [#574463]

Skript zum Index generieren

ajordan
Beiträge gesamt: 2

22. Jun 2022, 18:35
Beitrag # 113 von 117
Beitrag ID: #583764
Bewertung:
(3821 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
editiere gerade eine Dissertation mit 8 Kapiteln verteilt auf einzelne Dateien, zusammengefasst als Buch-Datei. Versuche nun ein Personenverzeichnis für das gesamte Buch zu erstellen und habe dafür eine neue Datei als Buchkapitel angelegt, die das Personenverzeichnis enthalten soll.
Habe sowohl das Skript "IndexFromCharacterStyle_z_CS4.jsx", als auch "IndexFromList_CS3.jsx" getestet. Beide Sktripte funktionieren wunderbar, wenn ich sie separat für einzelne Kapitel anwende, ich also die Skripte in der derselben Datei nutze. Wie aber kann ich die Skripte dazu überreden dateiübergreifend ein ganzes Buch auszuwerten? Habe mich noch nicht entschieden welches Skript für mich am Ende mehr Handarbeit bedeutet. Natürlich habe ich viele Personen, die in dem gesamten Buch unter unterschiedlichen Bezeichnungen auftauchen, mal mit Vor-und Nachname mal nur mit Nachnahme, mal mit Genitiv s, mal mit Apostroph, Wäre klasse wenn man dieselben Personen im Vorfeld zu Gruppen zusammenfassen könnte, sonst bleibt sehr viel Handarbeit übrig. Irgen jemand eine Idee wie ich das Problem löse? Vielen Dank im Voraus!


als Antwort auf: [#574462]

Skript zum Index generieren

uswd
Beiträge gesamt: 317

23. Jun 2022, 07:23
Beitrag # 114 von 117
Beitrag ID: #583765
Bewertung:
(3775 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich würde einen Blick auf IndexMatic von Indiscripts werfen. Dort kann man schnell eine Wortliste erstellen und alle Namen rausfiltern. Die Namensliste kann man mit spezieller Syntax so aufbereiten, dass Einordnungen, Untereinordnungen, Sortierung, Verweise etc. nach den eigenen Vorgaben durchgeführt werden (alles im sehr guten Handbuch erklärt). Und man kann natürlich die Buchdokumente verwenden (und wenn man beim Erstellen die Namen mit Zeichenformaten ausgezeichnet hat, kann man die benutzen, etc.).

https://www.indiscripts.com/

Ciao
Ulrich


als Antwort auf: [#583764]

Skript zum Index generieren

Jabadabadu
Beiträge gesamt: 249

23. Jun 2022, 08:51
Beitrag # 115 von 117
Beitrag ID: #583766
Bewertung:
(3744 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin.
Ich würde mir das Script doScriptWithDocsOfBooks.jsx (http://indesign.hilfdirselbst.ch/...chern-ausfuhren.html) anschauen, das erledigt das in einem Rutsch, damit man diese Arbeiten nicht – wie in diesem Fall – achtmal machen muss.


als Antwort auf: [#583764]

Skript zum Index generieren

Peter Sauseng
Beiträge gesamt: 484

23. Jun 2022, 16:15
Beitrag # 116 von 117
Beitrag ID: #583774
Bewertung: |||
(3691 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Soweit ich diese Skripts kenne, erzeugen sie keinen Index, sondern die Indexeinträge.

Der Index kann nach eventueller Überarbeitung der Einträge mit der InDesign-Funktion "Index generieren" im Bedienfeld "Index" und der Option "Buchdokumente einschließen" erstellt werden.

Gruß, Peter


als Antwort auf: [#583764]

Skript zum Index generieren

ajordan
Beiträge gesamt: 2

23. Jun 2022, 18:52
Beitrag # 117 von 117
Beitrag ID: #583775
Bewertung:
(3657 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
IndexMatic muss ich mir erst in Ruhe noch anschauen. Das Skript "doScriptWithDocsOfBooks.jsx" ist auf jeden Fall schon mal sehr hilfreich! Vielen Dank dafür! Zumindest habe ich für verschiedene Namen Indexeinträge für das gesamte Buch und nicht nur kapitelweise.
Ob sich IndexMatic für meine Zwecke lohnt, muss ich testen. Das Problem ist einfach, das es beim Personenregister Namen gibt, die je nach Zusammenhang unterschiedliche Personen kennzeichnen. So beispielsweise bei Brüdern mit demselben Nachnahmen. Nicht immer wird im Text der Vorname genannt, häufig nur die jeweilige Berufsbezeichnung. Derartige Fälle bleiben vermutlich im jeden Fall Handarbeit.
Auf jeden Fall bin ich schon einen Schritt weiter.


als Antwort auf: [#583766]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!