[GastForen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Forenindex -- Lesezeichen

3 Lesezeichen für kahrel

[JS] Indexeinträge im Umbruch visualisieren
Peter Kahrel hat in den letzten Tagen im Adobe Scripting-Forum zwei interessante CS3-Skripte zur Visualisierung von Indexeinträgen veröffentlicht, die ich hier festhalten möchte:

1. Taggen
Mit diesem Skript werden die Indexeinträge an Ort und Stelle in Tags dargestellt:
'<ix>Indexeintrag</ix>'. Untereinträge werden durch '#' separiert.

Code
index2text (app.activeDocument);  
//delete_index (app.activeDocument);

function index2text (doc)
{
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
tops[i].pageReferences[j].sourceText.contents =
'<ix>' + topic_path (tops[i], tops[i].name) + '</ix>';
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}


2. Inline-Graphiken
Im Unterschied zum o.g. Skript erscheinen die Indexeinträge nicht zwischen Tags, sondern werden in einen verankerten Textrahmen, der mit dem Objektstil 'sidebar' (muss vor Ausführung des Skripts angelegt sein) ausgezeichnet wird, eingefügt. Sie laufen damit im Text mit.

Code
index2text (app.activeDocument);  
//delete_index (app.activeDocument);

function index2text (doc)
{
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
{
var ip = tops[i].pageReferences[j].sourceText;
var p_ref = topic_path (tops[i], tops[i].name);
side_note (ip, p_ref)
}
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}

function side_note (ins_point, s)
{
var sidebar = ins_point.textFrames.add ();
sidebar.geometricBounds = [0,0,10,70];
sidebar.appliedObjectStyle = app.activeDocument.objectStyles.item ('sidebar');
sidebar.contents = s;
sidebar.fit (FitOptions.frameToContent);
}


Diese beiden Skriptversionen haben mir so gut gefallen, dass ich gleich noch eine kleine Änderung für InDesign CS4 vorgenommen habe. Die Indexeinträge werden hier an Ort und Stelle in bedingten Text ('Index') umgesetzt und können damit ein- und ausgeblendet werden.

Code
// index2conditionalText.jsx 
// Original by Peter Kahrel
// modified by Martin Fischer to take use of InDesign CS4 conditional text
// 04.12.2008

Object.prototype.get = function( )
{
try {
var myObject = this.item( arguments[0].name );
myObject.name;
}
catch (e) {
var myObject = this.add( arguments[0] );
}
return myObject;
}

index2text (app.activeDocument);
//delete_index (app.activeDocument);

function index2text (doc)
{
var myConditionSet = app.activeDocument.conditions.get( {name:'Index', indicatorMethod:ConditionIndicatorMethod.USE_HIGHLIGHT} )
var tops = doc.indexes[0].allTopics;
for (var i = 0; i < tops.length; i++)
for (var j = tops[i].pageReferences.length-1; j > -1; j--)
{
var ip = tops[i].pageReferences[j].sourceText;
var p_ref = topic_path (tops[i], tops[i].name);
conditional_note (ip, p_ref, myConditionSet)
}
myConditionSet.visible = false;
}

// create topic string. Subtopics are separated by '#'
function topic_path (top, str)
{
if (top.parent.constructor.name == 'Index')
return str;
else
return topic_path (top.parent, top.parent.name + '#' + str)
}

function delete_index (doc)
{
// delete page references and topics
doc.indexes[0].topics.everyItem().pageReferences.everyItem().remove();
doc.indexes[0].topics.everyItem().remove();
}

function conditional_note (ins_point, s, c)
{
ins_point.appliedConditions = c;
ins_point.contents = s;
}


Nach Ausführung des Skripts ist der bedingte Text 'Index' ausgeblendet.
Bei Bedarf kann der bedingte Text über die Suche-Ersetze Funktion wieder gelöscht werden (etwa für eine erneute Visualisierung der Indexeinträge nach einer Erweiterung derselben).
...
Martin Fischer
5. Dez 2008, 08:07
GREP - erste Versuche - Bedeutung der Klammern?!
> Eine gute Übersicht und Einführung findest Du auch ...

Inzwischen gibt es eine spezielle Einführung in GREP für InDesign CS3 als ShortCut von Peter Kahrel zum Download: GREP in InDesign CS3 (PDF)
...
Martin Fischer
17. Okt 2007, 01:56
frage an die scriptgelehrten
> Deutschsprachige Literatur zu diesem Thema ist m.W. derzeit noch nicht verfügbar.

Nun liegt die deutsche Übersetzung von Peter Kahrels "Scripting InDesign with JavaScript" als TecFeed bei O’Reilly zum Download (als PDF-Datei) vor:

InDesign mit JavaScript automatisieren
...
Martin Fischer
15. Aug 2007, 10:21

Aktuell

Diverses
Dateipfaden_FileMaker_300

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
21.11.2019 - 22.11.2019

Düsseldorf
Donnerstag, 21. Nov. 2019, 09.30 Uhr - Freitag, 22. Nov. 2019, 17.30 Uhr

Schulung, Seminar

Die „zweitägige Weiterbildung zum Cleverprinting-Datenchecker“ bietet wertvolles, komprimiertes Fachwissen. Diese Schulung ist eine Kombination aus vier Einzelschulungen: Colormanagement mit Photoshop, InDesign, Acrobat und PDF/X, PitStop. Sie ist inhaltlich exakt auf die Anforderungen der modernen Druckdatenprüfung ausgerichtet.

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/zweitaegige-weiterbildung-zum-cleverprinting-datenchecker/

Zweitägige Weiterbildung zum Cleverprinting-Datenchecker
Veranstaltungen
25.11.2019

Frankfurt/M
Montag, 25. Nov. 2019, 09.30 Uhr

Schulung, Seminar

Der eintägige „Kompaktkurs PDF-Druckdaten-Erstellung“ ist eine Zusammenfassung unserer erfolgreichen zweitägigen Colormanagement- und PDF/X-Schulungen. Der Kompaktkurs vermittelt dem Teilnehmer die Grundlagen des Colormanagements, der Verwendung von ICC-Druckprofilen, der PDF-Erzeugung und der PDF-Überprüfung mittels Acrobat Professional.

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/schulung-colormanagement-und-pdf-x-kompaktkurs/

Colormanagement und PDF/X – Kompaktkurs