[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:
(38886 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:
(38810 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:
(38804 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:
(38797 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:
(38729 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:
(38643 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:
(38144 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:
(38096 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:
(37467 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:
(37464 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:
(37383 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:
(37376 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:
(36980 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:
(36896 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:
(36823 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

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!