[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Doppelte Leerzeichen ersetzen (CS6, Win7)

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

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

13. Jun 2014, 19:40
Beitrag # 1 von 14
Bewertung:
(8240 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich möchte doppelte Leerzeichen durch ein einzelnes Leerzeichen ersetzen.

Das habe ich bisher immer mit findchangebylist gemacht:
Code
grep	{findWhat:"  +"}	{changeTo:" "} 
grep {findWhat:"\\x{20}+$"} {changeTo:""} //Leerzeichen am Absatzende. Hier befindliche Indexmarken gehen auch verloren


Das Problem:
Wenn sich zwischen den beiden Leerzeichen eine Indexmarke befindet, wird diese ebenfalls gelöscht. Das ist natürlich gefährlich. Indesign darf doch diese Zeichenfolge [Leer][Indexmarke][Leer] bei einer Suche nach [Leer][Leer] nicht einfach löschen?

Nun suche ich einen Weg per eigenem Suchen und Ersetzen Script diese Indexmarken zu berücksichtigt.

Über Hilfe freue ich mich.
Kleines Demo-Dok anbei.

Gruss
Christoph

Anhang:
leerzeichen.idml (29.7 KB)
X

Doppelte Leerzeichen ersetzen (CS6, Win7)

pixxxelschubser
Beiträge gesamt: 1708

13. Jun 2014, 20:05
Beitrag # 2 von 14
Beitrag ID: #528428
Bewertung:
(8222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
IMHO sind Indexmarker etc. nicht so einfach und umfassend per Grep greifbar (das funktioniert ausnahmsweise wesentlich einfacher und besser mit der Textsuche).

Deshalb würde ich in deinem Fall vielleicht eher findText ^w^w versuchen. Das sollte eigentlich die Indexmarker und ähnliche Zeichen unangetastet lassen.

Und falls du die Marker mit finden möchtest, dann funktioniert ^w<FEFF>^w genausogut. Nur mit dem Ersetzen wird dann wieder eine „Zweischritttechnik“ nötig. (Und wirf mal hier die Forensuche nach FEFF an, vielleicht bekommst du dann noch andere Alternativen.)


als Antwort auf: [#528426]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

13. Jun 2014, 20:23
Beitrag # 3 von 14
Beitrag ID: #528429
Bewertung:
(8212 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo pixxxelschubser,

danke fürs antworten.

Der Suchstring ^w^w findet leider auch dieses Vorkommen [leer][index][leer] und löscht dann den Index mit.

Ich bin wieter auf der Suche nach einer "Zweischritttechnik".

Grüße
Christoph


als Antwort auf: [#528428]

Doppelte Leerzeichen ersetzen (CS6, Win7)

gfellenz
Beiträge gesamt: 121

14. Jun 2014, 15:56
Beitrag # 4 von 14
Beitrag ID: #528439
Bewertung:
(8121 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe mal 2010 in meinem Blog darüber einen längeren Beitrag gehabt.

http://www.indesignblog.com/...ace-serachreplace-2/

Das dort vorgestellte Skript ist aber nicht mehr ganz aktuell. Habe zufällig auf der Pubkon heute das gleiche Problem angesprochen. Das Skript von der Pubkon ist hier zu finden:

http://www.publishingx.de/...d/TextBereinigen.jsx


als Antwort auf: [#528429]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

14. Jun 2014, 16:09
Beitrag # 5 von 14
Beitrag ID: #528441
Bewertung:
(8115 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Gregor Fellenz,

vielen Dank für das Script und den Beitrag dazu.

So klappt es prima.

Grüße
Christoph


als Antwort auf: [#528439]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

10. Jul 2014, 19:55
Beitrag # 6 von 14
Beitrag ID: #529603
Bewertung:
(7882 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich muss nochmals nachfragen bezüglich diesen Zeilen:

Code
	// Leerzeichen am Zeilenende löschen 
app.findGrepPreferences.findWhat = " +$";
if (replaceObject.characters.length > 0) fixHSpace(replaceObject.findGrep(true));
else return;
// Leerzeichen am Zeilenanfang löschen
app.findGrepPreferences.findWhat = "^ +";
if (replaceObject.characters.length > 0) fixHSpace(replaceObject.findGrep(true));
else return;



Die Indexmarke bleibt erhalten. Das ist gut.
Es bleibt dennoch ein einziges Leerzeichen übrig.
Am Absatzende wäre es nicht so schlimm, aber am Absatzanfang ist es störend.

Der Suchstring "^ +" manuell angewendet (STRG+F) bereinigt alle Leerzeichen.
Dummerweise aber auch die Indexmarke.

Muss ich den Suchstring noch irgendwie anpassen?

Bitte um Hilfe.
Gruss
Christoph


als Antwort auf: [#528441]

Doppelte Leerzeichen ersetzen (CS6, Win7)

Kai Rübsamen
Beiträge gesamt: 4684

10. Jul 2014, 20:25
Beitrag # 7 von 14
Beitrag ID: #529606
Bewertung:
(7863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

bei mir werden nur mehrere Leerstellen zu einer Leerstelle mit dem Skript zusammengefügt. Ich verstehe leider da nicht, was Gregor da zaubert.

Am besten schreibst du ihm eine PM und schilderst dein Problem direkt.


als Antwort auf: [#529603]

Doppelte Leerzeichen ersetzen (CS6, Win7)

gfellenz
Beiträge gesamt: 121

11. Jul 2014, 16:09
Beitrag # 8 von 14
Beitrag ID: #529648
Bewertung:
(7787 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wenigstens einer testet mal die Skripte :-)

Den Suchstring kann man nicht anpassen. Das Problem beim normalen Ersetzen in InDesign ist ja genau dass z.B. die Indexmarken stillschweigend rausgelöscht werden. Daher auch die Motivation für das Skript.

Das Zeichen blieb übrig, weil die Funktion fixHSpace() ursrprünglich mal dazu gedacht war Textstellen mit mehreren Leerräumen zu einer zu vereinheitlichen.

Ich habe es mal angepasst.

http://www.publishingx.de/download/TextBereinigen.jsx

Ein schönes Wochenende.


als Antwort auf: [#529603]

Doppelte Leerzeichen ersetzen (CS6, Win7)

gfellenz
Beiträge gesamt: 121

11. Jul 2014, 16:11
Beitrag # 9 von 14
Beitrag ID: #529649
Bewertung:
(7785 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

der Trick bei dem Skript ist, dass die komplette Suchstelle Zeichen für Zeichen analysiert wird. Indexmarken und andere von der Suche ignorierten Steuerzeichen werden ignoriert und das Zeichen mit der höchsten Wertigkeit (meine persönliche Einschätzung) bleibt erhalten.

Performance ist leider bescheiden, aber ich sehe keine andere Möglichkeit.


als Antwort auf: [#529606]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

12. Jul 2014, 10:02
Beitrag # 10 von 14
Beitrag ID: #529662
Bewertung:
(7699 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank Gregor,

so klappt es mit den Leerzeichen am Anfnag und Ende eines Absatzes.

Was mir nicht gelingen will, ist das Abschalten für mehrfache Tabulatoren:

Code
    // Mehrfach gesetzte Tabulatoren löschen 
app.findGrepPreferences.findWhat = "(?<=\\t)\\t+";
if (replaceObject.characters.length > 0) fixHSpace(replaceObject.findGrep(false), false);
else return;


Ich habe hier versucht beide Schalter auf "false" zu setzen.
Aber leider werden aller Tabulatoren auf 1 reduziert.

Wo muss ich hier eingreifen, dass Tabulatoren unberührt bleiben?

Danke und Gruß
Christoph


als Antwort auf: [#529649]

Doppelte Leerzeichen ersetzen (CS6, Win7)

gfellenz
Beiträge gesamt: 121

12. Jul 2014, 12:29
Beitrag # 11 von 14
Beitrag ID: #529663
Bewertung:
(7672 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Einfach die betreffenden Zeilen auskommentieren!


als Antwort auf: [#529662]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

12. Jul 2014, 12:53
Beitrag # 12 von 14
Beitrag ID: #529665
Bewertung:
(7665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ich merke gerade, dass dieser Grep verantwortlich für die Tabulatoren ist:

Code
app.findGrepPreferences.findWhat = "\\h{2,}"; 


Hiermit müsste es gehen:

Code
app.findGrepPreferences.findWhat = "  +"; 


Grüße
Christoph


als Antwort auf: [#529663]

Doppelte Leerzeichen ersetzen (CS6, Win7)

Kai Rübsamen
Beiträge gesamt: 4684

12. Jul 2014, 15:21
Beitrag # 13 von 14
Beitrag ID: #529669
Bewertung:
(7616 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Gregor,

danke fürs Anpassen und die Erklärung. Das mit der Performance fällt mir als Grafiker zumindest bei einer Seite nicht auf. Wenn das die einzigste Möglichkeit ist, ist das halt so.

Ich habe das Skript jetzt so verstanden, das in in der Funktion cleanHorizontalSpace() die eigentlichen Whitespacezeichen gesucht werden, um sie dann mit fixHSpace() noch mal genauer unter die Lupe zu nehmen.

@ Christoph:

Tabulatoren werden 2x gefunden:
app.findGrepPreferences.findWhat = "\\h{2,}"; und
app.findGrepPreferences.findWhat = "(?<=\\t)\\t+";

Ich würde den letzten auskommentieren und dann statt \\h eher \\x20 verwenden. Damit findest du dann aber auch keine doppelten geschützten Leerräume mehr.


als Antwort auf: [#529665]

Doppelte Leerzeichen ersetzen (CS6, Win7)

cwenet
Beiträge gesamt: 1139

14. Jul 2014, 19:25
Beitrag # 14 von 14
Beitrag ID: #529738
Bewertung:
(7478 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank,

so ist es prima.

Schönen Abend
Christoph


als Antwort auf: [#529669]
X