[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

RONNY-LE
Beiträge gesamt: 2

21. Sep 2007, 14:39
Beitrag # 16 von 117
Beitrag ID: #313575
Bewertung:
(36245 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]
X

Skript zum Index generieren

Christian Glombitza
Beiträge gesamt: 493

24. Okt 2007, 12:00
Beitrag # 17 von 117
Beitrag ID: #318535
Bewertung:
(36169 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: 12685

24. Okt 2007, 12:10
Beitrag # 18 von 117
Beitrag ID: #318540
Bewertung:
(36163 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:
(36156 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: 12685

17. Nov 2007, 00:06
Beitrag # 20 von 117
Beitrag ID: #322824
Bewertung:
(36088 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:
(36001 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: 12685

1. Apr 2008, 07:58
Beitrag # 22 von 117
Beitrag ID: #343938
Bewertung:
(35502 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: 12685

1. Apr 2008, 22:06
Beitrag # 23 von 117
Beitrag ID: #344134
Bewertung:
(35454 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:
(34825 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: 12685

18. Jun 2008, 16:35
Beitrag # 25 von 117
Beitrag ID: #354856
Bewertung:
(34822 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:
(34743 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: 5957

19. Jun 2008, 11:53
Beitrag # 27 von 117
Beitrag ID: #354956
Bewertung:
(34736 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:
(34340 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: 12685

18. Aug 2008, 08:59
Beitrag # 29 von 117
Beitrag ID: #362875
Bewertung:
(34256 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: 710

21. Aug 2008, 08:50
Beitrag # 30 von 117
Beitrag ID: #363309
Bewertung:
(34183 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]
X

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

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
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/