[GastForen Programme Print/Bildbearbeitung Adobe InDesign GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

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

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Marco Morgenthaler
Beiträge gesamt: 2474

23. Jan 2009, 17:36
Beitrag # 1 von 8
Bewertung:
(5987 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend allerseits

Bei einer umfangreichen Bibliografie beschäftigt mich folgendes Problem. Bei mehreren Titeln des gleichen Autors sollte neu der wiederholte Autornamen durch ein — ersetzt werden, also:

Peter Meier: Titel blablabla.
Peter Meier: Titel blablabla.
Anna Müller: Titel blablabla.
wird zu:
Peter Meier: Titel blablabla.
—: Titel blablabla.
Anna Müller: Titel blablabla.

So weit, so gut. Folgender GREP erledigt das:
Suchen nach:
([^:]+)(.+\r)(\1)
Ändern in:
$1$2—

(\1) verweist auf den ersten gefundenen Klammerausdruck ([^:]+), also den Autornamen bis zum Doppelpunkt.

Wie stelle ich es aber an, dass der GREP nicht nur zwei Titel des gleichen Autors abfängt, sondern auch drei, vier usw. und die folgenden Autornamen wie oben durch — ersetzt? Natürlich könnte ich je einen GREP-Ausdruck für 7 Buchtitel des gleichen Autors zusammenpfriemeln, dann für 6, 5 usw.

Ein anderer Ansatz wäre, wenn ich in einem ersten Durchgang alle aufeinanderfolgenden gleichen Autornamen zuerst mit einem Dummy-ZF formatieren könnte. Nachher könnte ich einfach alle Stellen mit diesem ZF durch — ersetzen.

Vielen Dank und Grüsse aus Zürich
Marco Morgenthaler
X

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Martin Fischer
  
Beiträge gesamt: 12664

23. Jan 2009, 17:47
Beitrag # 2 von 8
Beitrag ID: #382367
Bewertung:
(5979 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

ich habe keine praktische Lösung für die Benutzeroberfläche.
(Die Lösung, die Du geschickt hast, gefällt mir schon gut).

Wenn es möglich wäre, von hinten nach vorne zu suchen und zu ersetzen, dann hättest Du Dein Ziel nach ein paar Ausführungen des S&E-Vorgangs erreicht. Mit der Vorwärtssuche ist dies m.W. so nicht möglich.

Für so was könnte man aber mit Hilfe von Deinem Ausdruck ein Skript basteln.
Im Moment fehlt mir dafür die Gelegenheit.
Aber die Aufgabenstellung gefällt mir.
Und wenn nichts anderes kommt, käme vielleicht das.


als Antwort auf: [#382366]

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Marco Morgenthaler
Beiträge gesamt: 2474

23. Jan 2009, 17:57
Beitrag # 3 von 8
Beitrag ID: #382368
Bewertung:
(5973 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, Martin, fürs Angebot, ein Skript wäre natürlich am elegantesten!

Inzwischen bin ich etwas weitergekommen:
Suche nach:
([^:]+)((.+\r)(\1))+
Format ersetzen: ZF Rot

Durch das +-Zeichen werden alle Stellen mit mehr als einem Titel rot ausgezeichnet. Nun muss ich alle rot ausgezeichneten Autornamen MIT AUSNAHME des ersten durch ein — ersetzen. Das geht mit:
Suchen nach:
(?<=\r)[^:]+
Ändern in: —

Durch den Lookbehind wird der erste Autornamen nicht gefunden, weil die Absatzmarke vorher nicht rot ist.

Jetzt noch das ZF Rot löschen …

Habe es erst an einem kleinen Bsp. getestet, sollte aber gehen, wenn auch etwas umständlich.

Vielen Dank für dein Mitknobeln. Ciaò, Marco


als Antwort auf: [#382367]

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Peter Kahrel
Beiträge gesamt: 182

25. Jan 2009, 13:50
Beitrag # 4 von 8
Beitrag ID: #382503
Bewertung:
(5860 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

Ich benütze (etwa) dieses Skript um identische Namen zu ändern:

Code
#target indesign; 

app.findGrepPreferences = null;
app.findGrepPreferences.findWhat = '^[^:]+';
f = app.activeDocument.findGrep ();
n = 0;
while (n < f.length)
{
j = n + 1;
ref = f[n].contents;
while ((j < f.length) && (f[j].contents == ref))
{
f[j].contents = '\u2014'
j++;
}
n++
}


Grüsse,

Peter


als Antwort auf: [#382368]

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Marco Morgenthaler
Beiträge gesamt: 2474

26. Jan 2009, 11:51
Beitrag # 5 von 8
Beitrag ID: #382605
Bewertung:
(5821 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter

Danke für das Skript, aber es funktioniert bei mir nicht (vgl. Fehlermeldung wie Screenshot im Anhang).

Inzwischen bin ich aber durch den entscheidenden Hinweis von Martin Fischer («Wenn es möglich wäre, von hinten nach vorne zu suchen und zu ersetzen, dann hättest Du Dein Ziel nach ein paar Ausführungen des S&E-Vorgangs erreicht») auf eine Lösung gestossen.

Es reicht im Prinzip, dem GREP einen negativen Lookahead beizufügen, also:

Suche aufeinanderfolgende Absätze mit gleichem Anfang, wenn nachher NICHT der gleiche Absatzanfang folgt. Damit «frisst» sich der GREP sozusagen von hinten nach vorn durch die Autorliste. Es wird immer das letzte Vorkommen eines Autors mit mehreren Titeleinträgen durch — ersetzt. So reicht es nun, den Cursor an den Anfang der Biblio zu setzen, ein paar Mal auf «Alle ändern» zu klicken, und die Sache ist erledigt.

Der modifizierte GREP lautet:
Suchen nach:
(^[^:—]+:)(.+\r)(\1)(.+\r)(?!\1)
Ändern in:
$1$2—:$4

Ergänzt habe ich auch den Ausdruck, um die Autornamen zu finden: (^[^:—]+:)
Absatzbeginn ^, dann Zeichen ohne : bzw. — (sonst wird immer etwas gefunden) und am Schluss ein Doppelpunkt.
Der Doppelpunkt muss zum gesuchten Autornamen hinzukommen, sonst wird eine Stelle wie
Peter Meier: Titel blablabla.
Peter Müller: Titel blablabla.
in
Peter Meier: Titel blablabla.
— Müller: Titel blablabla.
geändert.

Am Schluss wie erwähnt der negative Lookahead (?!\1), zu Deutsch: … wenn nicht das folgt, was in der ersten Klammer (also Autorname XY) gefunden wurde.

Ein instruktives Beispiel für die Verwendung einer Referenz (\1) innerhalb des Suchausdrucks. Normalerweise wird ja vor allem im Ändern-Feld auf Klammerausdrücke Bezug genommen ($1, $2 usw.).

Grüsse an alle GREP-Fans
Marco


als Antwort auf: [#382367]
Anhang:
Bild 2.png (49.0 KB)

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Marco Morgenthaler
Beiträge gesamt: 2474

26. Jan 2009, 13:26
Beitrag # 6 von 8
Beitrag ID: #382634
Bewertung:
(5808 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle, die überhaupt noch mitlesen =;o)

Ein Durchgang am richtigen Dokument (zum Glück an einer Kopie) hat ein Problem mit den Formatierungen ergeben. Die Autornamen sind bei mir kursiv (mit Zeichenformat), Titel normal. Offenbar merkt sich Indesign, wie viele Stellen mit einem ZF versehen sind und überträgt die ZF auf den nachfolgenden Text, der vorher gar nicht kursiv war. Also wird

Peter Andreas Müller: Titel bla bla bla.
Peter Andreas Müller: Titel bla bla bla.
zu
Peter Andreas Müller: Titel bla bla bla bla.
—: Titel bla bla bla bla. (Ein Teil des Titels wird kursiv)

Pech gehabt. Der richtige und sichere Weg läuft über 3 Stationen:

A) Suchen nach: (^[^:]+:)((.+\r)(\1))+
Format ersetzen: Zeichenfarbe M=100 (100% Magenta)

B) Suchen nach: (?<=\r)([^:]+:)
Format suchen: Zeichenfarbe Magenta
Ändern in: —:

C) Format suchen: Zeichenfarbe Magenta
Format ersetzen: Zeichenfarbe [Schwarz]

Gruss, Marco


als Antwort auf: [#382605]

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Peter Kahrel
Beiträge gesamt: 182

26. Jan 2009, 13:35
Beitrag # 7 von 8
Beitrag ID: #382637
Bewertung:
(5805 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marco,

Das ist ein sehr geistreicher GREP! Es gibt aber zwei Probleme: er mangelt formattierung und braucht ein Absatzzeichen am ende der Bibliografie um identische Namen am ende zu ändern.

Es war mir ein Rätsel warum das Skript bei dir nicht funktionierte, bis ich es bei mir in CS3 versuchte -- mit dem selben Ergebnis wie bei dir. Es funktioniert also nur in CS4. Ein CS3 version (die auch einfacher ist):

Code
#target indesign;  

app.findGrepPreferences = null;
app.findGrepPreferences.findWhat = '^[^:]+';
f = app.activeDocument.findGrep ();
for (n = f.length-1; n > 0; n--)
if (f[n].contents == f[n-1].contents)
f[n].contents = '\u2014';


Grüsse

Peter


als Antwort auf: [#382605]

GREP-Frage: Gleiche Wörter am Anfang von aufeinanderfolgenden Absätzen finden

Marco Morgenthaler
Beiträge gesamt: 2474

26. Jan 2009, 13:50
Beitrag # 8 von 8
Beitrag ID: #382639
Bewertung:
(5799 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Peter

Deine Skriptlösung funktioniert wunderbar und vermeidet auch alle Stolpersteine (banana skins), denen ich auf meinem GREP-Weg begegnet bin. Sehr elegant!

Vielen Dank und Grüsse
Marco

[EDIT]
Zitat Das ist ein sehr geistreicher GREP! Es gibt aber zwei Probleme: er mangelt formattierung und braucht ein Absatzzeichen am ende der Bibliografie um identische Namen am ende zu ändern

Dies bezieht sich offenbar auf den GREP in Beitrag 5; der GREP in Beitrag 6 (über 3 Stationen mit Zeichenfarben-Trick) sollte diese Mängel nicht mehr haben, auch wenn diese Lösung natürlich weitaus schwerfälliger als das Skript ist.


als Antwort auf: [#382637]
(Dieser Beitrag wurde von Marco Morgenthaler am 26. Jan 2009, 13:57 geändert)
X

Aktuell

PDF / Print
Wolken_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
01.12.2022

Online
Donnerstag, 01. Dez. 2022, 10.00 - 10.45 Uhr

Webinar

Die drei ColorLogic-Programme ZePrA, CoPrA und ColorAnt sind in neuen Versionen mit vielen neuen Funktionen im Jahr 2022 veröffentlich worden oder werden in Kürze veröffentlicht (ColorAnt 9). In unserem ca. 45 minütigen kostenlosen Webinar zeigen wir Ihnen einige dieser neuen Funktionen mit dem Schwerpunkt auf Automatisierung und Produktivitätssteigerungen.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=311

ColorLogic Update-Webinar ZePrA 10, CoPrA 9 und ColorAnt 9
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/