[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

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

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

ThiemoW.
Beiträge gesamt: 58

20. Feb 2013, 14:14
Beitrag # 1 von 11
Bewertung:
(14190 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich bin am erstellen von Büchern und habe hier mittlerweile Indexeinträge, mit denen ich im Buch dann das Index-Verzeichnis erstelle.
Jetzt sollen hier noch einfache Querverweise eingefügt werden. Also Wörter, die im Buch (noch) nicht vorkommen, sollen als Querverweis auf entsprechende Wörter die im Buch vorkommen, ins Indexverzeichnis mit integriert werden.
Das würde ich am liebsten über die InDesign-Querverweis-Funktion machen.
Nur ist es relativ umständlich, alle solchen Querverweise manuell im InDesign über die Index-Funktion ein zu arbeiten. (Seitenzahlen-Angaben sind in meinem Fall zunächst nicht notwendig)

Daher meine Frage:
Gibt es dafür eine Script-Lösung die, z.B. ein Excel-Liste als Basis nimmt, in der zuerst der Begriff und dann der entsprechende Begriff auf den verwiesen wird steht, und das daraus dann automatisch die Querverweise im InDesign anlegt?
Dann müsste nicht ein Grafiker manuell die Arbeit von Hand machen, was ja auch immer eine gewisse Fehlerquelle birgt,
sondern dann könnte ein Redakteur/Autor die Liste vorbereiten und man könnte diese automatisch integrieren.

Bin mal gespannt, ob das Problem schonmal jemand hatte und ich bloß zu dumm zum finden war, oder ob so eine Lösung nicht möglich ist?

Viel Grüße,

Thiemo
X

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

Martin Fischer
  
Beiträge gesamt: 12783

20. Feb 2013, 16:09
Beitrag # 2 von 11
Beitrag ID: #508699
Bewertung:
(14131 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thiemo,

Antwort auf: Gibt es dafür eine Script-Lösung die, z.B. ein Excel-Liste als Basis nimmt, in der zuerst der Begriff und dann der entsprechende Begriff auf den verwiesen wird steht, und das daraus dann automatisch die Querverweise im InDesign anlegt?


Eine fertige Skriptlösung für diese spezielle Aufgabe ist mir nicht bekannt.

Aber es ist eine interessante Idee und wie beschrieben im Prinzip machbar.
Könnte mir vorstellen, dass der Grafiker um die Entlastung sehr dankbar wäre.

Am Ende ist es auch eine Frage nach der Kosten-Nutzen-Abwägung:
Lohnt es sich, den Aufwand für die Entwicklung eines speziellen Skripts zu zahlen, das man mehrfach verwenden könnte oder ist es billiger, wenn der Graphiker alles einmal von Hand erledigt.

Am besten lässt Du Dir mal ein Angebot machen.


als Antwort auf: [#508685]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

WernerPerplies
Beiträge gesamt: 2762

20. Feb 2013, 17:29
Beitrag # 3 von 11
Beitrag ID: #508709
Bewertung:
(14101 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thiemo,

die halbe Miete bei der Entwicklung solch eines Skriptes ist eine exakte Aufgabenbeschreibung:

Zur Excel-Liste fiele mir zum Beispiel ein:
Wie können Quelle und Ziel sauber unterschieden werden?
Was ist, wenn Begriffe mehrfach vorkommen?
Was, wenn bestimmte Vorkommen bei der Erstellung der Querverweise nicht verwendet werden sollen u. ä.
Syntax, wenn Verweise auf andere Dateien zeigen sollen (externe Verweise).

Außerdem sollte ausreichendes Testmaterial vorhanden sein, am besten gleich die später zu verwendenden Orginaldateien.


als Antwort auf: [#508685]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

ThiemoW.
Beiträge gesamt: 58

20. Feb 2013, 23:53
Beitrag # 4 von 11
Beitrag ID: #508725
Bewertung:
(14058 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

sorry, ich dachte die Aufgabe wäre ausführlich genug beschrieben.
So aufwendig und intelligent müsste das Script für mich gar nicht sein.
Es sollte einfach nur die Begriffe, die in einem separaten Dokument geliefert werden, als "[Benutzerdefinierte Querverweis]" im InDesign aufnehmen. Und zwar so, dass - wenn man von einer Excel-Datei ausgeht - der Begriff in der ersten Zelle der Begriff ist von dem aus verwiesen wird, auf den Begriff, der in der zweiten Zelle im Excel nebendran steht.
Alternativ könnten das auch die Begriffe aus einem Textdokument sein, die durch ein Steuerzeichen getrennt sind. Und so sollte das Script Zeile für Zeile das "Querverweis-Dokument" durch gehen und die Begriffe als neue Querverweise ins InDesign hinzufügen.
Ohne Seitenangabe.
Keine Prüfung ob irgend etwas doppelt ist, nur stur die Begriffe aus der Liste durch gehen.
Keine externen Querverweise etc.

Als Testmaterial könnte man dann irgendeine (auch eine leere) InDesign-Datei nehmen in die das Script dann einfach aus einer zweiten Text-Datei oder Excel-Liste, in der z.B. zwei mal zwei Begriffe stehen, einfügt.

Oder habe ich hier zu einfach gedacht?

Danke für Euere Tipps und Hilfe ...

Viele Grüße,

Thiemo


als Antwort auf: [#508709]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

Martin Fischer
  
Beiträge gesamt: 12783

21. Feb 2013, 06:06
Beitrag # 5 von 11
Beitrag ID: #508727
Bewertung:
(14029 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thiemo,

wenn klar ist, um welche Art von Querverweisen es sich handelt, dann ist das Grundgerüst für so ein Skript in einer halben Stunde errichtet.

Die Aufgabe hat mich interessiert und gereizt.
Hier ein Grundgerüst, das bei Bedarf noch mit ein paar Abfragen/Spezifikationen ergänzt werden könnte.

Code
//NAME: indexcrossreferences_by_list.jsx 
//DESCRIPTION:Erzeugt Querverweise im Index auf Basis einer Liste mit Begriffspaaren (QUELLE<TAB>ZIEL)
//AUTHOR: Martin Fischer
//DATE: 21.2.2013


main();

function main()
{
var _error = new Array;
var _index = (app.activeDocument.indexes.length > 0) ? app.activeDocument.indexes.firstItem() : app.activeDocument.indexes.add();
var list_file = File.openDialog('Liste auswählen'); // Listendatei wählen
if (list_file != null)
{
// Begriffspaare aus Listendatei ermitteln
var _list = readFile(list_file);
for (var i = 0; i < _list.length; i++)
{
// Paar auf Vollständigkeit prüfen
if (_list[i].length == 2)
{
// im Index Querverweis von Begriff 1 auf Begriff 2 erstellen
var _result = add_cr(_list[i][0], _list[i][1], _index);
if (_result != null)
_error.push(_result);
}
}
// Schlussmeldung
if (_error.length > 0)
alert ('Achtung!\r' + _error.join('\n'));
else
alert('Fertig!')
}
}

function add_cr(txt_source, txt_target, _index)
{
var topic_source = (_index.topics.itemByName(txt_source).isValid) ? _index.topics.itemByName(txt_source) : _index.topics.add(txt_source);
var topic_target = (_index.topics.itemByName(txt_target).isValid) ? _index.topics.itemByName(txt_target) : _index.topics.add(txt_target);
// Versuch, Querverweis anzulegen
try
{
var cr = topic_source.crossReferences.add(
{
referencedTopic: topic_target,
crossReferenceType: CrossReferenceType.CUSTOM_CROSS_REFERENCE,
customTypeString: 'siehe'
});
return null;
}
catch(e)
{
return txt_source + '-' + txt_target + ': Querverweis möglicherweise bereits vorhanden. ' + e;
}
}

function readFile( _file )
{
if ( _file.exists )
{
_file.open( 'r', undefined, undefined );
var file_contents = _file.read();
var _data = file_contents.split('\n');
for( var i = 0; i < _data.length; i++ )
_data[i] = _data[i].split('\t');
_file.close();
return _data
}
else
return null;
}


Erwartet wird eine externe Textdatei mit Begriffspaaren (Trennzeichen: Tabulator) wie im Beispiel:
Code
Totto	Lotto  
Lotto Totto
Harold Maude
Bonnie Clyde
Morgen Tageszeit
Mittag Tageszeit
Abend Tageszeit
Nacht Tageszeit
Morgen Flächenmaß


Kommst Du damit klar?


als Antwort auf: [#508725]
(Dieser Beitrag wurde von Martin Fischer am 21. Feb 2013, 06:09 geändert)

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

WernerPerplies
Beiträge gesamt: 2762

21. Feb 2013, 06:56
Beitrag # 6 von 11
Beitrag ID: #508728
Bewertung:
(14007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thiemo,

Zitat sorry, ich dachte die Aufgabe wäre ausführlich genug beschrieben.



das kann durchaus sein, aber meine Vorgehensweise bei einer Skriptprogrammierung unterscheidet sich grundsätzlich von der Vorgehensweise vieler Skriptprogrammierer.

Die Erstellung eines Skripts besteht normalerweise aus den folgenden Teilaufgaben:

Code
1. Verstehen, was ein Skript erledigen soll 
2. Prüfen, wie das Skript realisiert werden kann:
* Benutzeroberfläche
* Möglichkeiten der Fehlbedienung
* Fehlermöglickeiten bei der Programmierung
3. Erstellung des Skriptes
4. Wenn nicht vorhanden, Erstellung der Testdaten
5. Test unter besonderer Berucksichtigung von Grenzsituationen


Am aufwändigsten sind in der Regel 1,2,4,5
Die eigentliche Erstellung ist meistens schnell realisierbar.

Für mich wäre noch ein weiterer Punkt wichtig. Ein gutes Skript sollte auch ähnliche Aufgaben ohne Änderung durch den Endanwender erfüllen können.

Wenn Du Dir mal einige Beispiele hier im Forum an. Oft sieht das so aus:
Code
1. Beschreibung 
2. Realisierung
3. Anmerkungen, was im Skript zu ändern ist, um es an die spezielle Aufgabe anzupassen.
4, Test durch den Anwender
5. Mögliche Reaktionen:
* das Skript tut genau das was ich möchte - prima
* in Zeile X gibt es einen Fehler
* Dein, Skript ist schon gut, jetzt brauche ich aber noch (beliebig oft wiederholbar)
* Also bei meiner Datei funktioniert das nicht. ...


Ich schreibe Anwenderskripte selten ausschließlich für einen Kunden, sondern versuch daraus generelle Lösungen zu entwickeln und berechne dafür nur einen Teil der Entwicklungskosten.

Deshalb meine Fragen.

Aber ich habe gesehen, dass Martin Fischer schon eine Lösung erarbeitet hat, und damit wäre ja schon die Aufgabe erledigt.


als Antwort auf: [#508725]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

Martin Fischer
  
Beiträge gesamt: 12783

21. Feb 2013, 08:20
Beitrag # 7 von 11
Beitrag ID: #508732
Bewertung: ||
(13969 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Herr Perplies,

Antwort auf: meine Vorgehensweise bei einer Skriptprogrammierung unterscheidet sich grundsätzlich von der Vorgehensweise vieler Skriptprogrammierer.


Der Unterschied Ihrer speziellen Vorgehensweise bei der Skriptprogrammierung gegenüber der Vorgehensweise anderer Skriptprogrammierer ist mir noch nicht so ganz klar geworden.
Meinen Sie nicht, dass auch andere Skriptentwickler zu verstehen suchen, was ein Skript erledigen soll, sich überlegen, wie das Skript realisiert werden soll - unter Hinzunahme oder Erzeugung von Testdaten auch mit skriptkritischen Situationen? Wie anders wäre ein Skript zu entwickeln?

Gewiss gibt es Unterschiede im Anspruch an die Leistungsfähigkeit von Skripten.
M.E. muss ein Skript zum Nulltarif nicht zwingend die Ansprüche erfüllen, die zu Recht an eine Dienstleistung mit verabredeter Gegenleistung gestellt werden.


Antwort auf: Wenn Du Dir mal einige Beispiele hier im Forum an. Oft sieht das so aus:
(...)
* das Skript tut genau das was ich möchte - prima
* in Zeile X gibt es einen Fehler
* Dein, Skript ist schon gut, jetzt brauche ich aber noch (beliebig oft wiederholbar)
* Also bei meiner Datei funktioniert das nicht. ...


Skripte hier im Forum sind keine bezahlten Auftragsskripte und dürfen durchaus ihre Grenzen haben, auf die in der Regel auch hingewiesen wird.
Sie entstehen als Konzept aus dem Spaß an der Freude und sind am Ende ein Produkt des Austauschs von Fragestellern und interessierten Lesern im Forum – nicht das Produkt eines einklagbaren Auftrags zwischen einem Kunden und einem Dienstleister.

Wir befinden uns in der Skriptwerkstatt.
Da wird ausprobiert, gebastelt, getüftelt, repariert und Erfahrung ausgetauscht.
Das Ziel ist nicht ein wasserdichtes Programm, sondern eine pragmatische Hilfestellung. Im besten Fall eine Hilfe zur Selbsthilfe – so die Programmatik der HilfDirSelbst-Plattform.

Wir befinden uns nicht in einem Hörsaal, wo Profis und Experten oder Eliten dozieren.

Wir befinden uns auch nicht in einer Skriptproduktionsfirma oder einer Skriptschleuder, wo auf jede beliebige Bestellung ein Meisterstück zum Nulltarif produziert wird.

Die meisten hier aktiven Skripter sind keine hauptberuflichen Programmierer, sondern Graphiker, Layouter und Schriftsetzer, die zuerst mit Indesign arbeiten und sich zur Unterstützung bei der Arbeit bzw. zur Entledigung von lästigen, sich wiederholenden Handarbeiten Skripte als Behelf entwickeln. Da muss nicht alles auf Anhieb 'idiotensicher' funktionieren und da müssen nicht alle denkbaren, sondern nur alle konkret sich zeigenden Umstände (Pragmatismus) berücksichtigt werden. Die Lösungen, die in ihrer Einfachheit oft vorläufige sind, helfen auch in ihrer Unfertigkeit.

Die Skripter weisen in der Regel auf das Einsatzgebiet und auch auf die Grenzen des jeweiligen Skripts hin. Und die Anwender akzeptieren dies oder regen die eine oder andere Erweiterung an. So schleift sich ein einfaches Skript zu einem besseren. Und wie das hier in der Skriptwerkstatt geschieht – öffentlich und für jedermann einseh- und beobachtbar - das fasziniert mich hier als Lesender und Mitwirkender besonders: auch der Entwicklungsprozess als solcher, nicht nur das fertige Ergebnis, bietet Lernchancen.

Was hier manchmal nur skizzenhaft entwickelt wird, soll auch die Begeisterung für's Anwenden von Skripten und den Mut zur eigenen Entwicklung von Skripten entfachen.

Fragesteller wittern hier die Chance, einfache Krücken zur Entledigung von lästigen Routinearbeiten zu bekommen.
Skripter lassen sich von interessanten Aufgabenstellungen begeistern und betrachten die Skriptentwicklung nicht primär als eine hier eingeforderte Dienstleistung, sondern als eine Übung, ein Training, manchmal auch als eine Herausforderung für eine Tüftelei. Hier begegnet man Aufgaben, auf die man selbst oft nicht gekommen wäre und oft ergeben sich daraus Lösungen, von denen man am Ende selbst profitiert.

Freilich können sich über den Austausch im Forum auch Kontakte ergeben, die zu auftragsgebundenen Dienstleistungen außerhalb des Forums führen. Manches Schnipsel im Forum dient als Hinweis, was mit Skripten möglich ist, und als werbewirksamer Leckerbissen.
Dort draußen werden die Anforderungen mit Pflichten für beide Seiten verabredet und die Ziele klarer definiert, als es im Forum nötig ist.

Das Forum lebt auch von der Unschärfe und der Unfertigkeit der entwickelten Lösungen und Skripte.
Hier dürfen wir unvollkommen sein und auch mal einen Fehler machen.
Auch deswegen fühle ich mich hier wohl.

Antwort auf: Ein gutes Skript sollte auch ähnliche Aufgaben ohne Änderung durch den Endanwender erfüllen können.

So ein Skript kann hier entstehen, muss es aber nicht.
Es zwingt einen keiner dazu.
Manchmal kann man sich als Entwickler den Weg mit solchen Verabredungen und Hinweisen verkürzen. Wer's genauer, allgemeiner, sicherer und wasserdicht braucht, kann sich das gerne bestellen.
Weshalb dieser 'perfektionistische' Anspruch an kostenfreie Produkte, die sich im beratenden und unterstützenden Austausch ergeben?

Der Erwerb des Lebensunterhalts findet außerhalb des Forums statt.


als Antwort auf: [#508728]
(Dieser Beitrag wurde von Martin Fischer am 21. Feb 2013, 08:31 geändert)

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

WernerPerplies
Beiträge gesamt: 2762

21. Feb 2013, 08:50
Beitrag # 8 von 11
Beitrag ID: #508736
Bewertung:
(13944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Herr Fischer,

mein Beitrag diente nur der Erläuterung, warum ich mehr Informationen möchte und war in keinem einzigen Punkt als negative Kritik gedacht.

Ich stimme Ihren Ausführungen voll und ganz zu.


als Antwort auf: [#508732]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

ThiemoW.
Beiträge gesamt: 58

22. Feb 2013, 12:13
Beitrag # 9 von 11
Beitrag ID: #508847
Bewertung:
(13875 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
das Script ist ja prima. Super gelöst.
Herzlichsten Dank!!!
Erfüllt die Problemstellung sehr einfach und genial...
Ein winzig kleine Frage noch:
Du hast es jetzt so programmiert, dass das InDeisgn einen "siehe" Querverweis macht. Ginge das auch mit einem [Benutzerdefiniertem Querverweis], so wie InDesign das anbietet? Ich bräuchte bei uns nämlich nur zwei ">>" Zeichen ...
Ich glaube, ich muss mir mal ein Buch übers Scripten bezogen, dass ich so "Kleinigkeiten" selber anpassen kann : )

Danke nochmals und ein schönes Wochenende ...
Gruß,
Thiemo


als Antwort auf: [#508732]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

Martin Fischer
  
Beiträge gesamt: 12783

22. Feb 2013, 12:32
Beitrag # 10 von 11
Beitrag ID: #508850
Bewertung:
(13871 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thiemo,

Antwort auf: Du hast es jetzt so programmiert, dass das InDeisgn einen "siehe" Querverweis macht.


Nein, es handelt sich um einen Querverweis mit benutzerdefiniertem Text.
Aber diesen benutzerdefinierten Text habe ich auf 'siehe' programmiert. ;-)

Hier eine neue Version, wo Du den benutzerdefinierten Text in einem einfachen Dialog eingeben kannst.

Code
/* 
//NAME: indexcrossreferences_by_list.jsx
//DESCRIPTION:Erzeugt Querverweise im Index auf Basis einer Liste mit Begriffspaaren (QUELLE<TAB>ZIEL)
//AUTHOR: Martin Fischer
//DATE: 22.2.2013
*/

main();

function main()
{
var _error = new Array;
var str_usrdef = prompt('Benutzerdefinierter Text:', 'siehe');
if (str_usrdef == null) exit();
var _index = (app.activeDocument.indexes.length > 0) ? app.activeDocument.indexes.firstItem() : app.activeDocument.indexes.add();
var list_file = File.openDialog('Liste auswählen'); // Listendatei wählen
if (list_file != null)
{
// Begriffspaare aus Listendatei ermitteln
var _list = readFile(list_file);
for (var i = 0; i < _list.length; i++)
{
// Paar auf Vollständigkeit prüfen
if (_list[i].length == 2)
{
// im Index Querverweis von Begriff 1 auf Begriff 2 erstellen
var _result = add_cr(_list[i][0], _list[i][1], _index, str_usrdef);
if (_result != null)
_error.push(_result);
}
}
// Schlussmeldung
if (_error.length > 0)
alert ('Achtung!\r' + _error.join('\n'));
else
alert('Fertig!')
}
}

function add_cr(txt_source, txt_target, _index, str_usrdef)
{
var topic_source = (_index.topics.itemByName(txt_source).isValid) ? _index.topics.itemByName(txt_source) : _index.topics.add(txt_source);
var topic_target = (_index.topics.itemByName(txt_target).isValid) ? _index.topics.itemByName(txt_target) : _index.topics.add(txt_target);
// Versuch, Querverweis anzulegen
try
{
var cr = topic_source.crossReferences.add(
{
referencedTopic: topic_target,
crossReferenceType: CrossReferenceType.CUSTOM_CROSS_REFERENCE,
customTypeString: str_usrdef
});
return null;
}
catch(e)
{
return txt_source + '-' + txt_target + ': Querverweis möglicherweise bereits vorhanden. ' + e;
}
}

function readFile( _file )
{
if ( _file.exists )
{
_file.open( 'r', undefined, undefined );
var file_contents = _file.read();
var _data = file_contents.split('\n');
for( var i = 0; i < _data.length; i++ )
_data[i] = _data[i].split('\t');
_file.close();
return _data
}
else
return null;
}



als Antwort auf: [#508847]

InDesign-Querverweise automatisch erstellen lassen z.B. aus Excel-Liste?

ThiemoW.
Beiträge gesamt: 58

24. Feb 2013, 14:17
Beitrag # 11 von 11
Beitrag ID: #508924
Bewertung:
(13808 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

besten Dank noch mal für das Script und die Arbeit daran.
Funktioniert prima und super schnell.
ich habe es jetzt mehrfach getestet und eigesetzt.
Wenn man nun also die Querverweise in einem unformatiertem Textdokument abspeichert und im "nur Text" Format speichert klappt es hervorragend...
Das erleichtert der Redaktion die Arbeit dann schon sehr.

Ich hoffe, danke und hoffe, hiervon könne viele profitieren ...

Herzliche Grüße,

Thiemo


als Antwort auf: [#508850]
X