[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt FindChangeByList-Sonderfälle

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

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

29. Mär 2011, 11:50
Beitrag # 1 von 10
Bewertung:
(4890 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Grep-Profis,

nachdem ich mehrere Dutzend Suchen/Ersetzen-Routinen via FindChangeByList_mod3.jsx erfolgreich vorbereitet habe, beiße ich mir gerade an den vier untenstehenden Fällen die Zähne aus. Allen gemeinsam ist, dass sie per manuellem Grep-Suchen/Ersetzen innerhalb Indesign noch funktionieren, per Script aber ihren Dienst verweigern oder anstelle der gewünschten Sonderzeichen ganz andere, falsche Buchstabenkolonnen einfügen. Darum meine Vermutung, dass ich hierbei (unwissentlich) Zeichen verwende, welche vielleicht durch JavaScript reserviert sind?
Auch mit Hilfe von RecordFindChange_CS3-CS5.jsx komme ich bei den folgenden Codezeilen nicht weiter. Eine Kurzbeschreibung, was gesucht und ersetzt werden soll, findet sich jeweils am Ende als Kommentar (ich hoffe verständlich formuliert):

Code
grep	{findWhat:"(\\d+)\\s?°C"}	{changeTo:"$1~4°C", changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Viertelgeviert vor °C-Angaben, anstelle eines Leerzeichens oder anstelle eines fehlenden Weißraumes (vor °C) 
grep {findWhat:"(\\s|\\()á\\s"} {changeTo:"$1à\\s", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //à mit korrektem Akzent, wenn vor dem falschen "á" entweder ein Leerzeichen oder eine öffnende Klammer steht
grep {findWhat:"Vorsicht:?(?=\\sheiß)"} {changeTo:"Vorsicht,", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //Ersetzt den Begriff "Vorsicht heiß" (optional auch mit Doppelpunkt direkt nach "Vorsicht") durch "Vorsicht, heiß"
grep {findWhat:"\\s(?<!»)klassisch(\\s)(?!«)"} {changeTo:"\\s»klassisch«$1", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //Umschließt alle Vorkommnisse von " klassisch " (mit Weißraum davor und dahinter) mit franz. An- und Abführungszeichen (»Doppelpfeile«), aber nicht bei "klassische Gemüsesuppe"

Wer kann mir sagen, wo hier jeweils der Fehler liegt?

Vielen Dank im Voraus!
Gruß Thomas
X

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

29. Mär 2011, 12:05
Beitrag # 2 von 10
Beitrag ID: #467909
Bewertung:
(4886 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
..und noch einen "Übeltäter" hab' ich, bei dem ich das gewünschte Ausschlusskriterium einfach nicht hinbekomme ;o)

Code
grep	{findWhat:"^\\s+"}	{changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Streiche ersatzlos einzelne oder mehrfache Leerzeichen, welche am Absatzbeginn stehen. Schließe aber am Absatzbeginn stehende Weißräume (welche nicht LeerZEICHEN sind, z.B. Leerzeilen) vom Löschen aus. 



als Antwort auf: [#467906]

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

29. Mär 2011, 16:59
Beitrag # 3 von 10
Beitrag ID: #467937
Bewertung:
(4846 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Greps,

für alle, die es ebenfalls interessiert, habe ich die Lösungen für die Fälle 1-4 hier mal aufgelistet, welche sich allesamt mit Hilfe von Unicode realisieren ließen:

Code
grep	{findWhat:"(\\d+)\\s?(?=\\x{00B0})"}	{changeTo:"$1~<", changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Finde Leerzeichen vor Grad-Angaben und ersetze durch Achtelgeviert 
grep {findWhat:"(\\s|\\()\\x{00E1}\\s"} {changeTo:"$1\\x{00E0}\\s", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //à mit korrektem Akzent, wenn vor dem falschen "á" entweder ein Leerzeichen oder eine öffnende Klammer steht
grep {findWhat:"Vorsicht:?(?=\\shei\\x{00DF})"} {changeTo:"Vorsicht,", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //Ersetzt den Begriff "Vorsicht heiß" (optional auch mit Doppelpunkt direkt nach "Vorsicht") durch "Vorsicht, heiß"
grep {findWhat:"\\s(?<!\\x{00BB})klassisch(\\s)(?!\\x{00AB})"} {changeTo:"\\s\\x{00BB}klassisch\\x{00AB}$1", changeConditionsMode:1919250519} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true} //Umschließt alle Vorkommnisse von " klassisch " (mit Weißraum davor und dahinter) mit franz. An- und Abführungszeichen (»Doppelpfeile«), aber nicht bei "klassische Gemüsesuppe"


Nur am Fall Nr. 5 hänge ich noch immer bei der Ausschlussbedingung:
Code
grep	{findWhat:"^\\s+"}	{changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Streiche ersatzlos einzelne oder mehrfache Leerzeichen, welche am Absatzbeginn stehen. Schließe aber am Absatzbeginn stehende Weißräume (welche nicht LeerZEICHEN sind, z.B. Leerzeilen) vom Löschen aus. 

Gruß Thomas


als Antwort auf: [#467909]

FindChangeByList-Sonderfälle

Martin Fischer
  
Beiträge gesamt: 12783

29. Mär 2011, 17:14
Beitrag # 4 von 10
Beitrag ID: #467939
Bewertung:
(4842 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

wenn ich Dich richtig verstanden habe, dann willst Du alle Leerzeichen, aber nicht alle Weißräume (die auch Absatzschaltungen, Tabs und feste Zeilenumbrüche enthalten können), am Anfang einer Zeile löschen.

Dann solltest Du nicht \s als Platzhalter für alle Weißräume verwenden, sondern eine Gruppe mit allen Leerzeichen: [ ~s~S~<~>~3~4~%~f~|~m]

Also
Code
grep	{findWhat:"^[ ~s~S~<~>~3~4~%~f~|~m]+"}	{changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Streiche ersatzlos einzelne oder mehrfache Leerzeichen, welche am Absatzbeginn stehen. Schließe aber am Absatzbeginn stehende Weißräume (welche nicht LeerZEICHEN sind, z.B. Leerzeilen) vom Löschen aus. 


Vielleicht möchtest Du auch noch Tabs \t einschließen.


als Antwort auf: [#467937]
(Dieser Beitrag wurde von Martin Fischer am 29. Mär 2011, 17:34 geändert)

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

29. Mär 2011, 17:30
Beitrag # 5 von 10
Beitrag ID: #467940
Bewertung:
(4834 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Du hast das genau richtig erfasst und mit
Code
grep	{findWhat:"^[ ~s~S~<~>~3~4~%~f~|~m]+"}	{changeConditionsMode:1919250519}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}	//Streiche ersatzlos einzelne oder mehrfache Leerzeichen, welche am Absatzbeginn stehen. Schließe aber am Absatzbeginn stehende Weißräume (welche nicht LeerZEICHEN sind, z.B. Leerzeilen) vom Löschen aus. 

tut es nun genau das, was ich wollte. :o))

Der Trick war also, an Stelle des einfachen \s eine Gruppe aller Leerzeichen zu bilden.

Herzlichen Dank und sonnigen Feierabend!
Gruß Thomas


als Antwort auf: [#467939]

FindChangeByList-Sonderfälle

Martin Fischer
  
Beiträge gesamt: 12783

29. Mär 2011, 17:35
Beitrag # 6 von 10
Beitrag ID: #467941
Bewertung:
(4829 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Der Trick war also, an Stelle des einfachen \s eine Gruppe aller Leerzeichen zu bilden.


Ja, so ist es.
Ich hatte oben ursprünglich fehlerhaft von einer Gruppe aller Weißräume geschrieben.
Richtig ist natürlich – wie Du festgestellt hast – eine Gruppe aller Leerzeichen.


als Antwort auf: [#467940]

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

31. Mär 2011, 18:35
Beitrag # 7 von 10
Beitrag ID: #468116
Bewertung:
(4734 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin (und andere)!

Ein weiterer Fall will mir partout nicht gelingen und ich finde leider auch im WWW keine passende Vorlage.

Es geht um die Fettstellung einer bestimmten Textpassage per Zeichenstilvorlage. Der Beginn dieser Fettstellung/Textpassage soll durch ein Stichwort (im folgenden "Stichwort" genannt) unabhängig von dessen Groß-/Kleinschreibung definiert sein, gefolgt von einem "normalen Leerzeichen"* (oder einem beliebigen Weißraum), gefolgt von einer beliebig langen Zeichenkette (alphanumerisch, Leeräume und Satzzeichen wie An-/Abführungen). Das Ende der Fettstellung soll durch das Sonderzeichen "Verschachteltes Format hier beenden" (kurz "VFhb") bestimmt werden.

Mein Versuch...
Code
(?i)Stichwort\s[[:print:]]+~h 

...ist leider nur dann von Erfolg gekrönt, wenn das "Stichwort" nicht im gleichen Absatz noch einmal (oder gar noch mehrere Male) vorkommt. Ist dies der Fall, wird vom 1. Vorkommnis des Stichworts bis zum "VFbh" gefettet, was ja auch logisch ist.

Es fehlt also die Einarbeitung der "kürzesten Entsprechung", die in diesem Falle ja dann irgendwie nur "von hinten lesend" ausfindig zu machen wäre, oder?

Trotz mehrfachem Vorkommen des (identischen) Stichworts (im gleichen Absatz) soll also nur vom "VFhb" beginnnend, bis zum 1. Vorkommnis (allerdings rückwärts gelesen) gefettet werden!

Ist so etwas ebenfalls mit GREP realisierbar?

Gruß Thomas

* Ist es eigentlich möglich, per Grep das "normale Leerzeichen" isoliert anzusprechen oder kann man immer nur auf mehrere Arten Weißräume einschränken, z.B. mit
Code
[[:blank:]] 

Leerzeichen (inkl. aller Gevierte) und Tabulatoren?


als Antwort auf: [#467941]

FindChangeByList-Sonderfälle

Martin Fischer
  
Beiträge gesamt: 12783

31. Mär 2011, 23:31
Beitrag # 8 von 10
Beitrag ID: #468145
Bewertung:
(4714 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

ich bin mir nicht sicher, ob ich Dich richtig verstanden habe.
Vor allem das 'rückwärts lesen' bereitet mir etwas Kopfzerbrechen.

Möglicherweise suchst Du nach einer Zähmung der Gier Deines GREP.
Da könnte eventuell bereits (?i)Stichwort\s[[:print:]]+?~h helfen.

Oder (?i)Stichwort\s[^~h]+~h.

Das normale Leerzeichen findest Du über das normale Leerzeichen (einmal Leertaste drücken) oder über den Unicode-Wert \x{20}.


als Antwort auf: [#468116]

FindChangeByList-Sonderfälle

Martin Fischer
  
Beiträge gesamt: 12783

31. Mär 2011, 23:52
Beitrag # 9 von 10
Beitrag ID: #468147
Bewertung:
(4703 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube, ich fange an zu verstehen, was Du mit
Zitat Trotz mehrfachem Vorkommen des (identischen) Stichworts (im gleichen Absatz) soll also nur vom "VFhb" beginnnend, bis zum 1. Vorkommnis (allerdings rückwärts gelesen) gefettet werden!

meinst.

Mir fällt im Moment keine Lösung ein, wie das über einen einzigen GREP-Suchlauf zu bewerkstelligen wäre.

Aber Du könntest eventuell erst mal vom ersten Vorkommen von 'Stichwort' bis zum 'VFhb' formatieren und in einem zweiten Durchlauf mit (?i)(Stichwort)\s.+(?=\1)* wieder entformatieren (die Fettung rückgängig machen) – oder?

Vielleicht solltest Du beim ersten Durchgang eine Formatierung (Farbe, Durchstreichen) verwenden, die sonst nirgends vorkommt, nicht dass Du im zweiten Durchgang eine Fettung, die bereits vor dem ersten Durchgang bestand, versehendlich löscht.
Das wären dann also drei Druchgänge:
1. temporäre Formatierung
2. teilweise Aufhebung der temporären Formatierung
3. Umwandlung der übrig bleibenden temporären Formatierung in die endgültige Formatierung.


-----
* \1 wiederholt den Inhalt der ersten Gruppe, hier also 'Stichwort'. Der Stern * gehört nicht mehr zum GREP, sondern ist ein Fußnotenzeichen!


als Antwort auf: [#468145]

FindChangeByList-Sonderfälle

t-kittel
Beiträge gesamt: 254

1. Apr 2011, 09:44
Beitrag # 10 von 10
Beitrag ID: #468161
Bewertung:
(4670 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

herzlichen Dank für Deine wie immer sehr präzisen und lehrreichen Antworten!!!
(Offtopic: "Schläfst Du eigentlich auch irgendwann?" ;o)

Also - nach ettlichen Tests folgendes Ergebnis:
Beide o.g. Lösungsvorschläge "(?i)Stichwort\s[^~h]+~h" und "(?i)Stichwort\s[^~h]+~h" führen bei mir zum gleichen Ergebnis, welches sich wiederum mit meinem 1. Versuch "(?i)Stichwort\s[[:print:]]+~h" deckt – GREP bleibt gierig.
Obwohl Du in Deinem nächsten Beitrag die Problematik der Mehrfachvorkommnisse innerhalb eines Absatzes dann exakt erkannt hast, scheidet eine dreistufige Lösung für meinen Fall aus, da ich diesen Grepcode gerne direkt innerhalb eines Grep-Stils verwenden möchte.

Da ich aber im Anschluss per FindChangeByList_mod3 sowieso noch viele Dutzend Suchen/Ersetzen-Durchläufe ausführen lasse, habe ich nun die folgenden beiden Elemente miteinander kombiniert:
Im Step 1 erfolgt die (zu gierige) Fettstellung per Grepstil durch "(?i)Stichwort\s[^~h]+~h", während im Step 2 das nachgelagerte Skript die zu großzügig gefetteten Textteile mit "(?i)(Stichwort)\\s.+(?=\\1)" wieder rückgängig macht. Von einem Einbau Deiner dreistufigen Lösung ins Skript (ohne Grepstil) möchte ich einerseits absehen, um den Benutzer durch die autom. Fettstellung auf den entsprechenden Absatz aufmerksam zu machen, andererseits habe ich Angst, beim mehrmaligen Skriptaufruf evtl. bereits korrgierte Formatierungen wieder zu "zerschießen".

Somit erhalte ich das gewünschte Ergebnis momentan durch die o.g. zwei Steps und bin fast glücklich...
...wäre da nicht noch mein sehnlicher Wunsch, dieses besagte Stichwort auch auf mehrere Stichworte ausweiten zu können, ohne den "Skript- und GREP-unerfahrenenen" Benutzern abzuverlangen zu müssen, weitere Stichworte sowohl in den betroffenen Grepstilen als auch im Skript ergänzen zu müssen.

Deshalb meine fixe Idee, Grepstil und Stichworte per "benutzerdefinierte Textvariablen" zu kombinieren!? ;o)

Leider erschließt sich mir hierbei die Grep-Funktionsweise von benutzerdefiniertem Text per "~u" in der Kategorie "Variablen" noch nicht.
Indesign (hier CS4) lässt zwar die Definition einer benutzerdefinierten Textvariable zu, für die ich einen eigenen Namen vergeben kann – im Grepstil jedoch erscheint dieser neue (Textvariablen-)Name anschließend nicht als Auswahlmöglichkeit, um die (diese neue benutzerdefinierte Text-)Variable direkt im Grepcode verwenden zu können!

Mein Wunschgedanke, "Stichwort1", "Stichwort2" und "Stichwort3" in ID als "benutzerdefinerte Variablen"-Namen zu definieren und diese Namen einfach im Grepcode zu verwenden scheint nicht machbar!? Wozu dient dann aber der Grepcode "~u"? Gibt es hierfür ein Beispiel?

Thanks und Gruß
Thomas


als Antwort auf: [#468147]
X

Aktuell

PDF / Print
enfocus_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
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!