[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Probleme beim suchen & ersetzen

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

Probleme beim suchen & ersetzen

Karsten Lange
Beiträge gesamt: 203

20. Jan 2023, 12:41
Beitrag # 1 von 11
Bewertung:
(4298 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo alle zusammen.

Wahrscheinlich schafft nur jemand der nicht weiß was er da tut solche Dinge, aber vielleicht könnt ihr für Erleuchtung sorgen.

Ich wähnte mich bis jetzt mit Suchen&Ersetzen auf der sicheren Seite habe aber nun folgenden Fall.

Kopiert bitte folgenden Absatz in ein InDesign-Dokument, fügt an der Stelle [LESEZEICHEN-MARKER] ein Lesezeichen ein (Fenster > Interaktiv > Lesezeichen), formatiert die 2 hochgestellt, legt ein Zeichenformat Namens hochgestellt an und stellt es entprechend ein.
Text1 [LESEZEICHEN-MARKER]Text2 gefolgt von m2. Und die 2 hochgestellt formatieren.

Text1 [LESEZEICHEN-MARKER]Text2 gefolgt von m2. Und die 2 hochgestellt formatieren.


Dann führt den Code aus (dazu sollte der Cursor im Text stehen) und ihr solltet danach sehen, dass nicht die 2 mit dem Zeichenformat hochgestellt formatiert ist, sondern der Punkt dahinter.
Durch das löschen des Lesezeichen-Marker (was wohl von \\s* mit erfasst wird und bei der erfolgreichen Suche keine Rolle spielt) verschiebt sich der - was auch immer - Index(?) um eine Stelle und das _Bearbeitungsbereich-Objekt bekommt davon nichts mit.

So, und jetzt ihr (zutreffendes ankreuzen):
__ schon bekannt, siehe Forumbeitrag ________________
__ blöde Art Scripte zu schreiben
__ Bug

Was könnte ich anders machen? Ich fürchte zudem, dass das Lesezeichen nicht das einzige Zeichen ist, was diesen Effekt auslöst (Stichwort Indexmarken, Notizen etc.).

Danke für's lesen und ausprobieren.

Karsten



_Bearbeitungsbereich = app.selection[0].parent;

app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
app.findGrepPreferences.findWhat = "^(Text1)\\s*(Text2)\\s+(.+)";
app.changeGrepPreferences.changeTo = "$1~S$2~>$3";
_Bearbeitungsbereich.changeGrep();

app.changeTextPreferences = NothingEnum.nothing;
app.findTextPreferences = NothingEnum.nothing;
app.findChangeTextOptions.caseSensitive = true;
app.findChangeTextOptions.includeFootnotes = true;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;
app.findTextPreferences.position = Position.SUPERSCRIPT;
app.changeTextPreferences.appliedCharacterStyle = app.activeDocument.characterStyles.itemByName('hochgestellt');
_Bearbeitungsbereich.changeText();
X

Probleme beim suchen & ersetzen

berner
Beiträge gesamt: 285

20. Jan 2023, 14:21
Beitrag # 2 von 11
Beitrag ID: #585348
Bewertung:
(4260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten

Skripten ist überhaupt nicht mein Ding, deshalb kann ich das nicht nachvollziehen.
Wenn ich recht verstehe, geht es aber darum, dass das falsche Zeichen hochgestellt wird.

Formatiere die hochgestellte Zahl nach dem "m" doch per Grep-Stil (siehe Screenshot).
Dazu brauchst Du nur ein Absatzformat mit dem Grep-Stil und ein Zeichenformat für das hochstellen.

Vielleicht klappt's ja so...

ä Gruess
Stephan


als Antwort auf: [#585345]
Anhang:
Bildschirmfoto 2023-01-20 um 14.16.49.png (103 KB)

Probleme beim suchen & ersetzen

Karsten Lange
Beiträge gesamt: 203

21. Jan 2023, 10:40
Beitrag # 3 von 11
Beitrag ID: #585357
Bewertung:
(4155 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

ich bin auch kein Programmierer, was mich aber auch nicht davon abhält (Nebenwirkungen leider eingeschlossen).

Aber Danke das du dir Gedanken darüber gemacht hast mir zu helfen und in diesem Fall hätte das auch ohne Script eine Lösung sein können, aber darum ging es mir nicht. Statt m2 hätte ich auch ein kursives Wort im Beispiel verwenden können, bei dem dann nach dem Script die Kursivierung um ein Zechen nach rechts verschoben gewesen wäre.

Mein angeführtes Beispiel soll eigentlich nur mein Script-Problem optisch verdeutlichen und nachvollziehbar machen. Hoffe das mir das jemand erklären kann, was ich da falsch mache und mir vielleicht - wie du - ein Gedankenanstoß gibt.

Ein schönes Wochenende wünsch ich. Karsten.


als Antwort auf: [#585348]

Probleme beim suchen & ersetzen

Uwe Laubender
Beiträge gesamt: 5314

25. Jan 2023, 18:17
Beitrag # 4 von 11
Beitrag ID: #585361
Bewertung:
(4122 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Karsten Mein angeführtes Beispiel soll eigentlich nur mein Script-Problem optisch verdeutlichen und nachvollziehbar machen.


Hallo Karsten,
da Du das gleiche Ergebnis auch im GUI sehen wirst, liegt's nicht an Deinen Skripting-Kenntnissen oder an einem Fehler im Skript, sondern an InDesign selbst.

Ich denke, der Ansatz mit den unterschiedlichen Textteillängen, zwei Zeichen werden durch eines ersetzt, führt dazu, dass sich die Formatierung der Zeichen einfach verschiebt. Die Ursache ist also nicht das Sonderzeichen für Lesezeichen, sondern liegt in der Tatsache begründet, dass zwei Zeichen durch eines ersetzt werden.

Ich habe diesen Verschiebungseffekt mal mit einer unterschiedlichen Farbgebung der Zeichen nachgestellt.
Die "Whitespaces" im Text sind alle mit "Schwarz" formatiert:

https://www.dropbox.com/...achERSETZEN.PNG?dl=0

Die InDesign-Datei zum Runterladen:
https://www.dropbox.com/...tSich-2023.indd?dl=1


als Antwort auf: [#585357]

Probleme beim suchen & ersetzen

Karsten Lange
Beiträge gesamt: 203

26. Jan 2023, 10:27
Beitrag # 5 von 11
Beitrag ID: #585364
Bewertung:
(4047 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Danke für deine Rückmeldung und ausprobieren. Ich sehe das auch so, dass das ersetzen von 2 durch 1 Zeichen dafür verantwortlich ist, aber ...
... für mich hängt es schon mit dem Lesezeichen zusammen, weil bei jedem* anderen Zeichen würde die erste Suche ja keinen Treffer landen und man hätte das Problem nicht.
Nur was tun dagegen? In meinem konkret praktischen Fall sind mir die Lesezeichen egal und ich lösche sie zuerst, aber das ist ja keine vernünftige Lösung. Ich verstehe nicht, warum das Object _Bearbeitungsbereich nach dem ersten suchen&ersetzen nicht mehr den aktuellsten "Stand" hat. Wie gesagt, ich bin kein Programmierer.
Das Problem ist eigentlich das die Suche etwas findet, was sie nicht finden dürfte. Klar kann das auch mal von Vorteil sein, aber unbemerkt löscht man dadurch automatisch auch Lesezeichen, Indexmarken und wer weiß was noch.


Danke und schönen Gruß - Karsten.


* Wie gesagt, ich denke nicht, dass das Lesezeichen das einzige Sonderzeichen mit diesem Effekt ist.


als Antwort auf: [#585361]

Probleme beim suchen & ersetzen

WernerPerplies
Beiträge gesamt: 2759

26. Jan 2023, 11:07
Beitrag # 6 von 11
Beitrag ID: #585365
Bewertung:
(4033 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Karsten,

eigentlich ist das doch kein wirklich großes Problem, wenn Du die Aufgabe aufteilst:

1. Suche
2. Ergebnis untersuchen und je nach Ergebnis die Ersetzung vornehmen.

Und wichtig, Ersetzungen verschieben Text, deshalb must Du ein Textobjekt immer von Hinten nach Vorne durch arbeiten.


als Antwort auf: [#585364]

Probleme beim suchen & ersetzen

Uwe Laubender
Beiträge gesamt: 5314

26. Jan 2023, 13:27
Beitrag # 7 von 11
Beitrag ID: #585372
Bewertung:
(4003 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Karsten für mich hängt es schon mit dem Lesezeichen zusammen, weil bei jedem* anderen Zeichen würde die erste Suche ja keinen Treffer landen und man hätte das Problem nicht.


Hallo Karsten,
schau' Dir doch bitte mal meine InDesign-Datei an.
Da habe ich in einem zweiten Beispiel anstelle des Lesezeichens ein zweites Leerzeichen genommen. Gleicher Effekt. Die Formatierung verschiebt sich.


als Antwort auf: [#585364]

Probleme beim suchen & ersetzen

Karsten Lange
Beiträge gesamt: 203

26. Jan 2023, 22:08
Beitrag # 8 von 11
Beitrag ID: #585382
Bewertung:
(3944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Abend Uwe,
Abend Werner,

hast recht Uwe, habe mir deine InDesign-Datei nicht angesehen. Entschuldige, sehr unhöflich von mir. Nun aber. Und ja du hast recht, auf das Lesezeichen kommt es nicht drauf an. Verstehe allerdings die Logik nach wie vor nicht, dass die An- oder Abwesenheit eines Lesezeichen die Suche überhaupt nicht tangiert.
Und wie du schon geschrieben hast gibt es den gleichen Effekt auch ganz normal mit Suchen&Ersetzen in InDesign und da spielt es auch keine Rolle, ob die Zeichen manuell oder per Zeichenformat formatiert wurden. Die Formatierung verspringt um die Anzahl der durch die GREP-Suche entfernten oder hinzu gekommenen Zeichen. Das kann soweit gehen das die komplette Formatierung einfach weg ist.
Text: Karsten Lange (zwischen Karsten und Lange bitte viele Leerzeichen tippen und Lange noch rot formatieren)
Suche nach: (Karsten)\s+(Lange)
Ersetze durch: $1 $2

Ich finde das offengestanden immer erschreckender. Geht's nur mir so?


@Werner: "eigentlich ist das doch kein wirklich großes Problem"
Entschuldige, vielleicht stehe ich auf dem Schlauch und es ist auch schon spät. Dein Ansatz wird möglicherweise funktionieren, aber das oben beschriebene schränkt die Einsatzmöglichkeit der GREP-Suche&Ersetze schon etwas ein.? Und das Rückwärts-Ersetzen hat jetzt zumindest in InDesign auch keinen Effekt gehabt. Beim Script habe ich es jetzt offengestanden noch nicht ausprobiert.


Ich schlafe jetzt erst einmal drüber, wünsche euch ein gutes Nächtle und bedanke mich für eure Antworten.

Karsten.


als Antwort auf: [#585372]
(Dieser Beitrag wurde von Karsten Lange am 26. Jan 2023, 22:11 geändert)

Probleme beim suchen & ersetzen

RainerKlute
Beiträge gesamt: 23

27. Jan 2023, 10:06
Beitrag # 9 von 11
Beitrag ID: #585387
Bewertung:
(3845 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,
kennst Du den technischen Hintergrund? Also: Geht das technisch einfach nicht anders als dass die Formatierung positionsabhängig ist bei der GREP-S&E? Ist es ein Bug? Oder eher als Feature gedacht8könnte ja auch sein, man weiß ja nie…)?

Viele Grüße
Rainer


als Antwort auf: [#585372]

Probleme beim suchen & ersetzen

Karsten Lange
Beiträge gesamt: 203

27. Jan 2023, 10:36
Beitrag # 10 von 11
Beitrag ID: #585388
Bewertung:
(3835 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo ihr alle,

tja, mir fehlt die Erfahrung um sagen zu können wie andere Programme mit RegEx-Befehlen und Formatierungen umgehen.

Diese Verschiebung der Formatierung betrifft auch nur die Textstellen, die von der GREP-Suche erfasst werden. Dahinter stehender Text (bis zum Absatzende) der von der Suche nicht erfasst wird, kommt auch nicht in den "Genuss" der Formatierungsverschiebung. Das ist eine gute Nachricht.
Das $1 etc. scheinst aber wirklich nur den reinen Text (also ohne Formatierung) erfasst, darauf war ich nicht gefasst.

Zur Wahrheit gehört aber auch, dass es wohl in der Praxis eher selten ist, dass alle Voraussetzungen gegeben sind, dass diese Anomalie auftritt. Sonst wäre es mir/euch schon früher über den Weg gelaufen.

Es verunsichert mich zumindest bei der zukünftigen Verwendung von GREP-Suchen.

Einen guten Wochenausklang für euch - Karsten.


als Antwort auf: [#585387]

Probleme beim suchen & ersetzen

Uwe Laubender
Beiträge gesamt: 5314

27. Jan 2023, 12:24
Beitrag # 11 von 11
Beitrag ID: #585391
Bewertung:
(3807 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rainer,
meiner Ansicht nach ist das ist weder Bug noch Feature.
Es ist die Konsequenz aus der Tatsache, dass eben nicht die Formatierung angerührt wird, sondern nur Zeichen mit Zeichen ersetzt werden. In den Ersetzungsgruppen, deren Zeichenlängen einfach festgehalten werden…

Vermeiden kann man die Verschiebung der Formattierung, indem wir anders an die Geschichte herangehen:

Mit positiven lookbehinds oder in anderen Fällen mit positiven lookaheads arbeiten, um genau die Stellen zu treffen, die ausgetauscht werden sollen.

Dann braucht's aber möglicherweise 2 GREP Suchen/Ersetzen-Durchgänge.
Um beim ersten Beispiel zu bleiben:

Code
(?<=^Text1)\s* 

Code
~S 


und:

Code
(?<=Text2)s+ 

Code
~> 



als Antwort auf: [#585387]
X