[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: 159

7. Sep 2011, 13:48
Beitrag # 1 von 16
Bewertung:
(11361 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: 3358

8. Sep 2011, 08:39
Beitrag # 2 von 16
Beitrag ID: #479787
Bewertung:
(11281 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: 159

8. Sep 2011, 10:10
Beitrag # 3 von 16
Beitrag ID: #479801
Bewertung:
(11262 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: 3358

8. Sep 2011, 10:27
Beitrag # 4 von 16
Beitrag ID: #479805
Bewertung:
(11254 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: 159

8. Sep 2011, 11:35
Beitrag # 5 von 16
Beitrag ID: #479818
Bewertung:
(11225 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: 3358

8. Sep 2011, 11:44
Beitrag # 6 von 16
Beitrag ID: #479820
Bewertung:
(11223 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: 159

8. Sep 2011, 12:10
Beitrag # 7 von 16
Beitrag ID: #479823
Bewertung:
(11208 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:
(11190 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

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


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: 3358

8. Sep 2011, 13:46
Beitrag # 9 von 16
Beitrag ID: #479836
Bewertung:
(11172 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:
(11151 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

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


als Antwort auf: [#479836]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3358

8. Sep 2011, 14:17
Beitrag # 11 von 16
Beitrag ID: #479844
Bewertung:
(11147 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:
(11137 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

iMac 3.06 GHz | 8 GB RAM | OS X 10.6.8 | Indesign 7.0.4 (CS5 Design Premium) | CS6 Design Standard | www.manuseum.ch


als Antwort auf: [#479844]

GREP nur einmal ausführen

Quarz
Beiträge gesamt: 3358

8. Sep 2011, 14:35
Beitrag # 13 von 16
Beitrag ID: #479848
Bewertung:
(11126 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: 159

9. Sep 2011, 15:27
Beitrag # 14 von 16
Beitrag ID: #479936
Bewertung:
(11045 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: 3358

9. Sep 2011, 15:58
Beitrag # 15 von 16
Beitrag ID: #479938
Bewertung:
(11032 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

Aktuell

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
07.12.2020 - 08.12.2020

Digicomp Academy AG, Küchengasse 9, 4051 Basel
Montag, 07. Dez. 2020, 08.30 Uhr - Dienstag, 08. Dez. 2020, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

CHF 1'400.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/desktop-publishing/adobe-indesign-cc/kurs-indesign-cc-basic

Veranstaltungen
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Neuste Foreneinträge


Home-Office

Fehlende Bilddarstellung in Mail

Wer bist du? - Stell' dich vor!

Anpassung von Scriptfunktion auf Bleedbox

Jobs aus dem Quark sollen im Acrobat verglichen werden

Arial Narrow in Tabellen

Indesign 2014

Zwei Fragen zur Tabelle

Webinar IDUG Stuttgart: Grafik- und Bilddaten crossmedial aufbereiten

PPT-Grafik nachbauen
medienjobs