InDesign automatisieren - Gregor Fellenz - ebook

InDesign automatisieren ebook

Gregor Fellenz

0,0

Opis

Mit Skripting können Sie sich das Leben erleichtern. Wer schon mal einen Arbeitstag mit dem immer gleichen Formatieren der Mikrotypografie, dem Austausch von Bilddaten oder dem Aktualisieren von Querverweisen zugebracht hat, dem leuchten die Vorzüge der Automatisierung unmittelbar ein. Die Hürde der vermeintlich zu technischen, schwierigen Skript-Erstellung nehmen Sie mit Gregor Fellenz leicht. Er führt Sie vom Suchen und Ersetzen mit GREP sanft in die InDesign-Automatisierung mit JavaScript. Die Programmierung und das InDesign-Objektmodell erklärt er an Praxisbeispielen. Screenshots der InDesign-Dialoge, die mit dem entsprechenden englischen Skripting-Code versehen sind, erleichtern Anfängern den Einstieg. Der"Kochbuch"-Teil stellt zahlreiche hilfreiche Skripte vor, die Routinearbeiten automatisieren oder den Funktionsumfang erweitern. Sie werden umfassend erklärt und stehen auf der Website des Buches zur Verfügung, so dass sie direkt eingesetzt oder leicht angepasst werden können. Gezeigt werden außerdem ein Skript- Workflow mit Word-Dateien, Skripte für die automatisierte Erstellung von E-Books im EPUB-Format, die Verarbeitung von XML-Dateien sowie Workflow-Konzepte und Best Practice aus der Satzautomatisierung. Auch Themen wie komplexe GREP-Anfragen, das Erstellen von Menü-Einträgen, Startup-Skripte, Events und Debugging finden Platz. Die Neuauflage wurde auf die Versionen CS6 und CC (bis 2014) aktualisiert. Neu sind Skripte zum CSV-Import, Verketten von GREP-Abfragen, Stapelverarbeitung und interaktive Funktionen. GREP und Skripting sind kein Hexenwerk. Mit diesem Referenzwerk kann es jeder lernen - solide InDesign-Kenntnisse vorausgesetzt - und so effizienter arbeiten, Fehler vermeiden und Zeit für kreative Tätigkeiten gewinnen.

Ebooka przeczytasz w aplikacjach Legimi na:

Androidzie
iOS
czytnikach certyfikowanych
przez Legimi
Windows
10
Windows
Phone

Liczba stron: 570

Odsłuch ebooka (TTS) dostepny w abonamencie „ebooki+audiobooki bez limitu” w aplikacjach Legimi na:

Androidzie
iOS



Gregor Fellenz

InDesign automatisieren

Keine Angst vor Skripting, GREP & Co2., aktualisierte und erweiterte Auflage

dpunkt.verlag

Buchnavigation

> Buch lesen

> Haupttitel

> Inhaltsübersicht

> Teil I   Einstieg in die InDesign-Automatisierung

> Teil II   InDesign-Programmierung mit JavaScript

> Teil III   Automatisierung in der Praxis

> GREP-Referenz

> Informationen zu Gregor Fellenz

> Impressum

Inhaltsverzeichnis

EinleitungVorwort zur 2. AuflageMehr aus InDesign herausholenVerwendung dieses BuchsTeil I   Einstieg in die InDesign-Automatisierung1   Schöner suchen und ersetzen mit GREP1.1   Der Suchen/Ersetzen-Dialog1.2   Die Suche mit Regulären Ausdrücken1.3   Praxisbeispiel Preisliste1.4   Intelligenter ersetzen1.5   GREP-Stile2   Skripte in InDesign verwenden2.1   Skripte installieren2.2   Versteckte Perlen – InDesigns Skripte2.3   Skripte zum Download3   Adobe ExtendScript Toolkit4   Skripte verstehen und verändern4.1   Die wunderbare Welt der Programmierung4.2   Hello World4.3   Textrahmen formatieren4.4   Spaltenbreite festlegen4.5   Mit Text arbeiten4.6   Bilder auf Blitzer prüfen4.7   Seiten und Objekte finden4.8   Suchen und Ersetzen per Skript4.9   Suchen, finden und verändern5   Fehlersuche5.1   Häufige Fehler und Lösungen5.2   Hilfe findenTeil II   InDesign-Programmierung mit JavaScript6   Einführung in JavaScript6.1   Warum JavaScript?6.2   Was ist JavaScript?6.3   Wie es aussehen muss – Syntax6.4   Variablen6.5   Zahlen und Zeichenketten6.6   Datenkraken – Objekte6.7   Entscheidungen treffen – Abfragen und Verzweigungen6.8   Arbeit wegschaffen – Schleifen6.9   Arrays6.10   Schleifen über Arrays und Sammlungen6.11   Eigene Funktionen und Methoden6.12   Etwas ausprobieren – Fehlerbehandlung6.13   Mit Dateien arbeitenExkurs  Unicode7   InDesign-Objektmodell7.1   Objekte und Klassen7.2   Das InDesign-Objektmodell verstehen7.3   Objekte analysieren7.4   Sammlungen7.5   Gemeinsame Methoden und Eigenschaften7.6   Voreinstellungen7.7   Seiten und Mustervorlagen7.8   Rahmen und Seitenobjekte7.9   Textrahmen7.10   Mit Texten arbeiten7.11   Tabellen7.12   Bilder und Verknüpfungen7.13   Interaktive Seitenobjekte7.14   Suchen und Ersetzen7.15   Dokumente7.16   Benutzerinteraktion und Dialogfenster7.17   Target und Session ++7.18   Events ++8   Debugging mit dem ESTK9   Programmierkonzepte9.1   Format- und Mustervorlagen9.2   Schritte der Skripterstellung9.3   Best Practice9.4   Ein Skript-Template nutzenTeil III   Automatisierung in der Praxis10   Noch mehr finden mit GREP10.1   GREP-Abfragen automatisieren10.2   Die besten GREP-Tools10.3   Grenzen und Übergänge10.4   Doppelte Wörter finden10.5   GREP-Performance10.6   Ausschau halten10.7   Unicode und GREP10.8   Weitere Zeichenklassen10.9   Mit der Zwischenablage arbeiten10.10   GREPs formatieren und kommentieren10.11   Vornamen abkürzen10.12   Anführungszeichen und Apostrophe10.13   Zifferngruppen bilden10.14   Festabstände10.15   GREP-Stile in alle Absatzformate kopieren10.16   Leerraum vereinheitlichen ++11   Skripting-Kochrezepte11.1   Laufweite und Umbruch11.2   Marginalien11.3   Transparente Absatzlinien11.4   Fußnoten in Endnoten umwandeln11.5   Bilder und Metadaten11.6   Bildunterschriften interaktiv11.7   Tabellen suchen und ersetzen11.8   CSV-Dateien importieren11.9   Zoom per Skript11.10   Alle Dokumente schließen11.11   Stapelverarbeitung eines Ordners11.12   Backup beim Speichern anlegen11.13   Eigene Einträge im Menü erstellen12   Skript-Workflow mit Word-Dateien12.1   Vorhandene Daten und Zielstellung12.2   Das Skript planen12.3   Word-Dateien importieren12.4   Formatierte Texte auswerten12.5   Den Index generieren13   Dokumente für E-Books optimieren13.1   Reflowable E-Books im EPUB-Format exportieren13.2   Problematische Zeichen prüfen13.3   Lokale Formatabweichungen13.4   Format- und Dateinamen in Ordnung bringen13.5   Verwendete Formate anzeigen und einsammeln13.6   Bilder im Textfluss verankern13.7   Bilder-Preflight für EPUB14   InDesign und XMLExkurs  XML-Grundlagen14.1   XML in InDesign14.2   Zusammenspiel von XML und InDesign14.3   Skripting mit XML14.4   XML-Elemente mit XPath suchenAnhangA1 GREP-ReferenzMetazeichen für die SucheMetazeichen für die ErsetzungSonderzeichen für Suche und ErsetzungA2 Ressourcen und LiteraturReguläre AusdrückeJavaScriptEPUBXMLInDesign/TypografieIndex
[Buchnavigation]

Einleitung

Vorwort zur 2. Auflage

Nachdem sich Anfang 2014 abzeichnete, dass die erste Auflage bald ausverkauft sein würde, sagte ich zu meiner Lektorin Barbara Lauer, dass ein Update schnell gemacht wäre. Knapp ein Jahr später weiß ich, dass diese Einschätzung falsch war. Auch wenn der bewährte Aufbau des Buches grundlegend gleich geblieben ist, sind nur wenige Seiten von einer Überarbeitung gänzlich verschont worden.

Das hat verschiedene Gründe: Zunächst natürlich viele Neuigkeiten und Erleichterungen in InDesign CS6 und CC – alle Referenzen auf ältere Versionen habe ich entfernt, damit das Buch übersichtlich bleibt. Aber auch Erfahrungen aus Schulungen, Gesprächen und Feedback zur ersten Auflage wollten eingearbeitet werden.

Besonders zu erwähnen ist das aus meinem Schulungskonzept übernommene Beispielskript, das die Einführung in JavaScript in Kapitel 6 begleitet. Einige Kochrezepte sind entfallen, dafür neue Beispiele aus meiner täglichen Praxis hinzugekommen – erwähnenswert ist der Umgang mit CSV, die Realisierung von Stapelverarbeitungen sowie das Verketten von GREP-Abfragen. Außerdem wurde das Buch mit Beispielen zum Skripting der interaktiven Funktionen erweitert.

Im Bereich E-Book hat sich so viel verändert, dass das komplette Kapitel ausgetauscht werden musste. Hier habe ich den Fokus auf das Skripting des Exports gelegt, die eigentliche Erstellung von E-Books musste entfallen – hier gibt es inzwischen viele andere gute Quellen.

Mehr aus InDesign herausholen

Adobe InDesign hat sich zu einem der wichtigsten Desktop-Publishing-Programme entwickelt und ist aus der professionellen Gestaltung und Produktion von Druckerzeugnissen kaum mehr wegzudenken. Die meisten Anwender verwenden allerdings nur die offensichtlichen und gebräuchlichsten Funktionen und Features. Viele Möglichkeiten gehen in der Fülle der Funktionen unter oder es bleibt schlicht keine Zeit, sich während des Tagesgeschäfts damit auseinanderzusetzen. Selbst gestandene InDesign-Profis lernen immer wieder neue Arbeitsweisen hinzu.

 

Die Produkte, die mit InDesign erstellt werden, sind außerordentlich vielfältig. Die Bereiche der professionellen Anwendung gehen von der klassischen Druckvorstufe über die Erstellung von digitalen Medien bis zu serverbasierten Web2Print-Lösungen. Entsprechend vielseitig sind auch die Szenarien und Workflows, in denen InDesign eingesetzt wird.

Wer sollte InDesign automatisieren?Eine Automatisierung lohnt sich meist nur, wenn wiederkehrende Aufgaben zu lösen oder große Datenmengen zu verarbeiten sind. Klassische Beispiele sind die Katalogproduktion, technische Dokumentationen oder die Buchherstellung. Aber auch die Erstellung von Zeitschriften, Magazinen, Broschüren sowie ganz allgemein von Periodika lässt sich durch Automatisierung gut unterstützen. Im Bereich der digitalen Medien können sowohl E-Books als auch digitale Magazine mit Hilfe von Skripting effizienter erstellt werden.

Es liegt in der Natur der Sache, dass sich das kreative Gestalten eines neuen Corporate Designs, einer Werbeanzeige oder Ähnlichem kaum automatisieren lässt. Doch selbst in diesem Bereich lassen sich mit Skripting-Kenntnissen Variationen einer Gestaltung erstellen, beispielsweise kann man generell alle Schriftgrößen um einen bestimmten Prozentwert verringern. Denn auch hier gilt: Statt ständig zehnmal klicken, lieber einmal programmieren.

Unabhängig davon kann eine Automatisierung auch die regelbasierte Gestaltung unterstützen, da Ausnahmen einen höheren Aufwand bedeuten und dadurch neu hinterfragt werden. Es muss auch nicht immer eine ausgefeilte Layoutautomatisierung sein – manchmal helfen schon kleine Skripte oder das Wissen über die beeindruckenden Möglichkeiten der Suchen/Ersetzen-Funktion mit GREP weiter.

 

Suchen und ersetzen mit GREPGREP bietet unabhängig vom Skripting eine oft übersehene Möglichkeit, Anforderungen, die an Dokumente gestellt werden, schnell und effizient zu lösen. Mit GREP können komplexe Suchanfragen und Ersetzungsanweisungen definiert werden, die den Arbeitsalltag ganz erheblich erleichtern. Dazu werden Reguläre Ausdrücke verwendet, die auch in anderen Programmen zum Einsatz kommen.

 

SkriptingEine weitere Möglichkeit ist die Programmierung von InDesign mit selbst erstellten Skripten. Wer »langweilige« oder sich immer wiederholende Arbeiten automatisieren kann, spart viel Zeit, um sich auf die wesentlichen Aufgaben zu konzentrieren. Ich würde sogar sagen, dass die Möglichkeit der Programmierung oder besser gesagt des Skriptings das beste und produktivste Feature von InDesign ist.

Fast alles, was Sie mit der normalen Benutzeroberfläche realisieren können, kann auch über ein Skript erreicht werden. Ob Sie eine neue Seite anlegen, einen Textrahmen aufziehen oder einen Absatz formatieren wollen – per Skript ist das alles kein Problem. Skripte erlauben sogar noch mehr: Mit ihnen kann man eigene Menüs definieren oder auf Benutzeraktionen reagieren.

 

E-Books und XMLNeben GREP und Skripting wird die Zweitverwertung von gedruckten Inhalten in digitaler Form immer wichtiger. Die hier verwendeten Technologien EPUB für E-Books und XML als Schnittstelle zu strukturierten Datenbeständen oder sogar Datenbanken werden meist mit Hilfe von Skripten optimiert oder überhaupt erst möglich gemacht.

Gerade in diesem Bereich zeigt sich auch die Entwicklung hin zu schnelleren Produktionszyklen und dem damit einhergehenden Zeit- und Kostendruck. Oft müssen die elektronischen Publikationen zeitgleich mit dem Printwerk erhältlich sein. Mit Kenntnissen im Bereich Automatisierung kann man diesen Entwicklungen entspannt entgegensehen.

 

Welche Versionen werden beschrieben?Das Skripting von InDesign ist in den Versionen CS6 bis CC 2014 weitgehend identisch. Das hier vorgestellte JavaScript kann plattformunabhängig auf Windows und Mac OS eingesetzt werden.

Wenn sich Unterschiede in der Programmierung ergeben, sind diese im Buch durchgehend gekennzeichnet. Beispieldaten wurden gegebenenfalls für alle notwendigen Versionen erstellt.

 

An wen richtet sich das Buch?Jeder kann InDesign automatisieren! Das Buch setzt lediglich solide InDesign-Grundkenntnisse voraus. Erfahrungen in einer Skript- oder Programmiersprache sind von Vorteil, werden aber nicht vorausgesetzt. Ich habe den Anspruch, auch Anfänger auf dem Weg zur InDesign-Automatisierung zu begleiten!

Die Einführung in die Automatisierung kann jedem gelingen. Die Beispiele sind aus dem Arbeitsalltag von Mediengestaltern, Grafikern und Verlagsherstellern entnommen. Aber auch Medieninformatiker oder Webdesigner werden viele praxisorientierte Hinweise für die Produktion von Printmedien finden.

 

Wer kann skripten?Viele Anwender schrecken vor der Hürde der Programmierung zurück. Doch liegen gerade darin unermessliche Möglichkeiten, sich das Arbeitsleben einfacher zu machen. Etwas überspitzt könnte man sagen: »Nur ein fauler Mensch macht produktive Skripte.« Denn wer kein Problem damit hat, hundertmal denselben Arbeitsschritt auszuführen, anstatt einen Kaffee zu trinken, der braucht auch keine Automatisierung.

Zugegeben, das erste Mal sind die nackten Codezeilen eher abschreckend und man weiß oft nicht, wo man anfangen soll. Wer sich allerdings auf die Reise begibt, wird bald feststellen, dass das Themengebiet logisch aufgebaut ist und sich mit dem richtigen Einstieg meistern lässt.

Außerdem macht Programmieren Spaß. Das glauben Sie nicht? Sobald Sie Ihren eigenen Skripten bei der Arbeit zuschauen, werden Sie Ihre Meinung ändern. Lassen Sie sich nicht vom ersten Fehler entmutigen – das Verständnis fürs Programmieren entwickelt man leider nicht über Nacht.

 

JavaScriptIn diesem Buch wird das Skripting anhand der Skriptsprache JavaScript erläutert, die sowohl auf Windows- als auch Mac OS-Systemen eingesetzt werden kann. Genauer gesagt wird die erweiterte JavaScript-Implementierung von Adobe mit dem Namen ExtendScript verwendet.

JavaScript wird auch für die Programmierung von Webseiten benutzt. Leider ist nur der Sprachkern identisch, der Umgang mit dem Browser bzw. InDesign aber völlig verschieden.

Danksagung

Ich möchte mich bei allen, die an der Entstehung dieses Buches beteiligt waren, bedanken. Dazu zählt vor allem Rebecca, die das Projekt von der ersten Idee bis zur Endkorrektur unterstützt hat.

Besonders hervorheben möchte ich auch meine Lektorin Barbara Lauer, die mir stets motivierend und konstruktiv zur Seite stand, die Gutachter der ersten Auflage Sarah Schäfer, Nadine Thiele, Marco Morgenthaler, Marko Hedler, Martin Fischer, Gerald Singelmann und Tobias Fischer, die mir viele wichtige Anregungen und Hinweise gegeben haben. Ein Dank gilt auch meinen Eltern, die das komplette Manuskript Korrektur gelesen haben. Für die zweite Auflage kamen wichtige Inspirationen von Yves Apel, Klaas Posselt, Kai Rübsamen, Uwe Laubender und Stefan Göbel.

Viele weitere Personen, die Anregungen für einzelne Skripte geliefert haben, werden im Verlauf des Buches genannt.

Verwendung dieses Buchs

Das Buch ist als Praxis- und Lernbuch aufgebaut, das didaktische Konzept beruht auf den Erfahrungen verschiedener Schulungen und meiner Lehrveranstaltung an der Hochschule der Medien in Stuttgart. Alle Skripte werden besprochen und, wann immer möglich, durch Beispieldokumente erläutert. Unabhängig davon kann vor allem der zweite Teil auch als Nachschlagewerk verwendet werden.

Das Buch ist in drei Teile gegliedert. Der erste Teil bietet einen sanften Einstieg in die Programmierung und Automatisierung von InDesign. Der zweite Teil ist eine systematische Einführung in die InDesign-Programmierung mit JavaScript. Der dritte Teil enthält praxisorientierte Kochrezepte für konkrete Problemstellungen.

I. Teil

Der Einstieg über die Suche und Ersetzung mit GREP in Kapitel 1 bietet eine in sich geschlossene Heranführung an die abstrakte Formulierung von Lösungen, wie sie auch beim Skripting üblich ist. Kapitel 2 zeigt, wie Skripte in InDesign installiert werden und wie Sie diese produktiv einsetzen können. In Kapitel 3 wird das ExtendScript Toolkit, das Werkzeug für die Erstellung von Skripten, vorgestellt. In Kapitel 4 werden einfache Skripte für alltägliche Praxisprobleme im Detail besprochen. Alle Skripte werden zeilenweise diskutiert und können anhand von Beispieldokumenten ausprobiert werden. Dieses Kapitel enthält alle wichtigen Programmiermethoden, behält aber den Fokus auf einem möglichst sanften Einstieg. An vielen Stellen verweist es auf den systematischen Einstieg im zweiten Teil des Buchs. Kapitel 5 enthält nützliche Tipps zur Fehlersuche und verrät, wo man Hilfe bekommen kann.

II. Teil

Der zweite Teil beginnt in Kapitel 6 mit einer systematischen Einführung in die Programmiersprache JavaScript. Hier werden alle wichtigen Programmiermethoden und -konzepte für die InDesign-Automatisierung vorgestellt. Das Kapitel schließt mit einem Exkurs zum Thema Unicode, dem Standard für die Kodierung von Zeichen in Schriften und Dateien. Kapitel 7 dreht sich um das InDesign-Objektmodell. Dieses Kapitel enthält den Schlüssel zur InDesign-Programmierung, es ist als praxisorientierte Referenz aufgebaut. Zu allen Themen finden Sie wieder dokumentierte Beispielskripte.

In Kapitel 8 wird das Debugging, das »Fehlerfinden«, mit dem ExtendScript Toolkit besprochen. Kapitel 9 stellt Programmierkonzepte für die Automatisierung von Printprodukten vor und zeigt Best-Practice-Beispiele für gute Skripte.

III. Teil

Der dritte Teil ist thematisch in fünf Bereiche aufgeteilt. Zunächst wird das Thema GREP in Kapitel 10 vertieft und mit Praxisbeispielen abgerundet. Hier sei auch auf die GREP-Referenz Anhang A1 verwiesen, die alle Metazeichen für die Suche mit GREP enthält.

Kapitel 11 enthält Rezepte für konkrete Aufgabenstellungen. Sie können die einzelnen Unterkapitel losgelöst voneinander bearbeiten. Für alle Skripte gibt es Beispieldokumente.

In Kapitel 12 wird ein umfassender Automatisierungs-Workflow mit Word-Dateien vorgestellt. Hier wird eine Word-Datei per Skript in ein nahezu fertig gestaltetes InDesign-Dokument überführt.

Kapitel 13 stellt den Export für E-Books im Format EPUB vor. Der Schwerpunkt liegt auf Skripten für die Optimierung des Exports.

In Kapitel 14 wird der Umgang von InDesign mit XML vorgestellt. Neben den normalen Programmfunktionen werden auch die Möglichkeiten per Skripting erörtert.

Wegweiser durch das Buch

Für einen umfassenden Einstieg können Sie Teil I und II durchgehend lesen. Alternativ können Sie das Buch auch mit dem Schwerpunkt GREP bzw. Skripting durcharbeiten.

 

Schwerpunkt GREPFalls Sie sich zunächst nur für die Suche und Ersetzung mit Regulären Ausdrücken interessieren, ist Kapitel 1 der richtige Einstieg für Sie. Im Unterkapitel 10.1 wird gezeigt, wie man mehrere GREP-Abfragen hintereinander ablaufen lassen kann. Weitergehende GREP-Techniken finden Sie in Kapitel 10, das sich in einen Theorie- (→ Unterkapitel 10.2 bis 10.10) und Praxisteil aufteilt (→ Unterkapitel 10.11 bis 10.16). Eine vollständige GREP-Referenz finden Sie hier.

 

Schnelleinstieg SkriptingWenn Sie bereits Programmiererfahrung haben und direkt mit dem Skripting beginnen wollen, ist der folgende Fahrplan empfehlenswert: Informieren Sie sich in Unterkapitel 2.1 über Installation und Ausführung von Skripten. Springen Sie dann zu Kapitel 3 und erlernen Sie die Verwendung der Entwicklungsumgebung ExtendScript Toolkit. Nach einem kurzen Abstecher zum Skript Hallo Welt im Unterkapitel 4.2 können Sie sich in Teil II systematisch in die Programmierung mit JavaScript einarbeiten. Auf wichtige Techniken, die im ersten Teil vorgestellt wurden, wird im Text verwiesen. Bei Ihrem ersten Skriptfehler springen Sie zurück zu Kapitel 5, das sich mit häufigen Fehlern beschäftigt.

 

Schnelleinstieg JavaScript-ProfiWenn Sie schon Erfahrung in JavaScript gesammelt haben, empfehle ich die folgenden Kapitel: Nach der Übersicht über die Installation von Skripten in Unterkapitel 2.1 informieren Sie sich in Kapitel 3 über die IDE ExtendScript Toolkit. Nun können Sie direkt in die Beschreibung des InDesign-Objektmodells in Kapitel 7 einsteigen. Bei Ihrem ersten Skriptfehler springen Sie nochmal zurück zu Kapitel 5, das sich mit häufigen Fehlern beschäftigt. Werfen Sie auch ein Blick auf die Best-Practice-Konzepte in Kapitel 9.

Webseite zum Buch

Für dieses Buch habe ich die Webseite http://www.indesignjs.de eingerichtet. Hier finden Sie alle digitalen Informationen zum Buch sowie aktuelle Neuigkeiten. Über meinen Twitter-Account @grefel veröffentliche ich außerdem aktuelle Informationen zum Buch und zur InDesign-Automatisierung

LinkverkürzerDa niemand zeilenlange Internetadressen aus einem Buch abtippen möchte, habe ich für die meisten Adressen einen Linkverkürzer eingerichtet. Sie erkennen diese Links an dem Symbol. Die darauffolgende Zahl müssen Sie mit der Adresse indesignjs.de kombinieren. Für  18 müssen Sie also http://www.indesignjs.de/18 in die Adresszeile des Browsers eingeben.

Skripte und Beispieldaten

Mit alle Daten als ZIP-Archiv herunterladenIch habe alle Skripte und die Beispieldaten, die im Buch erwähnt werden, auf GitHub zur Verfügung gestellt. Sie können die Daten unter https://github.com/grefel/indesignjs  2 herunterladen.

Schriften

In allen Beispieldokumenten werden die Schriften Alegreya und Alegreya Sans von Juan Pablo del Peral verwendet  139. Sie können bei www.fontsquirrel.com  140 kostenfrei heruntergeladen werden.

InDesign-Skripting-Kurzreferenz

Zum Buch gehört eine InDesign-Skripting-Kurzreferenz mit einer Übersicht der wichtigsten Objekte, Eigenschaften und Methoden des InDesign-Objektmodells. Sie können ein PDF unter http://www.indesignjs.de/idskurzreferenz.pdf  1 herunterladen.

... und außerdem

!¡HinweisDie notwendige Reduktion der Komplexität führt leider manchmal dazu, dass die Skripte nur in den beschriebenen Situationen funktionieren. Um unerwünschte Nebeneffekte auszuschließen, sollten Sie die Skripte nur dann in einem produktiven Umfeld einsetzen, wenn Sie verstanden haben, wie diese genau funktionieren. Spätestens am Ende des ersten Teils sollten Sie die Fähigkeit erlangt haben, die Wirkungen und Nebenwirkungen von Skripten zu verstehen, aber vor allem können Sie dann die Skripte an Ihre eigenen Anforderungen anpassen!

 

ExkurseIn vielen Fällen kommt man bei der Automatisierung mit Technologien in Berührung, über die man ein eigenes Buch schreiben könnte. Damit das Buch auch für Leser ohne Vorkenntnisse lesbar bleibt, habe ich an diesen Stellen kurze Exkurse eingefügt. Diese bieten nur einen minimalen Einstieg und ersetzen nicht das Studium der Technologie. Im Anhang finden Sie Internetressourcen und Buchempfehlungen.

++ ExpertenEinige Themen und Konzepte richten sich an fortgeschrittene Anwender. Diese Bereiche sind wie dieser Absatz hervorgehoben und in der Marginalspalte gekennzeichnet.

ErrataDas Buch ist sicher nicht umfassend und trotz vieler Tests nicht fehlerfrei. Eventuelle Fehler werden auf http://www.indesignjs.de im Bereich Errata veröffentlicht.

Zu den vorgeschlagenen Lösungen gibt es sicher auch Alternativen, die im Rahmen dieses Buches nicht alle dargestellt werden können. Gerne veröffentliche ich interessante Lösungsalternativen auf der Webseite zum Buch. Schicken Sie Ihre Ideen mit einem Hinweis, dass diese zur Veröffentlichung gedacht sind, an [email protected] Sie werden zusammen mit weiteren Themen im Bereich Neuigkeiten veröffentlicht.

Tastenkombinationen

Die geläufigen Tastenkombinationen von InDesign setze ich voraus, besonders wichtige oder praktische erwähne ich im Text. Die meisten Tastenkombinationen von InDesign sind unter Windows und Mac identisch. Für die Taste STRG unter Windows wird unter Mac OS cmd bzw. ⌘ verwendet. Im Buch fasse ich die beiden Tasten mit Befehl zusammen.

Formatierungen und deren Bedeutung

Hervorhebungen, wichtige Begriffe, Konzepte oder Techniken sowie Dateinamen und Pfade

Kursiv

Navigation zu Befehlen über InDesign-Menüs und Shortcuts sowie Bezeichnungen von InDesign-Dialogen, Bedienfeldern und Menüs

Datei → Neu

Suchanfragen und Ersetzungsanweisungen für die Arbeit mit GREP

Such- oder Ersetzungstext

Code oder Codebestandteile, die im Text erwähnt werden

Code

Hervorhebungen im Code

Fett

Hinweise auf wichtige Themen in der Marginalspalte

Hinweis auf fortgeschrittene Themen in der Marginalspalte

++

Linkverkürzer, die Zahl in Kombination mit der Adresse http://www.indesignjs.de führt Sie zur Webseite.

 18

Feedback

Ich freue mich über jedes Feedback, Kritik oder Verbesserungsvorschläge und natürlich auch über Fehlermeldungen. Sie können mich unter [email protected] erreichen.

[Buchnavigation]

Teil I   Einstieg in die InDesign-Automatisierung

In diesem Teil möchte ich Sie bei Ihren ersten Schritten begleiten. Der Einstieg ist in drei Bereiche aufgeteilt. Zunächst wird das Suchen und die Ersetzung mit GREP vorgestellt (→ Kapitel 1). Im zweiten Bereich liegt der Fokus auf dem Einsatz von Skripten und wie diese verändert werden können (→ Kapitel 2 bis Kapitel 4). Den Abschluss bildet eine Übersicht zur Fehlersuche in Skripten (→ Kapitel 5).

Der Einstig über die GREP-Funktion bringt Ihnen die »Programmiererlogik« anhand von konkreten Beispielen in einem überschaubaren Themengebiet näher. Die dann folgenden Kapitel zum Thema Skripting sind einfach und übersichtlich gehalten. Sie werden in den Beschreibungen viele Verweise auf den zweiten Teil finden, in dem der Fokus auf einer detaillierten und systematischen Einführung in die Sprache JavaScript und das InDesign-Objektmodell liegt.

Wenn Sie Kapitel 4 durchgehen und dabei das erste Mal programmieren, sollten Sie diese Verweise ignorieren und sich zunächst darauf konzentrieren, ein Gefühl für den Programmablauf und die Zusammenhänge zu bekommen. Zeit für Details bleibt danach immer noch.

Wer schon andere Programme geskriptet oder in anderen Zusammenhängen programmiert hat, dem wird vieles bekannt vorkommen. Für die Leser mit Hintergrundwissen sind auch die Verweise in den zweiten Teil des Buches gedacht. Die Einführung kann in diesem Fall trotzdem hilfreich sein, da sie zeigt, wie Sie Ihre Programmiererfahrung in InDesign einsetzen können. Außerdem erhalten Sie einen guten Überblick, was und wie mit Skripting sinnvoll automatisiert werden kann.

1   Schöner suchen und ersetzen mit GREP

Bei der Arbeit in InDesign kommt man oft mit der Suchen/Ersetzen-Funktion in Berührung. Viele Anwender beschränken sich auf die Suche nach bestimmten Texten, die gegebenenfalls durch andere Texte ersetzt werden. Dies ist allerdings nur das kleinste und einfachste Werkzeug aus dem großen Suchen/Ersetzen-Werkzeugkasten.

Reguläre AusdrückeInDesign bietet ab der Version CS3 neben der normalen Suchfunktion die Suche mit Regulären Ausdrücken bzw. GREP [1]. Hier haben Sie die Möglichkeit, nach Textmustern (z.B. Zahlen, Leerräumen, Großbuchstaben etc.) zu suchen. Ein Beispiel ist die Suche nach allen Zahlen von 0 bis 9 mit einem einzigen Suchbefehl. Die gefundenen Zeichen können dann bei der Ersetzung wiederverwendet werden. Stellen Sie sich vor, Sie müssten alle Seitenverweise in einem Dokument von der Form (S. 100) in die Form → Seite 100 bringen. Mit GREP brauchen Sie dafür nur eine Ersetzungsanweisung, weil die unterschiedlichen Seitenzahlen in der Ersetzung wieder eingesetzt werden.

Seit InDesign CS4 gibt es zusätzlich die Möglichkeit, in Absatzformaten so genannte GREP-Stile festzulegen. Hier werden bestimmte Zeichenfolgen definiert, die besonders formatiert werden sollen. Typisch wäre die Kleinerschaltung von Ziffern im Buchsatz oder die Hervorhebung von Namen. In InDesign CS6 wurden zwei Befehle hinzugefügt, die bei der Suche nach Leerräumen und Absätzen hilfreich sind.

 

Auf den ersten Blick sehen die Suchanfragen unübersichtlich und kompliziert aus. Dies ist der Abstraktion geschuldet, die gleichzeitig erst die Mächtigkeit der Suchausdrücke ermöglicht. Solange die Anfragen präzise und logisch formulierbar sind, kann man praktisch alles finden.

Reguläre Ausdrücke sind mit einigen Grundlagen schnell zu erlernen. Für den produktiven Einsatz ist es auch gar nicht notwendig, die letzten Details und Kniffe zu kennen. Statt theoretisch Möglichkeiten zu diskutieren, ist es oft hilfreicher, das grundsätzliche Prinzip zu verstehen und bei schwierigen Anfragen zu wissen, wie man weiterkommt.

 

Im Folgenden stelle ich typische Suchanfragen vor, die man am besten mit GREP lösen kann. Im weiteren Verlauf des Buches werden noch komplexere Such- bzw. Ersetzungsanweisungen (→ Kapitel 10) und Möglichkeiten zum Skripten von GREP-Anfragen besprochen (→ Unterkapitel 4.8).

1.1   Der Suchen/Ersetzen-Dialog

Wenn Sie mit Befehl + F den Suchen/Ersetzen-Dialog aufrufen, sehen Sie die vier Registerkarten für die verschiedenen Suchtypen und die Bedienelemente für die Ausführung der Anweisungen. Der Dialog ist übrigens nicht modal, d.h., Sie können zwischen Dokument und Dialog hin und her wechseln und z.B. per Copy & Paste Text, Leerräume und Sonderzeichen aus dem Dokument übernehmen.

Abbildung 1   Suchen/Ersetzen-Dialog

Mit den Registerkarten Text und GREP können Texte durchsucht und Ersetzungen vorgenommen werden. Der Aufbau und die Such-Optionen der beiden sind nahezu gleich. In der Registerkarte GREP hat man die Möglichkeit, mit Regulären Ausdrücken zu arbeiten.

Mit der Registerkarte Glyphe können bestimmte Zeichen anhand ihrer ID, mit der Registerkarte Objekt Rahmen anhand von Attributen gesucht werden. Diese Registerkarten werden in diesem Buch nicht vorgestellt, weil man sie in der Praxis nur selten benötigt.

 

Die Registerkarte GREPDie Registerkarte GREP enthält die Texteingabefelder Suchen nach und Ändern in, die Buttons zur Einstellung der Such-Optionen und die Felder für die Formateinstellungen.

Im Suchen- bzw. Ändern-Feld werden die Regulären Ausdrücke für Suchanfragen bzw. Ersetzungsanweisungen eingetragen. Für die Arbeit mit Regulären Ausdrücken werden einige Platzhalter und Zeichen mit einer speziellen Bedeutung benötigt. Diese finden Sie neben den Feldern im Flyout-Menü des -Buttons.

Unter den Texteingabefeldern kann mit einer Dropdown-Liste der Bereich, der durchsucht werden soll, festgelegt werden. Im Normalfall finden Sie hier die Auswahl zwischen allen Dokumenten und dem aktiven Dokument. Wenn sich die Einfügemarke beim Aufruf des Dialogs in einem Text befindet, finden Sie zusätzlich die Möglichkeiten, den aktuellen Textabschnitt oder den Textabschnitt von der Einfügemarke bis zum Ende zu durchsuchen. Der Textabschnitt beinhaltet den Text des Textrahmens oder den Text der miteinander verketteten Rahmen. Falls Sie einen Text ausgewählt haben, gibt es noch die Möglichkeit, die Auswahl zu durchsuchen.

Such-OptionenUnterhalb der Dropdown-Liste können die Such-Optionen eingestellt werden. Mit ihnen kann festgelegt werden, welche Bereiche durchsucht werden sollen. Im Normalfall ist nur die Suche innerhalb von Fußnoten eingeschaltet. Weiterhin kann man für die Suche und Ersetzung auch die Musterseiten und ausgeblendete Ebenen miteinbeziehen. Gesperrte Ebenen bzw. Objekte und gesperrte Textabschnitte können nur bei der Suche berücksichtigt werden. Zu den Such-Optionen zählt auch die ab InDesign CC vorhandene Möglichkeit, Vorwärts bzw. Rückwärts zu suchen.

Im Gegensatz zu der Textsuche sind in der Registerkarte GREP keine Buttons für die Suche nach einem ganzen Wort und für die Beachtung der Groß-/Kleinschreibung vorhanden. Diese Einstellungen werden bei Regulären Ausdrücken im Suchausdruck festgelegt.

Die Suchen/Ersetzen-Funktion von InDesign geht weit über das Suchen und Ersetzen von Buchstaben, Wörtern oder Satzteilen hinaus. InDesign bietet die Möglichkeit, die Suche mit der Angabe von Textformatierungen und Absatzattributen weiter zu verfeinern. Bei der Ersetzung können alle diese Formateinstellungen dann geändert bzw. gesetzt werden. Diese Einstellungen werden in den Feldern Format suchen bzw. Format ersetzen angezeigt. Mit der Lupe gelangen Sie zur Formatauswahl, mit dem Mülleimer können Sie die Formateinschränkungen wieder entfernen.

Abbildung 2   Fette Textstellen kursiv formatieren

Vermutlich ist Ihnen auch schon aufgefallen, dass der Dialog alle Einstellungen nach dem Schließen beibehält. InDesign vergisst die Einstellungen erst beim Neustart des Programms.

 

Suchen/Ersetzen-Abfragen abspeichernEs können auch komplette Suchen/Ersetzen-Abfragen abgespeichert werden. Dazu finden Sie im Dialog eine Dropdown-Liste und den Button zum Speichern bzw. Löschen der aktuellen Abfrage. Interessante Abfragen kann man so für die spätere Verwendung speichern. Beim Skripting kann man auf die so gespeicherten Abfragen wieder zugreifen. Mit Hilfe des Skripts ChainGREP.jsx können diese Abfragen verkettet und gesammelt ausgeführt werden (→ Unterkapitel 10.1).

1.2   Die Suche mit Regulären Ausdrücken

Zum Einstieg empfiehlt es sich, einfach Suchanfragen auszuprobieren. Wenn Sie alle Vorkommen in einem Dokument ersetzen, sollten Sie allerdings Vorsicht walten lassen, da die Gefahr besteht, dass ungewollte Ersetzungen durchgeführt werden.

Zur besseren Übersichtlichkeit sind alle Suchanfragen und Ersetzungsanweisungen in diesem Kapitel grau hinterlegt.

Das Einfachste vorab: Ganz normale Suchtexte funktionieren auch mit GREP. Wenn nach Max gesucht wird, kann der Name durch Moritz ersetzt werden.

1.2.1   Zeichen mit spezieller Bedeutung

Mit Regulären Ausdrücken kann man variable Zeichenketten suchen und Suchergebnisse präzise eingrenzen. Diese Flexibilität wird dadurch erreicht, dass einige Zeichen eine besondere Bedeutung haben.

MetazeichenWenn man z.B. im Texteingabefeld Suchen ~S eingibt, findet InDesign geschützte Leerzeichen und nicht die beiden Zeichen ~ und S. Hier wird ein Sonderzeichen durch die Kombination aus dem Tilde-Zeichen mit einem anderen Buchstaben dargestellt. Das Tilde-Zeichen ist hier ein Metazeichen. Metazeichen stehen nicht für sich selbst, sondern haben eine besondere Bedeutung.

MaskierungNeben dem Tilde-Zeichen gibt es noch einige weitere Zeichen, die eine spezielle Bedeutung haben. So findet man z.B. mit dem Punkt . nicht nur das Satzendzeichen, sondern fast jedes beliebige Zeichen. Wenn nur nach einem Punkt gesucht wird, muss die besondere Bedeutung aufgehoben werden. Dies geschieht mit einem vorangestellten Backslash. Nach einem Punkt muss also mit \. gesucht werden. Diese Aufhebung der Bedeutung von Zeichen mit spezieller Bedeutung nennt man Maskierung (engl. escape) – sie wird übrigens ganz ähnlich auch beim Skripting benötigt.

In Regulären Ausdrücken gibt es Zeichen, um Sonderzeichen zu erzeugen, die Suche genauer zu steuern oder etwas im Suchausdruck zu markieren. Diese Zeichen müssen alle mit dem Backslash maskiert werden, wenn sie buchstäblich gefunden werden sollen. Der Backslash zählt auch dazu und wird mit \\ gefunden.

!¡Metazeichen bei der Suche mit GREP\ . * + ? ( ) { } [ ^ $ | ~

!¡In InDesign CS6 funktioniert \$ nicht. Verwenden Sie [$]Wenn man wo bist du? finden möchte, muss man nach wo bist du\? suchen. Zunächst ist es nur wichtig, die Metazeichen zu kennen. Sie werden im Verlauf des Kapitels vorgestellt.

Die Idee, die Suchanfragen mit Metazeichen zu verfeinern, gab es auch schon vor InDesign CS3 in der normalen Textsuche. Dort gibt es z.B. die Möglichkeit, mit ^p nach einem Absatzende oder mit ^? nach einem beliebigen Zeichen zu suchen. Hier wird das Caret-Zeichen (Zirkumflex) ^ zur Kennzeichnung von Zeichen mit spezieller Bedeutung verwendet. Wenn man es finden möchte, muss man es ebenfalls mit ^^ maskieren. Diese Möglichkeiten sind für die Textsuche in der Registerkarte Text erhalten geblieben.

Die Problematik mit den Metazeichen ist der einzige Grund, zuweilen noch die normale Suche in der Registerkarte Text zu verwenden. Wenn man nur eine bestimmte Zeichenfolge sucht, muss man sich dort (mit Ausnahme des Caret-Zeichens) nicht um die Maskierung kümmern.

1.2.2   Variable Zeichen auswählen

PlatzhalterDie wichtigsten GREP-Befehle sind die so genannten Platzhalter (engl. wildcard), mit denen unterschiedliche Zeichen gefunden werden. Sie ermöglichen eine unscharfe Suche nach Zeichengruppen wie allen Kleinbuchstaben oder allen Ziffern.

Die im Folgenden vorgestellten Zeichen mit einer speziellen Bedeutung finden Sie im Flyout-Menü neben dem Suchen/Ersetzen-Textfeld.

Abbildung 3   Platzhalter Flyout-Menü

Beliebige Zeichen findenDer wichtigste und einfachste Platzhalter ist der Punkt .. Mit ihm kann jedes beliebige Zeichen, mit Ausnahme vom Absatzende (hierzu zählen der normale Zeilenumbruch und auch alle anderen Umbruchzeichen wie z.B. Seitenumbruch) und dem harten Zeilenumbruch (Soft-Return) , gefunden werden. Mit .. würde man zwei beliebige aufeinanderfolgende Zeichen finden. Platzhalter repräsentieren eine bestimmte Menge an Zeichen und werden deswegen als Zeichenklassen bezeichnet.

Die Suche nach Max. findet nicht nur Max., sondern auch Maxi mit i und ohne Punkt sowie alle anderen Formen von Max0 bis Max:. Mit der Suche nach d.. könnte man z.B. alle Wörter finden, die mit d beginnen und mindestens drei Buchstaben lang sind.

Ein Platzhalter trifft genau ein Zeichen. Wenn Sie einen Punkt in das Suchen-Feld eingeben und die Suche mehrmals ausführen, wird ein Zeichen nach dem anderen gefunden. Um die Verwendung von Zeichenklassen zu verdeutlichen, greife ich auf das nächste Unterkapitel vor und führe die Möglichkeit ein, mit dem Plus-Zeichen mehrere Zeichen vom gleichen Typ zu suchen. Wenn man ein + hinter eine Zeichenklasse setzt, wird das erste und alle folgenden zusammenhängenden Zeichen der Zeichenklasse gefunden. Wenn man das Plus-Zeichen mit der Zeichenklasse Punkt kombiniert .+, werden entsprechend alle Zeichen bis zum Absatzende oder einem harten Zeilenumbruch gefunden.

Zeichenklassen

Neben dem Punkt gibt es noch einige andere nützliche Zeichenklassen. Diese werden alle aus Kombinationen mit dem Backslash gebildet.

Mit \u findet man einen beliebigen Großbuchstaben, mit \l einen Kleinbuchstaben. Mit M\l+ findet man entsprechend alle Wörter, die mit einem großen M beginnen und denen Kleinbuchstaben folgen: Max, Moritz, Montag, Mars usw., aber nicht MacOS.

Entsprechend findet man mit \u\l+ alle Wörter, die mit einem Großbuchstaben beginnen, mit \l+ alle kleingeschriebenen.

Abbildung 4   Verhalten von Platzhaltern

Eine weitere wichtige Zeichenklasse sind Zahlen. Alle Ziffern von 0 bis 9 können mit \d gefunden werden. Alle beliebigen Ziffern in einem Text finden Sie mit \d+. Später zeige ich noch die Möglichkeit, auch Ziffern mit Nachkommastellen in den Suchausdruck miteinzubeziehen.

Mit \s findet man alle Leerräume, also u.a. Leerzeichen, geschützte Leerzeichen , Festabstände wie z.B. Halbgeviert , den Tabulator und Zeilenschaltungen bzw. .

Die Platzhalter \h und \v wurden in InDesign CS6 eingeführt.Mit InDesign CS6 hat Adobe die Platzhalter \h für alle horizontalen Leerräume (Leerzeichen, Tabulator etc.) und \v für alle vertikalen Leerräume (Absatzende und harter Zeilenumbruch) eingeführt. Bei anspruchsvollen Layouts, in denen mikrotypografische Anpassungen vorgenommen werden sollen, kann man mit \h sehr gut verschiedene Kombinationen suchen und durch eine Ersetzung vereinheitlichen. Mit dem Suchausdruck \d\hmm findet man z.B. alle Kombinationen einer Zahl und der angehangenen Maßeinheit mm unabhängig vom Leerraum, der dazwischen verwendet wurde.

 

Zeichenklassen negierenAußerdem hat man die Möglichkeit, die Bedeutung der Zeichenklassen umzudrehen, d.h. also alle Zeichen, die ihr nicht entsprechen, zu suchen. So kann man mit \D alles außer Ziffern finden – hier findet man neben Buchstaben auch Leerräume, Satzzeichen etc.

Tabelle 1   Oft verwendete vordefinierte Zeichenklassen

Zeichenklasse

Beschreibung

.

Ein beliebiges Zeichen, aber nicht das Absatzende (Return) oder einen erzwungenen Zeilenumbruch (Soft-Return)

\u

Alle Großbuchstaben (engl. uppercase). Findet keine elektronisch versal gestellten Texte.

\l

Alle Kleinbuchstaben (engl. lowercase)

\d

Alle Ziffern (engl. digits) 0–9. Keine Brüche und nur elektronisch hoch- oder tiefgestellte Zahlen.

\s

Alle Leerräume, also Leerzeichen, alle Festabstände, Tabulatoren und Umbruchzeichen (engl. space). Fälschlicherweise auch das selten verwendete »Einzug bis hierhin«- Zeichen .

\h

Alle horizontalen Leerräume: Leerzeichen, alle Festabstände und den normalen Tabulator (nicht den Tabulator für rechte Ausrichtung).

Zeichenauswahl

Im Flyout-Menü finden Sie die Zeichenauswahl unter Entsprechung → ZeichensatzEtwas genauer als mit Zeichenklassen kann man mit einer Zeichenauswahl suchen. Hier können die Zeichen, die gesucht werden sollen, selbst festgelegt werden – man kann sozusagen seine eigene Zeichenklasse definieren. Eine Zeichenauswahl wird innerhalb von eckigen Klammern [] festgelegt. So findet man mit dem Ausdruck S[kc]ript die Variationen Skript und Script. Innerhalb der eckigen Klammern können beliebig viele Zeichen eingetragen werden, die im Suchtreffer an der entsprechenden Position vorkommen können. Ein anderes Beispiel wäre die Suche nach Buch[st][st]abe, mit der man z.B. Buchstabendreher zwischen s und t auflösen kann. Mit der Suche nach [gjpqy] wiederum würde man alle Buchstaben mit Unterlängen finden – bei kursiven Schriften kämen noch f und ß hinzu.

Noch flexibler wird eine Zeichenauswahl durch die Möglichkeit, Bereiche festzulegen. Bereiche werden mit einem Bindestrich zwischen dem ersten und letzten Zeichen des Bereichs definiert. Die Anfrage 200[5-9] findet alle Jahreszahlen zwischen 2005 und 2009. Mit der Anfrage [A-N] findet man alle Großbuchstaben zwischen A und N. Solche Bereiche kann man gut zur Formatierung von Listen, in denen z.B. Produktnummern nach einem bestimmten Schema festgelegt sind, verwenden. Vorstellbar ist z.B. eine Produktnummer, die mit 1 oder 2 beginnt, dann mit einem Buchstaben zwischen A und N weitergeht, gefolgt von noch zwei weiteren Ziffern. Der passende Ausdruck dafür wäre [12][A-N]\d\d.

Negative ZeichenauswahlWeiterhin können auch negative Zeichenmengen angegeben werden. Hier kann man Zeichen festlegen, die nicht vorkommen dürfen. Dies wird mit dem Zirkumflex bzw. Caret-Zeichen ^ erreicht. Die Anfrage InDesign CS[^3-9] findet alle InDesign CS-Versionen vor CS3, wobei die Version CS auch ohne die Ziffer 1 gefunden wird, da das folgende Zeichen – vermutlich ein Leerzeichen – ebenfalls nicht in der Menge aller Zeichen zwischen 3 und 9 enthalten ist. Genauso könnte man mit Abbildung\h[^\d] alle Abbildungslegenden finden, die noch keine Nummerierung haben.

Innerhalb der Zeichenauswahl gibt es andere Metazeichen, hier haben nur die schließende eckige Klammer ], der Zirkumflex ^, das Tilde-Zeichen ~ und der Bindestrich (Divis) – eine besondere Bedeutung. Für die Maskierung braucht man wieder den Backslash. Zwischen den eckigen Klammern sind nur die folgenden Zeichen reserviert:

!¡Metazeichen bei der Festlegung einer Zeichenauswahl] ^ - \ ~

Die im vorhergehenden Abschnitt genannten Metazeichen haben hier keine besondere Bedeutung mehr und müssen nicht maskiert werden. Die Suche nach [.\~] findet Punkte und Tilde-Zeichen. Die Maskierung des Bindestrichs kann am Ende der Zeichenauswahl entfallen [.\~-].

 

Innerhalb einer Zeichenauswahl können auch Zeichenklassen eingesetzt werden. Mit [\d,] findet man Zahlen mit Nachkommastellen – eventuell muss noch der Punkt hinzugefügt werden.

Mit [\dA-N]+ würde man wieder die oben erwähnte Produktnummer finden. Diese Anfrage ist aber weit weniger präzise, weil Reihenfolge und Länge der Nummer nicht festgelegt sind.

Wörter findenMit dem Ausdruck [\u\l\-]+ könnte man die Zeichenklassen von Groß- und Kleinbuchstaben sowie den Bindestrich suchen, also praktisch alle Wörter. Vielleicht kennen oder finden Sie die Zeichenklasse \w, die »offiziell« für diesen Zweck gedacht ist. Mit \w findet man jedoch alle Buchstaben, Zahlen und den Unterstrich, für die Suche nach Wörtern ist das eher unbrauchbar.

E-Mail-Adressen findenAls weitere praktische Anwendung stelle ich die Suche nach einer E-Mail-Adresse vor. Dreh- und Angelpunkt ist das @-Zeichen. Vor dem @ dürfen sich Buchstaben, Zahlen und Unterstriche befinden, die mit \w gefunden werden können. Da aber auch Punkte und Bindestriche erlaubt sind, muss eine eigene Zeichenklasse gebildet werden [\w.-]+. Nach dem @-Zeichen sind die gleichen Zeichen erlaubt. Zur genaueren Eingrenzung sollte die Domainendung, die sich hinter einem Punkt befindet und nur noch aus den Zeichen a–z bestehen darf, angefügt werden \.[a-z]+. Zusammengefügt ergibt sich der Ausdruck [\w.-][email protected][\w.-]+\.[a-z]+. Bitte beachten Sie, dass E-Mail-Adressen sehr komplex sein können und mit der hier vorgestellten GREP-Suche nur die üblichen Varianten gefunden werden.

Alternativen

Wenn man nicht nach Zeichenmengen, sondern nach variierenden Wortteilen suchen möchte, müssen die Variationen in runde Klammern geschrieben und mit dem senkrechten Strich | unterteilt werden.

Die Suche nach (Java|Apple|VB)Script findet alle drei Programmiersprachen innerhalb des Textes. Genauso kann natürlich auch einfach nach zwei alternativen Wörtern gesucht werden – (Nela Malou|Silke) findet beide Vorkommen im Text. Es liegt auf der Hand, dass diese Suchanfrage deutlich präziser ist als die ebenfalls erfolgreiche Suche nach allen Buchstaben der beiden Namen mit [NMSelaouik]+.

1.2.3   Sonderzeichen

Viele Zeichen können nicht direkt in die Such- bzw. Ersetzungsanfrage eingegeben werden. So ist es z.B. nicht möglich, eine Zeilenschaltung direkt in das Texteingabefeld einzugeben. Bei anderen Zeichen ist dies zwar prinzipiell möglich, aber ein geschütztes Leerzeichen wäre im Texteingabefeld nicht von einem normalen Leerzeichen zu unterscheiden. Die dritte Klasse bilden die Zeichen mit einer besonderen Bedeutung. Wenn die eigentlichen Zeichen gefunden werden sollen, müssen diese, wie am Anfang beschrieben, mit dem Backslash maskiert werden.

 

Tabulator und Zeilenumbrüche werden in Regulären Ausdrücken mit dem Backslash erzeugt. Einen oder mehrere Tabulatoren findet man z.B. mit dem Suchausdruck \t+.

Tabelle 2   Standardsonderzeichen für die Suche mit Regulären Ausdrücken

GREP

Zeichen

Beschreibung

\t

Tabulator

\r

, , …

Absatzende bzw. Zeilenschaltung (Return), aber auch Rahmenumbruch, Seitenumbruch etc.

\n

Erzwungener Zeilenwechsel (Soft-Return)

Alle weiteren Sonderzeichen werden mit der Tilde ~ erzeugt. Alle Sonderzeichen, die so erzeugt werden, finden Sie nach Bereichen sortiert im zweiten und dritten Bereich des Flyout-Menüs neben dem Suchen-Feld.

Abbildung 5   Sonderzeichen-Auswahl im Suchen/Ersetzen-Dialog

Nach einem geschützten Leerzeichen sucht man z.B. mit ~S, nach bedingten Trennzeichen mit ~-. Interessant ist die Möglichkeit, dass auch Indexmarken ~I, verankerte Objekte ~a und Textvariablen ~v gesucht werden können.

 

Grundsätzlich können Sie alle Zeichen auch per Copy & Paste in die Texteingabefelder des Suchen/Ersetzen-Dialogs einfügen. InDesign erzeugt dann automatisch die richtige Kombination mit der Tilde. Die folgende Tabelle zeigt einige oft gebräuchliche Sonderzeichen, eine vollständige Übersicht finden Sie im Anhang A1.

Tabelle 3   InDesign-Sonderzeichen in Regulären Ausdrücken

GREP

Zeichen

Beschreibung

~S

Geschütztes Leerzeichen

~m

Geviert

~>

Halbgeviert

~<

Achtelgeviert

~b

Standardzeilenumbruch

~=

Halbgeviertstrich, Gedankenstrich

~-

-

Bedingter Trennstrich

~y

Tabulator rechte Ausrichtung

~I

Indexmarke

~a

Marker für verankerte Objekte

~v

Alle Textvariablen

\~

~

Tilde

Kombinationen mit der Tilde gelten nur in InDesign und können nicht in anderen Programmen, die Reguläre Ausdrücke unterstützen, eingesetzt werden.

Sonderzeichen und Zeichenklassen können in einem alternativen Suchausdruck oder einer eigenen Zeichenklasse kombiniert werden. So könnte man der Zeichenklasse \h mit dem Ausdruck (\h|~y) bzw. [\h~y] den fehlenden Tabulator rechte Ausrichtung hinzufügen.

++ Unicode-Zeichen findenNeben diesen festgelegten Zeichen gibt es auch die Möglichkeit, ein Zeichen über den Unicode-Codepoint festzulegen. Dazu muss der hexadezimale Codepoint des Zeichens bekannt sein. Nach dem Zeichen ¾ suchen Sie mit \x{00BE}, das €-Symbol finden Sie mit \x{20AC}. Den Codepoint eines markierten Zeichens kann man in InDesign in der Mitte des Informationsfensters ablesen (Fenster → Informationen). Weitere Informationen zu Unicode finden Sie hier. Im Kapitel 10.7 werden weitere Suchtechniken vorgestellt.

Abbildung 6   Informationen-Bedienfeld

Wenn der Codepoint dort zu sehen ist, können Sie das Zeichen aber genauso gut per Copy & Paste in die Texteingabefelder des Dialogs befördern. Die Definition eines Zeichens mit \x{####} benötigt man nur, wenn ein Unicode-Zeichen gesucht wird, dessen Codepoint aus einer Tabelle oder einem anderen Programm bekannt ist.

1.2.4   Wiederholungen

Eine weitere wichtige Technik in Regulären Ausdrücken ist es, die Anzahl von Wiederholungen eines Zeichens oder einer Zeichenklasse festzulegen. Das Wiederholungszeichen +, mit dem man mehrere Zeichen finden kann, wurde bereits verwendet.

Abbildung 7   Wiederholung Flyout-Menü

Wiederholungszeichen

Immer wenn man nicht genau weiß, ob ein Suchbegriff oder Zeichen im Text vorkommt, kann man das Wiederholungszeichen ? verwenden (im Menü Null oder ein Mal). So könnte man z.B. alle Vorkommen von das und dass mit der Suchanfrage dass? prüfen. Mit (Max)? Mustermann finden Sie jede Erwähnung von Herrn Mustermann – mit und ohne Vorname. Das Wiederholungszeichen, auch Quantifizierer genannt, bezieht sich immer auf das vorhergehende Zeichen, eine Zeichenklasse oder das vorhergehende Wort in runden Klammern. Es kann nicht alleine stehen.

Mit einem + wird festgelegt, dass ein Suchausdruck mindestens einmal vorkommen muss, aber beliebig oft vorkommen darf (im Menü Ein oder mehrere Male). Wenn Sie z.B. mehrere Leerzeichen hintereinander zu einem einzigen vereinheitlichen wollen, kann man mit + eine beliebige Anzahl von Leerzeichen finden. Verwenden Sie dazu nicht \s+, da in der Zeichenklasse auch die Absatzschaltungen enthalten sind und Sie eventuell die Kombination Leerzeichen Return entfernen würden.

Ein Plus bietet sich oft an, um den Rest eines Absatzes oder den variablen Text zwischen zwei bekannten Zeichenfolgen zu finden. Wenn ein beliebiger Text, z.B. die Beschreibung nach einer Produktnummer oder vor dem Preis, gesucht wird, helfen die speziellen Zeichenklassen meist nicht weiter, da die Beschreibung fast alle Zeichen enthalten kann. Angenommen einer wie oben geformten Produktnummer folgt eine Produktbeschreibung, z.B. 1G78 Staubsauger. Die Nummer inklusive Beschreibung finden Sie jetzt mit [12][A-N]\d\d\h.+ – es wird sogar 1G79 Staubsauger mit Beutel gefunden oder 1H32 Wischmops.

Wenn man nicht genau weiß, ob das Zeichen oder die Zeichenklasse überhaupt vorkommt, kann mit einem * auch nach beliebig vielen Vorkommen gesucht werden (im Menü Null oder mehrere Male, korrekt wäre die Bezeichnung Beliebig oft). Der Suchbegriff kann keinmal, einmal oder beliebig oft vorkommen. Im Unterschied zum ? findet man mit dem * eine beliebige Anzahl von Zeichen – mit jaa* findet man ja, jaa, jaaa usw. Dies ist z.B. nötig, um nach einer Zahl zu suchen, die eventuell Nachkommastellen haben kann. Der Suchausdruck \d+,?\d* findet sowohl 15 als auch 14,9999, wobei die Anzahl der Nachkommastellen nicht relevant ist. Im Suchausdruck könnte man auch das Komma mit einem * versehen. Dies wäre aber nicht besonders präzise, weil bei einer Zahl mit Nachkommastellen genau ein, bei einer Zahl ohne Nachkommastellen genau kein Komma enthalten ist.

Abbildung 8   Wiederholungen

Achten Sie darauf, dass das Sternchen in Kombination mit nur einem Zeichen immer trifft – eine solche Suche ist also nicht sinnvoll. Beispielsweise findet x* an jeder Position des Textes entweder ein oder kein x.

Tabelle 4   Wiederholungsfaktoren in Regulären Ausdrücken

Wiederholungszeichen

Beschreibung

?

Das Zeichen oder die Zeichenklasse ist optional, d.h., sie kann einmal oder keinmal vorkommen.

+

Der Suchbegriff muss mindestens einmal, kann aber beliebig oft vorkommen.

*

Der Suchbegriff kann beliebig oft vorkommen – also auch keinmal.

Suchverhalten der Wiederholungszeichen

InDesign versucht normalerweise den längsten Treffer zu ermitteln.Die Wiederholungszeichen + und * finden immer so viele Zeichen wie möglich. Sie suchen so lange weiter, bis sie den größtmöglichen passenden Suchausdruck gefunden haben. Das ist auch der Grund, warum man mit .+\. nicht den ersten Satz eines Absatzes auswählen kann, wie man vielleicht vermuten könnte. In diesem Ausdruck sammelt das + beliebige Zeichen vom Absatzbeginn bis zum letzten Vorkommen eines Punkts und damit meist den ganzen Absatz. Dieses Verhalten wird als gierig (engl. greedy) bezeichnet.

Das Fragezeichen hat je nach Kontext unterschiedliche Bedeutungen.Um die Wiederholungszeichen zu zügeln, kann ein Fragezeichen verwendet werden. Hinter einem Wiederholungszeichen bedeutet es, dass nur die kleinstmögliche Anzahl Treffer gefunden werden soll. Mit dem Ausdruck .+?\. wird nur noch der erste Satz eines Absatzes gefunden. Das Fragezeichen hat also mehrere Bedeutungen: Hinter einem Zeichen oder einer Zeichenklasse bewirkt es, dass das Suchzeichen im Treffer ein- oder keinmal vorkommen darf. Hinter einem Wiederholungszeichen regelt es, dass so wenige Zeichen wie möglich gefunden werden.

Das Fragezeichen sollte immer eingesetzt werden, wenn die Gefahr besteht, dass die nächste Fundstelle nach einem Wiederholungszeichen nicht eindeutig ist. Wenn z.B. in Klammern gesetzter Text gesucht wird (also dieser hier), ist es durchaus möglich, dass innerhalb des Absatzes noch ein weiterer Text in runden Klammern steht (hier ist der zweite). Wenn man nun mit einem gierigen Wiederholungszeichen \(.+\) sucht, findet man den gesamten Text von der ersten bis zur letzten runden Klammer. Hier sollte man stattdessen mit dem Ausdruck \(.+?\) arbeiten. Achten Sie auch darauf, dass die spezielle Bedeutung der Klammern durch die Maskierung mit dem Backslash aufgehoben werden muss.

Genaue Anzahl der Vorkommen festlegen

Noch genauer kann mit geschweiften Klammern {} festgelegt werden, wie oft ein Zeichen oder eine Zeichenklasse vorkommen darf. Eine Zahl innerhalb der geschweiften Klammern legt fest, wie viele Vorkommen des Zeichens oder der Zeichenklasse erlaubt sind. So findet man mit \d{4} alle vierstelligen Zahlen.

Wenn man einen Wiederholungsbereich festlegen möchte, muss die minimale und maximale Anzahl der Vorkommen angegeben werden. Beide Werte werden durch ein Komma getrennt. Zwei- oder dreistellige Zahlen findet man entsprechend mit \d{2,3}.

Tabelle 5   Genaue Anzahl von Wiederholungen festlegen

Wiederholungen

Beschreibung

{n}

Der Ausdruck muss exakt n-mal vorkommen.

{n,m}

Der Ausdruck muss mindestens n-mal und darf maximal m-mal vorkommen.

{n,}

Der Ausdruck muss mindestens n-mal und darf öfter vorkommen.

1.2.5   Genaue Positionen ermitteln

SuchbereichEine Suche kann oft durch Positionsangaben im Suchbereich noch genauer eingegrenzt werden. Standardmäßig endet der Suchbereich nach dem Absatzende oder dem harten Zeilenumbruch – dem ersten Zeichen, das nicht von . gefunden wird.

Beginn des SuchbereichsMit dem ^ kann festgelegt werden, dass der folgenden Suchausdruck am Beginn eines Absatzes oder nach einem harten Zeilenumbruch stehen muss. Der Ausdruck ^\s+ findet Leerräume zu Beginn eines Absatzes oder nach einem harten Zeilenumbruch sowie leere Absätze – und damit wahrscheinlich Fehler.

Ende des SuchbereichsDas Ende des Suchbereichs kann mit $ markiert werden. Wenn Sie wissen, dass in einer Liste am Ende jedes Absatzes der Preis mit der Währungsangabe EUR steht, können Sie mit dem Ausdruck \d+,\d+EUR$ sehr präzise danach suchen. Das Zirkumflex bzw. Caret-Zeichen muss vor dem Suchausdruck, das Dollar-Zeichen nach dem Suchausdruck stehen.

In Listen aus Datenbanken oder Tabellenkalkulationsprogrammen wie Excel stehen einzelne Datensätze meist in einer Zeile (= Absatz). Vorausgesetzt im Staubsauger-Beispiel würden die Produktnummern und Beschreibungen jeweils in einer eigenen Zeile stehen, könnte man die Suche mit dem Ausdruck ^[12][A-N]\d{2}\s.+$ noch weiter verfeinern.

 

WortgrenzeMit dem Zeichen \b kann der Anfang oder das Ende eines Wortes, also eine Wortgrenze (engl. word boundary) bestimmt werden. Mit der Suche nach \b[\u\l]*mal\b findet man mal, einmal, zweimal, dreimal, aber auch Einmal usw. Mit der Suche nach \bZeit\l*\b findet man Wörter wie Zeit, Zeitpunkt, Zeitraum etc.

Positionsangaben wie \b, ^, $ usw. definieren nur die Grenzen bzw. Positionen, sie treffen nicht die Zeichen, die die Grenze definieren. Ein $ trifft bei der Suche nicht die Zeilenschaltung am Ende des Absatzes.

1.2.6   Noch mehr finden

Der . findet alle Zeichen bis auf die Umbruchzeichen am Absatzende \r und den erzwungenen Zeilenumbruch \n. Der Ausdruck .+ endet also spätestens, wenn er auf eines der beiden Zeichen trifft.

 

SuchmodusWenn Sie über mehrere Absätze suchen wollen, kann die Suche in den Einzeilenmodus umgeschaltet werden. In diesem Modus wird der gesamte Text als eine Zeile interpretiert. Genauer gesagt werden die Zeichen \r und \n auch vom . getroffen. Der Einzeilenmodus wird mit (?s) (single line mode) zu Beginn des Suchausdrucks eingeschaltet. Mit (?s).+ findet man den gesamten Text eines Textabschnitts auf einmal. Die Suchmodi finden Sie im Flyout-Menü unter Modifizierer.

Wenn Sie die Unterscheidung in Groß- und Kleinschreibung ausschalten wollen, erreichen Sie dies über den Modus (?i) (case insensitive). Der Ausdruck (?i)z\.B\. findet entsprechend Z.B., z.B. und auch die fehlerhaften Z.b. oder z.b.

Die beiden Modi könnten auch in der Form (?is) kombiniert werden, die Reihenfolge ist egal. Wenn Sie Leerräume bei der Suche mit (?x) ignorieren, gehört das x ebenfalls in die Klammer.

1.3   Praxisbeispiel Preisliste

Als Praxisbeispiel stelle ich die Entwicklung eines Regulären Ausdrucks vor, der verschieden formatierte Preisangaben in einer Preisliste findet. Die Beispiele finden Sie im Dokument 1-3_Preisliste.idml  aus dem Download-Bereich https://github.com/grefel/indesignjs  2 des Buches. Die Datei liegt im Ordner Teil_I.

Listing 1   1-3_Preisliste.idml 

1Einfache Zeichenklasse 1 EUR

2Zeichenklasse mit Wiederholung 300 EUR

3Preis und Währung 50 EUR

4Die Währung ohne Leerraum 20EUR

5Die Währung mit mehr Leerraum  30  EUR

6Suche mit Alternativen 4 €

7Nachkommastelle mit Komma 5,99 EUR

8Mit Punkt 19.99 EUR

Ich beginne damit, mit der Zeichenklasse Ziffern \d alle Zahlen zu lokalisieren. Sie erkennen gleich, dass damit nur einstellige Preise gefunden werden. Die Anzahl der Ziffern müsste mit dem Wiederholungszeichen + variabel gehalten sein. Mit \d+ findet man jetzt auch teurere Gegenstände, z.B. 300.

Als Nächstes beziehe ich die Währungseinheit mit ein. Da nicht bekannt ist, ob zwischen Zahl und Währungseinheit ein Leerraum steht, kann dies mit dem Fragezeichen optional gehalten und mit \d+\h?EUR gefunden werden. Falls es auch mal zwei oder mehr Leerräume zwischen Preis und Währungseinheit geben kann, sollte man dies mit dem Wiederholungszeichen Sternchen berücksichtigen: \d+\h*EUR. Falls die Währungseinheit manchmal auch mit dem Euro-Symbol angegeben ist, muss dies als Variante mit \d+\h*(EUR|€) berücksichtigt werden.

Noch flexibler wäre es, wenn zusätzlich auch Preise mit Cent-Beträgen gefunden würden. Die Suchanfrage könnte \d+,?\d*\h*(EUR|€) lauten. Präziser wäre es, wenn man mit den geschweiften Klammern maximal zwei Nachkommastellen festlegen würde: \d+,?\d{0,2}\h*(EUR|€). Wenn man nun noch mit \d+[.,]?\d{0,2}\h*(EUR|€) in Betracht zieht, dass die Nachkommastellen anstatt mit Komma auch mit Punkt abgetrennt werden könnten, sollten alle Preise im Text gefunden werden. Der Ausdruck sieht zwar nicht mehr schön aus, ist aber mit etwas Übung gar nicht so schwer zu lesen. Zusätzlich ließe sich die Suche noch mit Positionsangaben verfeinern. Wenn alle Preise am Ende eines Absatzes stehen, kann diese Position mit einem Dollar-Zeichen markiert werden:

\d+[.,]?\d{0,2}\h*(EUR|€)$

Eine weitere Anforderung könnte sein, noch zusätzlich den Text vor dem Preis zu finden. Dies gelingt mit .+?\h+\d+[.,]?\d{0,2}\h*(EUR|€)$, hier werden zunächst mit .+?\h+ beliebig viele Zeichen bis zu den oder dem letzten Leerzeichen vor dem Preis lokalisiert.

 

Reguläre Ausdrücke mit Leerzeichen formatierenUm Reguläre Ausdrücke etwas besser lesbar zu machen, kann man mit dem Befehl (?x) zu Beginn des Ausdrucks festlegen, dass Leerzeichen im Ausdruck ignoriert werden sollen. Mit Hilfe dieser Anweisung kann man Leerzeichen zur Formatierung der Suche verwenden. Den vorherigen Ausdruck könnte man damit z.B. wie folgt gliedern:

(?x) .+? \h+ \d+[.,]?\d{0,2} \h* (EUR|€)$

Wenn Leerzeichen im Suchausdruck ignoriert werden, müssen Leerzeichen, die gefunden werden sollen, über eine Zeichenklasse gesucht werden. Ein einzelnes Leerzeichen wird mit [ ] gefunden.

 

Im nächsten Unterkapitel zeige ich, wie man die Preisangaben bei der Ersetzung vereinheitlichen kann.

1.4   Intelligenter ersetzen

Neben der Suche kann man mit GREP natürlich auch Ersetzungen vornehmen. Reguläre Ausdrücke bieten die Möglichkeit, das Suchergebnis bei der Ersetzung weiterzuverwenden. Der Zugriff auf die Fundstellen geschieht mit so genannten Rückwärtsreferenzen (engl. back references) in der Ersetzungsanfrage.

 

FundstellenWenn man in der Suche mit Zeichenklassen wie z.B. dem Punkt einen Textteil sucht, ist bei der Formulierung der Ersetzung nicht bekannt, welcher Text gefunden werden wird. Wenn man z.B. mit der Anfrage [\w.-][email protected][\w.-]+\.[a-z]+ alle E-Mail-Adressen sucht (→ hier), weiß man bei der Formulierung einer Ersetzung zunächst nicht, wie diese lauten soll. Gesetzt den Fall, man möchte bei der Ersetzung das Wort E-Mail: vor die Adressen schreiben, braucht man die Möglichkeit, auf die gefundenen Stellen zuzugreifen.

Der einfachste Fall ist, dass Sie die ganze Fundstelle in der Ersetzung verwenden möchten. Dazu tragen Sie im Ändern-Texteingabefeld $0 ein, im Beispiel mit der E-Mail-Adresse also E-Mail:~S$0. Wenn Sie nun Alle ändern anwählen, wird vor jeder E-Mail-Adresse E-Mail: gefolgt von einem geschützten Leerzeichen eingetragen, die eigentliche Adresse bleibt erhalten.

 

Wenn man im Beispiel aus dem letzten Unterkapitel die Währungsangaben, Kommastellen und Weißräume vereinheitlichen will, kommt man mit dem Inhalt der gesamten Fundstelle nicht weiter. Hier bietet sich die Möglichkeit an, in der Suche bestimmte Bereiche mit runden Klammern () zusammenzufassen und sich diese für die Ersetzung zu merken. Bei der Ersetzung kann dann auf bis zu neun markierte Stellen zugegriffen werden. Die Fundstellen bzw. Rückwärtsreferenzen werden in der Ersetzung mit $1, $2 usw. angegeben. Diese Metazeichen finden Sie auch im Flyout-Menü neben dem Ändern-Feld unter dem Punkt Gefunden.

Tabelle 6   Zugriff auf Fundstellen bei der Ersetzung

Fundstelle

Beschreibung

$0

Das gesamte Suchergebnis

$1,$2 ... $9

Im Suchausdruck mit Klammern markierte Fundstellen

Konkret setzt man den Teil des Suchbegriffs, den man weiterverwenden möchte, in runde Klammern. Um bei den Preisen z.B. den Preis in der Suche zu markieren, könnte man (\d+[.,]?\d{0,2}\h*)(EUR|€)$ schreiben. Bei der Ersetzung könnte man dann mit $1 EUR die Währungsangabe für alle Preise vereinheitlichen.

!¡ Runde Klammern markieren Fundstellen und variable Wortteile.Bei dieser Anfrage bemerkt man, dass die Klammern eine doppelte Bedeutung haben: Einerseits können damit variable Wortbestandteile in der Suche markiert werden, andererseits können sie Fundstellen markieren. Das ist kein großes Problem, man muss nur darauf achten, dass die variablen Wortbestandteile auch in der Zählung der Fundstellen berücksichtigt werden. In $2 würde sich je nach Treffer EUR oder € befinden. Die Fundstelle $2 wird aber in der Ersetzung nicht verwendet und deswegen ignoriert.

Für die Preisliste könnte man zusätzlich noch die Anforderung aufstellen, dass zwischen Text und Preis ein Tabulator stehen muss und dass die Preise mit einem Komma getrennt werden müssen. Die Suchanfrage müsste dann wie folgt mit Klammern gegliedert werden: (.+?)\h+(\d+)[.,]?(\d{0,2})\h*(EUR|€)$. Achten Sie darauf, dass die Weißräume und die Auswahl aus Komma und Punkt für die Ersetzungsgruppen ausgespart wurden. Die Ersetzung lautet $1\t$2,$3 EUR.

Abbildung 9   Markierte Fundstellen in der Ersetzung verwenden

Das Ergebnis ist allerdings noch nicht ganz befriedigend: Auch Preise ohne Nachkommastellen erhalten durch die Ersetzung ein Komma. Am einfachsten ist es, dies durch eine zweite Ersetzung zu korrigieren. Eine geeignete Suche wäre (\d), EUR, die Ersetzung lautet dann $1 EUR.

Mit dem Skript ChainGREP.jsx, das in Unterkapitel 10.1 vorgestellt wird, könnte man die Ersetzung auch in einem Schritt vornehmen.

 

MaskierungBei der Ersetzung müssen die Metazeichen ebenfalls maskiert werden. Ein \t wird in einen Tabulator umgesetzt, InDesign-Sonderzeichen werden wie bei der Suche mit dem Tilde-Zeichen gebildet. Da die Wiederholungszeichen und Klammern keine besondere Bedeutung mehr haben, müssen Sie nur noch auf die folgenden Zeichen achten:

!¡Metazeichen bei der Ersetzung mit GREP\ $ ~

1.5   GREP-Stile

Seit InDesign CS4 gibt es in den Absatzformaten den Unterpunkt GREP-Stil. Hier kann ein Regulärer Ausdruck in Kombination mit einem Zeichenformat angegeben werden. Wenn der Ausdruck eine Textstelle im Absatz trifft, wird das Zeichenformat angewendet. Das Prinzip ist ähnlich wie die Anwendung von verschachtelten Formaten. Mit GREP-Stilen können nur Formatierungen vorgenommen werden; es ist nicht möglich, Ersetzungen durchzuführen.

Der Klassiker aller GREP-Stile wird bereits vorausgefüllt, wenn Sie einen GREP-Stil hinzufügen: Ziffern im Fließtext etwas kleiner darstellen. Die Suchanfrage ist bekannt: \d+. Sie müssen nur noch bei Format anwenden: ein geeignetes Zeichenformat auswählen.

Abbildung 10   GREP-Stile innerhalb von Absatzformaten

Im Texteingabefeld Auf Text: können beliebige Reguläre Ausdrücke eingetragen werden, neben dem Textfeld ist wieder das bekannte Flyout-Menü mit den Metazeichen zu finden.

Preisauszeichnung innerhalb der PreislisteAls Beispiel für einen GREP-Stil sollen die Preise in der aus Unterkapitel 1.3 bekannten Preisliste automatisch fett ausgezeichnet werden. Der GREP für die Preise ist bereits bekannt: \d,?\d* EUR. Dieser muss nun in einem Absatzformat zusammen mit einem geeigneten Zeichenformat im Bereich GREP-Stil eingetragen werden.

 

Weitere Anwendungsfälle sind die automatische Formatierung von Abkürzungen, Firmennamen, Hoch- oder Tiefstellungen oder speziellen Zeichenkombinationen. Aber auch Verweispfeile aus Symbolschriften können so einfach formatiert werden. Bevor Sie komplexe GREP-Stile entwickeln, sollten Sie sich das Kapitel 10.6 zum Thema Look Around Assertions ansehen. Dort finden sie auch weitere Praxisbeispiele wie die automatische Formatierung von Brüchen.

 

!¡Positionen werden in CS6 und CC anders interpetiert.Zwischen InDesign CS6 und CC gibt es einen Unterschied bei der Verwendung von Positionen wie ^ in Kombination mit Alternativen. So findet ^a|b in CS6 alle Treffer, in CC immer nur einen.

2   Skripte in InDesign verwenden

In diesem Kapitel wird gezeigt, wie Skripte für InDesign installiert und ausgeführt werden. Die von Adobe mitgelieferten Beispielskripte werden erklärt und eingesetzt. Zusätzlich werden Internetseiten vorgestellt, auf denen man weitere Skripte finden kann.

Alles, was die hier vorgestellten Skripte automatisieren, könnte man auch selber skripten. Sie bieten einen guten Einstieg zum Verständnis der Abläufe und was mit Skripting möglich ist.

2.1   Skripte installieren

Skripte-BedienfeldDreh- und Angelpunkt für die Verwendung von Skripten in InDesign ist das unscheinbare Bedienfeld SkripteFenster → Hilfsprogramme → Skripte). Nach der Installation sind die beiden Ordner für Anwendung und Benutzer vorhanden. Die Skripte im Ordner Anwendung sind für alle Benutzer des Systems erreichbar. Skripte im Ordner Benutzer sind nur für den gerade angemeldeten Benutzer erreichbar. Dies ist der Ordner der Wahl für Ihre eigenen Skripte.

Skriptdateien für InDesign haben immer die Endung .jsx. Fremdskripte, deren Code nicht verändert oder eingesehen werden soll, werden als Binärdateien mit der Endung .jsxbin ausgeliefert.

Abbildung 11   Skripte-Bedienfeld mit Kontextmenü

Das Skripte-Bedienfeld ist ein Mini-Dateibrowser. Alle in den entsprechenden Ordnern auf der Festplatte abgelegten Dateien werden angezeigt. Es können sogar Verknüpfungen auf andere Ordner oder Netzlaufwerke eingebunden werden.

 

Am einfachsten erreichen Sie den Ordner im Dateisystem über das Kontextmenü des Ordners im Skripte-Bedienfeld und die Funktion Im Explorer öffnen bzw. Im Finder öffnen (das Kontextmenü wird unter Windows durch die rechte Maustaste, unter Mac OS mit Ctrl + Mausklick aktiviert). Im sich öffnenden Explorer bzw. Finder navigieren Sie in den Unterordner Scripts Panel. Für ein erstes Beispiel kopieren Sie das Skript 2_Willkommen.jsx aus dem Download-Bereich https://github.com/grefel/indesignjs  2 des Buches (das Skript liegt im Ordner Teil_I) in den Ordner Scripts Panel Ihres Benutzer-Ordners. Wechseln Sie nun zurück zu InDesign. Das Skript erscheint im Bedienfeld und kann nun durch einen Doppelklick ausgeführt werden. Das Skript legt eine neue InDesign-Datei mit einem Willkommensgruß an.

Skripte-Bedienfeld

Fenster → Hilfsprogramme → Skripte

Die Ordner enthalten Skripte, die an den korrespondierenden Stellen im Dateisystem gespeichert sind. Alle angezeigten Skripte können per Doppelklick ausgeführt werden.

Pfade zu den SkriptordnernSie können die jeweiligen Speicherorte natürlich auch direkt im Explorer bzw. Finder ansteuern. Sie sind je nach Version und Betriebssystem verschieden:

Anwendungsordner

Windows: Program Files\Adobe\Adobe InDesign [Versionsname]\Scripts\Scripts Panel

Mac OS: Programme/Adobe InDesign [Versionsname]/Scripts/Scripts Panel

Es handelt sich um das Unterverzeichnis Scripts des Installationsordners. Der [Versionsname] ist z.B. CC 2014.

Benutzerordner

Windows: Users\[Benutzername]\AppData\Roaming\Adobe\InDesign\[Version]\de_DE\Scripts\Scripts Panel

Mac OS: Benutzer/[Benutzername]/Library/Preferences/Adobe InDesign/[Version]/de_DE/Scripts/Scripts Panel

Der [Benutzername] entspricht dem Systembenutzernamen, die [Version] ist 8.0 für CS6 und 10.0 für CC 2014. Der Ordner für die Lokalisierung (de_DE) ist je nach installierter Programmsprache unterschiedlich.

 

Tastaturbefehle festlegenFür Skripte können auch Tastaturbefehle festgelegt werden. Unter Bearbeiten → Tastaturbefehle … finden sich im Produktbereich Skripten alle installierten Skripte. Dies bietet sich vor allem bei kleinen Helferlein an, die in der Produktion oft verwendet werden.

2.2   Versteckte Perlen – InDesigns Skripte

Im Ordner Anwendung finden sich die bei InDesign mitgelieferten Beispielskripte von Adobe (Unterordner Samples). Der Unterordner JavaScript enthält einige nützliche Skripte, die die meisten Anwender gar nicht kennen. Unter Windows gibt es noch den Ordner VBScript und unter Mac OS den Ordner AppleScript – alle Ordner enthalten die gleichen Skripte in der jeweiligen Programmiersprache. In diesem Buch bespreche ich nur die plattformunabhängigen JavaScript-Skripte, die interessantesten werde ich kurz vorstellen. Eine genaue Betrachtung des Quellcodes ist an dieser Stelle nicht sinnvoll, da die Beispielskripte relativ komplex sind. Wer die Skripte kennt, wird im Arbeitsalltag immer wieder Situationen finden, wo diese produktiv eingesetzt werden können, und seine Maus entsprechend schonen. Außerdem erhalten Sie durch das Herumprobieren ein Gefühl, was mit Skripting möglich ist.

Mit dem Skript SelectObjects.jsx können alle Objekte der aktuellen Doppelseite ausgewählt werden. Zusätzlich gibt es die Möglichkeit, die Auswahl zu filtern, also beispielsweise nur Textrahmen auszuwählen.

Die Skripte BreakFrame.jsx und SplitStory.jsx lösen verkettete Textrahmen in einzelne Objekte unter Beibehaltung des Inhalts auf. Bei BreakFrames muss ein Textrahmen ausgewählt sein, bei SplitStory der Text.

Mit den TabUtilities.jsx können Tabulatoren an verschiedenen Positionen gesetzt werden, die per Hand teilweise schwierig zu ermitteln sind. Anstatt z.B. mit Hilfslinien die Position einer bestimmten Textstelle zu bestimmen, kann einfach an der aktuellen Position der Einfügemarke ein Tabulator gesetzt werden.

Mit dem Skript ImageCatalog.jsx kann ein Kontaktabzug aus allen Bildern eines Ordners erstellt werden. Für die schnelle Übersicht ist die Zusammenstellung recht brauchbar.

Wenn ein mehrseitiges PDF auf einzelnen Seiten platziert werden muss, bietet sich das Skript PlaceMultipagePDF.jsx an. Es platziert wahlweise in das gerade geöffnete oder in ein neues Dokument.

Die Anforderung, alle Texte einer InDesign-Datei für ein Textverarbeitungsprogramm zur Verfügung zu stellen, erfüllen Sie mit ExportAllStories.jsx. Das Skript exportiert alle Textabschnitte – wahlweise in Text-, RTF- oder InDesign-Tagged-Text-Dateien.