[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 Fischer
  
Beiträge gesamt: 12783

4. Feb 2011, 08:28
Beitrag # 91 von 117
Beitrag ID: #463760
Bewertung:
(21120 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]
X

Skript zum Index generieren

Martin Fischer
  
Beiträge gesamt: 12783

4. Feb 2011, 09:06
Beitrag # 92 von 117
Beitrag ID: #463764
Bewertung:
(21108 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:
(21074 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:
(21069 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:
(21058 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:
(20970 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:
(20965 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:
(20952 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:
(20944 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:
(20854 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:
(11216 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: 5318

6. Nov 2017, 22:11
Beitrag # 102 von 117
Beitrag ID: #560447
Bewertung:
(11165 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:
(11131 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: 5318

10. Mär 2020, 20:30
Beitrag # 104 von 117
Beitrag ID: #574459
Bewertung:
(7333 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:
(7313 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]
X