[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt [ ES ] S&E wenn der Text GREP-Stile benutzt (Bug im GUI und im DOM?)

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

[ ES ] S&E wenn der Text GREP-Stile benutzt (Bug im GUI und im DOM?)

Uwe Laubender
Beiträge gesamt: 4853

11. Jun 2014, 19:15
Beitrag # 1 von 4
Bewertung:
(1419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!

Folgende Testumgebung:

1. Ein einfaches Dokument, das ein Absatzformat mit einem GREP-Stil benutzt
2. Eine S&E-Aktion, die im GUI schiefläuft
3. Eine S&E-Aktion per Skript, die angelehnt an die GUI-Aktion auch schiefläuft

4. Eine recht "seltsame" Skript-Lösung, die zu funktionieren scheint.
5. Eine Skript-Lösung, die *zuverlässiger* zu funktionieren scheint ohne die S&E-Funktionalität zu benutzen

Um was geht es hier?
S&E scheint manchmal Probleme zu haben alle möglichen Fundstellen wirklich zu finden. Und das bei wirklich sehr einfachen Aufgaben. Anbei dazu eine IDML-Datei, die als Grundlage dienen soll:

Formatierter Text in einem 2spaltigen Textrahmen. Formatiert mit einem Absatzformat, das einen GREP-Stil enthält. Dieser GREP-Stil sorgt dafür, dass alle vorkommenden Zeichen "a" mit der Farbe "Rot" eingefärbt werden sollen.

Gesucht wird nun über S&E, egal ob mit der Text-Suche oder mit der GREP-Suche alle Zeichen "a", die im Dokument mit "Rot" eingefärbt sind.

Verschiedenen InDesign-Versionen scheint das Probleme zu bereiten. InDesign CS5.5 findet z.B. nur 207 von 246 möglichen Stellen.
Wird zudem eine Farbänderung gewünscht, also ein Ersetzenkriterium gewählt, kann die Anzahl der Fundstellen noch weiter schwinden.

Wird nur nach einem Zeichen "a" gesucht, ohne dass die Farbe als Suchkriterium erscheint, werden alle 246 möglichen Textstellen gefunden.

Bei meinen Tests habe ich versucht den Vergleich zwischen Text- und GREP-Suche möglichst einfach zu halten. So wurde bei beiden Suchen nur das Zeichen "a" versucht zu finden. Ohne mögliche "Wildcards" wie + oder +? im GREP-Ausdruck.

Die Problematik konnte ich im Skripting mit der Text- oder GREP-Suche nachvollziehen. Sobald als Suchkriterium eine "Farbe" ins Spiel kommt, werden die Ergebnisse unzureichend. Wird jedoch nicht über die Farbe gesucht, sondern über deren Namen, werden alle möglichen Treffer gefunden.

zu 1. Die Datei vor der GUI-S&E-Aktion angehängt:
"FindChangeTextOrGREP-BEFORE_CS5.5.idml"

zu 2. Text-S&E:

Suche
Code
a 

+ Farbe Red

Ersetze
[durch NICHTS]
+ Farbe Green

Ergebnis von InDesign CS5.5 v7.5.3 auf OSX 10.6.8 hier im Anhang:
207 von 246 möglichen Textstellen gesucht und ersetzt: "FindChangeTextOrGREP-AFTER-CHANGE_CS5.5.idml"

zu 3. Hier die Aktion als Skript für die Text S&E 207 von 246 möglichen Fundstellen gefunden:

Code
app.findTextPreferences = app.changeTextPreferences = null; 
//207 Fundstellen:
app.findTextPreferences.fillColor = app.documents[0].colors.itemByName("Red");
app.changeTextPreferences.fillColor = "Green";
app.findTextPreferences.findWhat = "a";
var myResult = app.documents[0].findText();

//Ergebnis: 207
$.writeln(myResult.length);


zu 4. Eine "seltsame Skriptlösung", die zu funktionieren scheint; 246 von 246 möglichen Fundstellen gefunden:

Code
app.findTextPreferences = app.changeTextPreferences = null; 
//246 Fundstellen:
app.findTextPreferences.fillColor.name = "Red";
app.changeTextPreferences.fillColor = "Green";
app.findTextPreferences.findWhat = "a";
var myResult = app.documents[0].findText();

//Ergebnis: 246
$.writeln(myResult.length);


zu 5. Die *zuverlässige* Methode ohne Text-S&E (mit Ersetzen). Verbesserte Version zum Snippet in diesem Beitrag: http://www.hilfdirselbst.ch/..._P528320.html#528320 , da die DOM-Zugriffe minimiert wurden.
Code
//Alle Zeichen "a", die mit der Farbe "Red" gefärbt sind, sollen umgefärbt werden in Farbe "Green". 
//Etwas schneller (??!!), da der Bezug zu den Farben über Variablen geregelt wird:

//Scope: ALLE Textabschnitte des aktiven Dokuments
var myChars = app.documents[0].stories.everyItem().characters.everyItem().getElements();

//Diese Farbe soll ersetzt werden
var myOldColor = app.documents[0].colors.itemByName("Red");
//durch die folgende Farbe:
var myNewColor = app.documents[0].colors.itemByName("Green");

//Wenn folgender String gefunden wird:
var myString = "a";

for(var n=0;n<myChars.length;n++){

if(myChars[n].contents === myString && myChars[n].fillColor === myOldColor){
myChars[n].fillColor = myNewColor;
};

};


Nun meine Frage: könntet ihr das mal in verschiedenen InDesign-Versionen testen? Mac und Windows? Text- und GREP-S&E ? CS4 - CC ? Mir scheint, die Ergebnisse könn(t)en unterschiedlich ausfallen.

Danke!
*****
Mit herzlichem Gruß,
Uwe Laubender

Anhang:
FindChangeTextOrGREP-BEFORE_CS5.5.idml (40.0 KB)   FindChangeTextOrGREP-AFTER-CHANGE_CS5.5.idml (39.9 KB)
X

[ ES ] S&E wenn der Text GREP-Stile benutzt (Bug im GUI und im DOM?)

Uwe Laubender
Beiträge gesamt: 4853

11. Jun 2014, 19:31
Beitrag # 2 von 4
Beitrag ID: #528335
Bewertung:
(1414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein Testaufbau enthält leider einen kleinen, aber wichtigen konzeptionellen Fehler:

Alle Vorkommen von "a" sind über den GREP-Stil des zugewiesenen Absatzformats mit "Red" eingefärbt. Ohne lokale Abweichung.

Wende ich nun lokale Abweichungen an, färbe z.B. zwei "a"s mit "Cyan" ein, findet mein Lösungsvorschlag 4 trotzdem alle Vorkommen von "a". Der vermeintlich einschränkende Ausdruck über den Namen der Farbe wird also ignoriert! Sorry!

Das Snippet unter Punkt 4. bietet also nur eine Scheinlösung.

Die echte Lösung ist also in diesem Fall auf die S&E-Funktionalität ganz zu verzichten. Wie in Punkt 5 gezeigt.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#528334]

[ ES ] S&E wenn der Text GREP-Stile benutzt (Bug im GUI und im DOM?)

Gerald Singelmann
  
Beiträge gesamt: 6247

12. Jun 2014, 00:04
Beitrag # 3 von 4
Beitrag ID: #528340
Bewertung:
(1364 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vermutung: "eigentlich" ist kein einziges deiner a rot. Dass die rot aussehen ist sozusagen virtuell.

In CC wird das recht deutlich: Die a, die er findet, sind die in jenen Absätzen, die sich direkt zuvor vorgeknöpft hatte. In allen anderen weiß er nichts von roten a. Wenn ich also alle roten a gegen blaue a austauschen will, macht er das nur im ersten Absatz. Wenn ich direkt vor dem Ersetzen wiederholt auf "Find Next" klicke, bis ich alle Fundstellen der ersten drei Absätze durchgewandert bin und dann auf "Alle Ersetzen" klicke, werden die vom ersten und vom dritten Absatz blau.

Das interpretiere ich so, dass "eigentlich" alle Buchstaben schwarz sind und er besonders genau hinkucken muss, dass virtuell einige rot sind. Und das besonders genau hinkucken macht er halt nur, wenn ich ihn vorher dazu gezwungen habe, wie z.B. wenn ich jeden Buchstaben einzeln inspiziere, wie in deiner Lösung 5.

Der Unterschied zwischen vielen Gegenständen, die eine eigene Farbe haben, wobei auf einige ein farbiger Scheinwerfer gerichtet ist. Da ist es nicht gut genug, ins Inventar zu schauen, welche Farbe ein Gegenstand hat, man muss wirklich in die Lagerhalle.


als Antwort auf: [#528335]

[ ES ] S&E wenn der Text GREP-Stile benutzt (Bug im GUI und im DOM?)

Uwe Laubender
Beiträge gesamt: 4853

12. Jun 2014, 07:40
Beitrag # 4 von 4
Beitrag ID: #528345
Bewertung:
(1315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Gerald Wenn ich direkt vor dem Ersetzen wiederholt auf "Find Next" klicke, bis ich alle Fundstellen der ersten drei Absätze durchgewandert bin und dann auf "Alle Ersetzen" klicke, werden die vom ersten und vom dritten Absatz blau.


Guten Morgen, Gerald!

Ja, hochinteressant. Das erklärt die unterschiedliche Anzahl von Fundstellen je länger ich mich mit dem Problem "beschäftigt" hatte. Da scheint ein "Aktivierungsmechanismus" am Werk zu sein, den ich noch nicht so ganz durchschaue.

Ich bin noch unentschlossen, ob sich eine tragfähige Analogie für das Verhalten von S&E in dieser Situation finden lässt. Dein Vergleich mit dem farbigen Scheinwerfer für die Auswirkungen des GREP-Stils ist verführerisch. Gut, sich GREP-Stile im Hinblick auf die Durchsuchbarkeit von Text mit S&E genauer anzuschauen.

Werde mal mit einem frisch gestarteten InDesign testen. Vielleicht findet sich ja ein Weg "alle" möglichen Fundstellen zu aktivieren, in dem zunächst mal nach allen "a" ohne Einschränkung zu suchen (ohne Ersetzung), um in einem zweiten Schritt Einschränkungen vorzunehmen.

Per Skript ist das ja leicht möglich. Hier am Beispiel: Finde alle "a" im Dokument. Durchlaufe die Suchergebnisse und prüfe, ob sich die Farbe "Red" darunter befindet, färbe dann um in die gewünschte Farbe.

Das alles kostet natürlich Rechenzeit. Mir scheint ein Ansatz wie in 5. gezeigt, könnte den Vorteil haben schneller und vor allem gründlcher zu sein.

Losgelöst vom Skripten, also nur die grafische Benutzeroberfläche im Auge, sehe ich noch keinen vernünftigen Ansatz, eine S&E-Aufgabe verlässlich zu lösen, wenn verschachtelte Formatierung angewendet wurde.

Ich picke hier mal bewusst nicht nur die GREP-Stile heraus, sondern richte den Blick auch auf andere Verschachtelungsmöglichkeiten wie z.B. "Initialen", "Verschachtelte Formate" und "Verschachtelte Zeilenformate".

Möglicherweise kommt auch die Formatierung von "Fußnotenverweis-Nummern im Text" in Betracht. Oder die Anwendung von "Aufzählungszeichen" und "Zahlen" für den "Listentyp" in Absatzformatierungen in der Funktion "Aufzählungszeichen und Nummerierung".

Also immer dann, wenn *versteckt* (verschachtelt) mit Zeichenformaten gearbeitet wird.
Das würde so manches Phänomen (mageres Suchergebnis oder "keine Fundstelle") erklären, das ich bisher mit S&E hatte.

Mal sehen, was da weitere Tests ergeben.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#528340]
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
25.01.2021 - 26.01.2021

Digicomp Academy AG, Bern oder Zürich
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

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

Ja

Organisator: Digicomp Academy AG

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

digicomp.ch/d/PHOTM1

Veranstaltungen
25.01.2021 - 26.01.2021

Digicomp Academy AG, Zürich oder virtuell
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

Im Kurs lernen Sie die Schritte vom Import des Rohmaterials bis zum fertig exportierten Clip kennen. Dazu zählen die Materialverwaltung, das Trimmen für Roh- und Feinschnitt, Blenden, Titel und Effekte und eine Übersicht über die wichtigsten Formate.

Preis: CHF 1'700.-
Dauer: 2 Tage

Ja

Organisator: Digicomp Academy AG

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

digicomp.ch/d/AP6

Neuste Foreneinträge


Absätze vor/nach AF suchen

Langsamer MacMini

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

Illustrator Skript Übersatztext - Hilfe benötigt

ID CC 2019 und 2020: Crash beim Startvorgang - 2021

Gleich Große Icons erstellen

Inhalt Textrahmen verbinden

iPhone Farbprofil

Exel ohne leeres Tabellenblatt starten

Text- oder Grafikrahmen nach Position und Größe suchen und ändern
medienjobs