[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt GREP nur einmal ausführen

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

GREP nur einmal ausführen

former
Beiträge gesamt: 164

7. Sep 2011, 13:48
Beitrag # 1 von 16
Bewertung:
(12538 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich verfolge folgendes Ziel: Aus "<Vorname> <Nachname>" soll auf Knopfdruck "<Nachname>, <Vorname>" werden. Meine GREP-Suchanfrage "([\l\u]+)\s([\l\u]+)" mit dem Ersetzen-Ausdruck "$2, $1" habe ich als "Namentausch" gespeichert.
Vielleicht kann man eine solche abgespeicherte Abfrage auch irgendwie direkt mit Tastaturbefehl ansteuern? Ich wollte jedenfalls ein (mein erstes eigenes!) Skript dazu schreiben (da ich dieses per Tastaturbefehl ansprechen kann) und bin mit folgendem Code immerhin so weit gekommen, dass nur im ersten Absatz geändert wird:
Code
#target InDesign 
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.loadFindChangeQuery("Namentausch", SearchModes.GREP_SEARCH);
app.selection[0].paragraphs.firstItem().changeGrep(0);
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

Das ist aber unzureichend, da nur genau die ersten beiden Worte hinter der Einfügemarke vertauscht werden sollen (bzw. später auch die ersten drei Worte, z.B. bei "<Vorname> <zweiter Vorname> <Nachname>"). Im Kern geht es also darum, die Ersetzenfunktion nur einmal, und zwar hinter der Einfügemarke, auszuführen.
Ich entschuldige mich schon einmal für diese Anfängerfrage, aber ich komm einfach nicht drauf, warum:
Code
app.selection[0].paragraphs.words.itemByRange(0,1).changeGrep(0); 

nicht funktioniert. Mit insertionPoints habe ich auch schon etwas herumexperimentiert, leider erfolglos. Ich gebe auch zu, die Semantik mit Funktionen, Eigenschaften, Methoden usw. noch nicht durchschaut zu haben. Kann mir jemand bei diesem Problem behilflich sein? Ich würde es gerne über ein (doch eigentlich total einfaches) Skript lösen, um hier ein bisschen schlauer zu werden.

Gruß
Jan
X

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 08:39
Beitrag # 2 von 16
Beitrag ID: #479787
Bewertung:
(12458 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan,

ich mache das folgendermaßen mit
S & E

Suchen
ZF ohne
Ersetzen
ZF irgendein


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479751]

GREP nur einmal ausführen

former
Beiträge gesamt: 164

8. Sep 2011, 10:10
Beitrag # 3 von 16
Beitrag ID: #479801
Bewertung:
(12439 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

danke für Deine Antwort. Nur irgendwie steh ich auf dem Schlauch, denn ich weiß leider nicht genau, was Du meinst. Deswegen formuliere ich noch einmal meine Aufgabe:
Ich würde gerne mit einem Tastendruck, wenn der Cursor direkt am Anfang eines Namens steht, den Nachnamen vorholen und ein Komma dahinter setzen.
Hier fehlt mir jetzt der Link, weshalb ich mit ZF arbeiten sollte!?
Vielleicht kannst Du mir ja noch einmal auf die Sprünge helfen.

Gruß
Jan


als Antwort auf: [#479787]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 10:27
Beitrag # 4 von 16
Beitrag ID: #479805
Bewertung:
(12431 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan,

Suchen
([\l\u]+)\s([\l\u]+)

ZF ohne

Ersetzen
$2, $1
ZF ein neu angelegtes ZF

Wenn du beim Suchen ein ZF zuweist
und beim Ersetzen ein anderes, dann
kann es ja nicht nocheinmal gefunden
werden.


Wenn Du allerdings nach
(<Vorname>) (<Nachname>)
suchst, dann brauchst du kein ZF.

Es kann ja nicht nochmal gefunden
werden, da ja mittlerweile daraus
<Nachname>, <Vorname>
geworden ist.


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479801]

GREP nur einmal ausführen

former
Beiträge gesamt: 164

8. Sep 2011, 11:35
Beitrag # 5 von 16
Beitrag ID: #479818
Bewertung:
(12402 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

danke für Deine Antwort, doch irgendwie gelingt es mir scheinbar nicht, mich verständlich zu machen.
Also: Es geht um ein Literaturverzeichnis. Also habe ich immer einen eigenen Absatz, an dessen Anfang ein Name steht (manchmal in der falschen Reihenfolge). Den kann ich mit besagtem Suchstring ansprechen (wenn der Cursor direkt davor steht) und richtig sortieren lassen. Der String findet dann jedoch (natürlich) im weiteren Verlauf noch viele weitere Worte bzw. Wortpaare, die nicht mit Komma getrennt sind, und würde diese auch vertauschen. Ich kann also (und beabsichtige auch) nicht S&E durch das ganze Dokument, nicht einmal durch den Absatz laufen lassen, sondern muss vor jedem Namen von Hand das Tauschen vornehmen. Das allerdings hätte ich gerne mit einem Tastendruck erledigt, anstatt Strg+F, <Ändern>, Strg+F (und bei verschiedenen Anfragen, z.B. bei drei Namen, müsste ich dann auch noch den Suchstring jedes Mal wechseln). Deshalb wollte ich es per Skript lösen, also mit mehreren Skripten, die je nach Anzahl der Namen mir diese vertauschen.
Klar, sowohl Skripte als auch S&E sind eigentlich Werkzeuge dafür, viel Arbeit mit einem Mal zu erledigen, hier soll das Skript jedoch nur eine S&E-Aktion ausführen. Oder gerne auch S&E selbst, doch eben mit einer Tastenkombination.
Danke fürs Lesen und Deine Hilfsbereitschaft,
Gruß
Jan


als Antwort auf: [#479805]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 11:44
Beitrag # 6 von 16
Beitrag ID: #479820
Bewertung:
(12400 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan,

schreib doch mal ein Beispiel, vielleicht
3 Namen, auf wie es jetzt aussieht und
wie es aussehen soll.


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479818]

GREP nur einmal ausführen

former
Beiträge gesamt: 164

8. Sep 2011, 12:10
Beitrag # 7 von 16
Beitrag ID: #479823
Bewertung:
(12385 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

okay. Drei (willkürliche) Titel, wie sie jetzt sind (kopiert und im letzten Fall verfälscht aus http://de.wikipedia.org/wiki/Arminianismus):
Zitat Leroy F. Forlines: The Quest for Truth. Answering Life's Inescapable Questions. Randall House Publications, Nashville TN 2001.
Roger Forster/V. Paul Marston: God's Strategy in Human History. Expanded new-millennium edition. Wipf and Stock Publishers, Eugene OR 2000.
Roger E. Olson: "Arminian Theology", in: David Pawson (ed.): Once Saved, Always Saved?. Hodder & Staughton, London 1996.

und wie sie sein sollen:
Zitat Forlines, Leroy F.: The Quest for Truth. Answering Life's Inescapable Questions. Randall House Publications, Nashville TN 2001.
Forster, Roger/Marston, V. Paul: God's Strategy in Human History. Expanded new-millennium edition. Wipf and Stock Publishers, Eugene OR 2000.
Olson, Roger E.: "Arminian Theology", in: Pawson, David (ed.): Once Saved, Always Saved?. Hodder & Staughton, London 1996.

Beim dritten Titel ändert sich die Reihenfolge auch mitten im Absatz (hinter "in:"), so dass ich die Absatzmarke nicht bei S&E berücksichtigen kann.

Gruß
Jan


als Antwort auf: [#479820]

GREP nur einmal ausführen

Marco Morgenthaler
Beiträge gesamt: 2474

8. Sep 2011, 13:12
Beitrag # 8 von 16
Beitrag ID: #479831
Bewertung:
(12367 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan

Folgende 3 Grep-Durchläufe wechseln deine Namen. Auch zusammengesetzte Namen werden erkannt, wie etwa Hans-Peter Müller, Hans E. Müller, H. Peter Müller, Hans-Peter Müller-Weber usw.

Namen nach «in:»
(?<=in: )((\u\. )?[\w-]+( \u\.)?) ([\w-]+)
$4, $1

Namen am Absatzanfang (gefolgt von (ed.), Schrägstrich oder Doppelpunkt)
^((\u\. )?[\w-]+( \u\.)?) ([\w-]+)(?= \(ed.\)|:|\/)
$4, $1

Namen nach Schrägstrich und vor «:» bzw. «(ed.):»
(?<=/)((\u\. )?[\w-]+( \u\.)?) ([\w-]+)(?= \(ed.\)|:)
$4, $1

Die 3 Greps kannst du abspeichern und in einem Skript zusammenfassen. Ich würde aber die Bibliografie Schritt für Schritt durchgehen und die Fundstellen mit Ersetzen/Suchen (falsch gewünscht) umstellen. Dann springt er gleich zur nächsten Fundstelle. Das ist m. E. besser als deine Wunschlösung, bei der du immer zuerst den Cursor manuell an die gewünschte Stelle platzieren musst.

Viel Erfolg und Gruss, Marco


als Antwort auf: [#479823]
(Dieser Beitrag wurde von Marco Morgenthaler am 8. Sep 2011, 13:22 geändert)

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 13:46
Beitrag # 9 von 16
Beitrag ID: #479836
Bewertung:
(12349 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan,

Marco war schneller, aber ich poste trotzdem mal.

Im Anhang findest Du die Namen vertauschen.jsx Datei.
(Ich speichere die benötigten txt-Dateien
für FindChangeByList als *.jsx-Dateien ab,
damit ich sie in ExtendScript Toolkit besser
bearbeiten kann.)

Diese Datei mit FindChangeByList aufrufen.

Zum Ersetzen benutze ich das ZF 'regular'.
(Ist natürlich austauschbar.)
Du könntest den Namen ja noch 'bold' oder
'medium' zuweisen. Dann trennt sich das besser.

Eine Farbe (hier blau) benutze ich, damit
ich sehen kann, ob auch alles ausgetauscht
worden ist.


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479831]
Anhang:
Namen vertauschen.jsx (1.21 KB)

GREP nur einmal ausführen

Marco Morgenthaler
Beiträge gesamt: 2474

8. Sep 2011, 14:10
Beitrag # 10 von 16
Beitrag ID: #479841
Bewertung:
(12328 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz

Deine Liste findet aber keine zusammengesetzten Namen und Hans E. Müller auch nur am Absatzanfang (nicht nach Slash oder in:). Das müsste noch angepasst werden.

Verstehe ich das richtig: Wenn ich dein FindChange-Skript aufrufe, werden alle Namen, die gefunden werden, in einem Mal geändert?

Gruss, Marco


als Antwort auf: [#479836]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 14:17
Beitrag # 11 von 16
Beitrag ID: #479844
Bewertung:
(12324 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

ich habe doch extra mit dem Text von Jan
getestet.
Aber so ist das nun mal mit dem GREPPen -
immer wieder schleicht sich etwas ein.

Zitat Verstehe ich das richtig: Wenn ich dein FindChange-Skript aufrufe, werden alle Namen, die gefunden werden, in einem Mal geändert?

Je nach dem ob ich
Selection oder Selected Story oder Document
aufrufe.


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479841]

GREP nur einmal ausführen

Marco Morgenthaler
Beiträge gesamt: 2474

8. Sep 2011, 14:32
Beitrag # 12 von 16
Beitrag ID: #479847
Bewertung:
(12314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich persönlich würde es zu riskant finden, alle Namen automatisch und auf einmal zu ersetzen. Und wenn «Selection» aufgerufen wird, müsste man jeweils die Namen vorher auswählen, Skript laufen lassen, neue Namen auswählen usw.

Ich glaube, der Skriptansatz ist hier für einmal nicht der beste Lösungsweg. Aber ich lasse mich gern von dem Gegenteil überzeugen =;o)

Gruss, Marco


als Antwort auf: [#479844]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

8. Sep 2011, 14:35
Beitrag # 13 von 16
Beitrag ID: #479848
Bewertung:
(12303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

das wird uns der OP Jan ja dann sicher schreiben.


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479847]

GREP nur einmal ausführen

former
Beiträge gesamt: 164

9. Sep 2011, 15:27
Beitrag # 14 von 16
Beitrag ID: #479936
Bewertung:
(12222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco und Quarz,

zunächst möchte ich Euch herzlich für Eure Beiträge danken.
Um die Frage gleich vorweg zu klären: Ich hatte auch nie beabsichtigt, ein Skript über die Bibliographie laufen lassen, das alles mit einem Mal ändert. Viel zu riskant. Im Übrigen habe ich die Bibliographie selbst zusammenkopiert und bearbeitet, war also ohnehin in jeder Zeile mit dem Cursor usw. und suchte eben deshalb eine Tastenkombination, mit der ich, wenn mein Cursor dort steht, diesen einen Namen tauschen kann. Das nur zur Erklärung für meine unkonventionelle Anfrage. Inzwischen bin ich mit dem Verzeichnis durch, nur die Namen habe ich noch nicht vertauscht, d.h. jetzt kommen Eure Strings zum Tragen.
Also, einerseits ist mir persönlich "Alles ändern" in einer Bibliographie zu riskant. Andererseits ist natürlich die Idee, alles blau zu färben, was sich ändert, sehr hübsch und bietet eine gute Kontrollmöglichkeit. Insofern kann man es erwägen, und muss man es abwägen: Wenn die Fehlerquote relativ gering ist, lohnt es sich vielleicht wirklich, ein Skript zu nehmen und im Anschluss einmal nachzukontrollieren, anstatt alles einzeln zu ändern.
Also habe ich erstmal probiert, zunächst die Namen_vertauschen.txt. Neben den von Marco bereits benannten Problemen wurde (nicht am Absatzanfang) aus "Wilt L. Idema" "L, Wilt. Idema" (am Absatzanfang hat es gut funktioniert: aus "Pieter H. Vrijhof" wurde "Vrijhof, Pieter H.").
Als nächstes habe ich Marcos Suchstrings ebenfalls mit FindChangeByList probiert (nachdem ich herausfand, dass die Maskierung in der Textdatei mit zwei Backslashs erfolgen muss). Was diese nicht finden, sind dreigliedrige Namen am Absatzanfang sowie Namen hinter Schrägstrichen, also z.B: "Hans Martin Krämer/Jenny Oesterle/Ulrike Vordermark (eds.),".
Auch nicht gewünschte Stellen wurden jeweils gefunden: "Berlin: de Gruyter" --> "Berlin: Gruyter, de" oder "Rhein: von, Philipp Zabern". Erst dachte ich, dass sei für mich nicht relevant, da bei mir nach den Autoren kein Doppelpunkt, sondern ein Komma steht, und ich ohnehin im String dann den Doppelpunkt durch Komma ersetzen würde. Dann ging mir auf, dass es an "in: " lag. Also muss besser " in: " geschrieben werden.
Des Weiteren sind in meinem Fall mehrere Verlagsorte mit Schrägstrich getrennt, die Folge ist z.B. "York, New". Hier sehe ich allerdings keine Lösung, es sei denn ich änderte den Schrägstrich zwischen Verlagsorten oder es gäbe eine Art Negativliste à la "nicht New York tauschen" (was aber beides wohl mehr Arbeit verursachen würde, als angebracht ist).
Schlussendlich werde ich wohl Euren Strings jeweils Teile entnehmen und eine neue Textdatei für das FindChangeByList-Skript erstellen. Wobei ich nun wirklich langsam hippelig werde, denn mit dieser Probiererei (und diesem Beitrag) verbringe ich nun schon ein paar Stündchen, bin aber immer noch nicht wirklich weiter mit meinem Dokument (wenngleich doch schon etwas klüger). Insofern sende ich nun diesen ellenlangen Beitrag und mache einen Punkt.
Nochmals vielen Dank,
Gruß
Jan


als Antwort auf: [#479848]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3555

9. Sep 2011, 15:58
Beitrag # 15 von 16
Beitrag ID: #479938
Bewertung:
(12209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jan,

schön von Dir zu hören.

Verbuch die Stündchen unter
'Erfahrung sammeln' ab. Es wird
Dir in Zukunft zu gute kommen.

Hier ist noch ein Link zu einem
Script von Martin Fischer, mit dem Du die
S & E Einträge für FindchangeByList
umwandeln kannst.

http://www.hilfdirselbst.ch/...i?post=443359#443359

Darf in keinem gepflegten Haushalt fehlen ;-)


Gruß
Quarz

-------------------------------------------
InDesign CS5 7.04 | Win7/64 Prof.



als Antwort auf: [#479936]
X

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

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

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!