Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Danic
Beiträge gesamt: 10

9. Feb 2015, 13:57
Bewertung:

gelesen: 2202

Beitrag als Lesezeichen
Hallo zusammen!
Ich bin neu hier und beschäftige mich noch nicht lange mit der Automatisierung von InDesign, arbeite aber schon lange mit InDesign 5.5 und möchte nun immer wiederkehrende Aufgaben automatisieren.
Dazu gehört auch, dass ich harte Umbrüche (nach jeder Quellcodezeile in einem Listing) in Weiche ersetzen muss, um den Text für den epub-Export vorzubereiten. Es gibt mehrere Listingabschnitte in einem Textrahmen. Das Ganze sieht dann so aus:

Codezeile (\r)
Codezeile (\r)
Codezeile (\r)
Codezeile (\r)
Codezeile (\r)
Listing 1 (\r)

Die Codezeilen sind mit dem Absatzformat "Listing" formatiert und die Unterschrift nachfolgend (Listing 1) ist mit einem anderen Absatzformat "Unterschrift" formatiert. Mit Hilfe von GREP habe ich nun das folgende Skript:

#target InDesign
app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat= "\r";
app.findGrepPreferences.appliedParagraphStyle = "Listing";
app.changeGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences.changeTo= "\n";
app.activeDocument.changeGrep();

Das funktioniert auch, aber nach der letzten Codezeile soll \r stehen bleiben, damit hier dann der Absatz beendet ist und in der nächsten Zeile dann das neue Absatzformat "Unterschrift" kommt.
Wie kann ich hier sagen, dass alle Zeilen bis auf die letzte in diesem Absatzformat "Listing" die Umbruchzeichen geändert werden sollen? Ist dass dann ein größerer Aufwand mit "if..." oder muss man sogar Bezug nehmen auf das nachfolgende Absatzformat und sagen: wenn danach "Unterschrift" folgt, dann lasse \r in der letzten Zeile des vorherigen Absatzformats? Ist das möglich?
Ich habe mir alle Themen hier in der Skriptwerkstatt angeschaut, aber keins gefunden, was ich als Vorlage nehmen könnte, da meiner Meinung nach keines mit Ausnahmen arbeitet. Ist das gar nicht möglich etwas auszuschließen? Oder gibt es einen viel einfacheren Weg, den ich nicht sehe, weil ich das Skripten noch nicht verstanden habe?
Ich wäre sehr froh, wenn mir hier jemand helfen könnte, da ich mich gerne weiter damit beschäftigen möchte und das auch verstehen möchte.
Vielen Dank schon mal im voraus.

Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Kai Rübsamen
Beiträge gesamt: 4684

9. Feb 2015, 14:36
Bewertung:

gelesen: 2184

Beitrag als Lesezeichen
Hallo und Willkommen in der Skriptwerkstatt!

Für deine Aufgabe braucht es eigentlich kein Skript. Du suchst im Prinzip einen Return im Format 'Listing', wenn an der Position danach kein Zeichen im Format 'Listing' vorkommt, siehe screen.

Als Skriptvariante würde dann das funktionieren:

Code
app.findGrepPreferences = app.changeGrepPreferences = null; 

app.findGrepPreferences.findWhat= "\r(?=.)";
app.findGrepPreferences.appliedParagraphStyle = "Listing";

app.changeGrepPreferences.changeTo= "\n";
app.activeDocument.changeGrep();

app.findGrepPreferences = app.changeGrepPreferences = null;


Gruß Kai Rübsamen

Anhang:
Bildschirmfoto 2015-02-09 um 14.31.14.png (55.1 KB)

Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Danic
Beiträge gesamt: 10

9. Feb 2015, 15:48
Bewertung:

gelesen: 2136

Beitrag als Lesezeichen
Hallo Kai!
Erstmal vielen Dank für die schnelle Antwort und die Mühe.
Allerdings wird so auch das letzte Zeichen des Absatzformats mitumgewandelt. Dieses sollte ja erhalten bleiben als Absatzabschluss. Ich habe noch mal einen Screenshot angehängt, um mein Anliegen zu verdeutlichen, da ich es nicht so gut in Worten beschreiben kann :)

Anhang:
screenshot.jpg (153 KB)

Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Kai Rübsamen
Beiträge gesamt: 4684

9. Feb 2015, 16:50
Bewertung:

gelesen: 2117

Beitrag als Lesezeichen
Hallo Danic,

wenn du es so machst, wie von mir beschrieben, wird das letzte Zeichen nicht umgewandelt (siehe Screen). Deine Aussage wundert mich!

Wenn das bei dir so nicht klappt, bitte idml-Datei.

Gruß Kai Rübsamen

(Dieser Beitrag wurde von Kai Rübsamen am 9. Feb 2015, 17:01 geändert)

Anhang:
Bildschirmfoto 2015-02-09 um 16.57.33.png (67.3 KB)

Absatzzeichen durch Umbruch ersetzten innerhalb eines Formats, aber dann letzte Zeile ausschließen

Danic
Beiträge gesamt: 10

10. Feb 2015, 07:35
Bewertung:

gelesen: 2051

Beitrag als Lesezeichen
Guten morgen Kai!
Es funktioniert! Ich bin begeistert! Vielen Dank! Der Fehler lag natürlich bei mir: durch mein ganzes Rumprobieren war die Listingunterschrift nicht mehr als solche eindeutig formatiert und das war der Fehler. Als ich es in einem neuen Dokument getestet habe funktionierte alles einwandfrei.
Ich möchte noch ein paar andere Dinge automatisieren, habe hier im Forum aber schon Skripte gefunden, die ich erst mal testen werde, ob ich diese durch Umschreiben bei mir zum Laufen bringe.
Vielen Dank noch mal und einen schönen Tag!