Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » GREP: Alle Leerräume

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 09:22
Bewertung:

gelesen: 51669

Beitrag als Lesezeichen
Liege ich mit meiner Vermutung richtig, daß InDesign per GREP mit "\s" nicht wie versprochen "alle Leerräume" findet, sondern nur den normalen Wortzwischenraum und den Tabulator?

Als workaround benutze ich statt "\s" folgenden Ausdruck, um alle Leerräume zu finden:
"[~m~>~>~f~|~S~s~<~/~.~3~4~%\s]".

Finde ich damit wirklich alle oder sind jemandem noch weitere bekannt?
Eventuell auch ein anderer workaround?

Viele Grüße
Martin


GREP: Alle Leerräume

pixxxelschubser
Beiträge gesamt: 1708

14. Nov 2007, 10:16
Bewertung:

gelesen: 51574

Beitrag als Lesezeichen
Hallo Martin,

ob dein Ausdruck alles findet - ich weiss es nicht.

Aber er sieht schön aus Sly


[~m~>~>~f~|~S~s~<~/~.~3~4~%\s]


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 10:33
Bewertung:

gelesen: 51558

Beitrag als Lesezeichen
Hans-Jürgen,

so gefällt mir der Ausdruck schon recht gut.
Du hast Dir einige Mühe gegeben:

[red][~m[/red][#ff4400]~>~[/#][#ff6600]>~f[/#][#ff9900]~|[/#][#ffcc00]~S[/#][#ffe900]~s[/#][#ffcc00]~<[/#][#ff9900]~/~[/#][#ff6600].~3[/#][#ff4400]~4~[/#][red]%\s][/red]

;-)


Allerdings würde er mir in der schlichteren Art wie "\#" (= alle Leerräume) noch besser gefallen.

Viele Grüße
Martin


GREP: Alle Leerräume

pixxxelschubser
Beiträge gesamt: 1708

14. Nov 2007, 10:46
Bewertung:

gelesen: 51554

Beitrag als Lesezeichen
Martin

Antwort auf: Allerdings würde er mir in der schlichteren Art wie "\#" (= alle Leerräume) noch besser gefallen.


Dann würden bestimmt gleich die andere Fraktion angetigert kommen: Wir hätten gern, dass die Suchabfrage nur alle "normalen" Leerzeichen berücksichtigt!

Oder: Ja, alle Leerräume ist schon oK, aber das Achtelgeviert möchte ich nicht mit auswählen… !

Bei der Vielzahl der möglichen Varianten ist die jetzige Methodik vielleicht nicht die, die Dir am Besten gefällt. Aber es dürfte die flexibelste Lösung sein
:-) oder :-( ?


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


GREP: Alle Leerräume

Marco Morgenthaler
Beiträge gesamt: 2474

14. Nov 2007, 12:53
Bewertung:

gelesen: 51526

Beitrag als Lesezeichen
Hallo Martin

Interessante Beobachtung und offenbar ein Bug, denn \s sollte laut Indesign-Hilfe und Peter Kahrels Short Cuts über GREP alle Leerzeichen finden, also neben dem normalen Leerschlag, Tab und Absatzende auch alle anderen Leerräume (Geviert, Halbgeviert usw.).

Übrigens funktioniert im Text-Reiter ^w (das Pendant zu \s im GREP-Reiter) einwandfrei.

Vielleicht kann jemand mit einer englischsprachigen Indesign-Version den Bug verifizieren, oder gilt der Fehler nur für die deutsche Version?

Ein Fall für den Feature request / Bug report. Hast du das dort schon gemeldet?

Gruss Marco

PS: Habe den Bug an Adobe weitergeleitet > http://www.adobe.com/...ex.cfm?name=wishform

(Dieser Beitrag wurde von Marco Morgenthaler am 14. Nov 2007, 13:05 geändert)

GREP: Alle Leerräume

Marco Morgenthaler
Beiträge gesamt: 2474

14. Nov 2007, 14:30
Bewertung:

gelesen: 51492

Beitrag als Lesezeichen
Martin
Zitat Finde ich damit wirklich alle oder sind jemandem noch weitere bekannt?


Nach deinen eigenen Recherchen gibt es doch an die 30 Leerzeichen, vgl. http://www.hilfdirselbst.ch/..._P210345.html#210345

Jetzt bin ich gespant auf deinen neuen GREP-Ausdruck =;o)

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 15:08
Bewertung:

gelesen: 51478

Beitrag als Lesezeichen
Marco,

danke für Deinen Hinweis.
Du wirst lachen, auf diese Liste bin ich gestern in einem ganz anderen Zusammenhang gestoßen.


> Jetzt bin ich gespant auf deinen neuen GREP-Ausdruck =;o)

Ich glaube, ich laß da lieber mal Adobe ran.
"\s" sollte wirklich alle Leerräume ansprechen.

Viele Grüße
Martin


GREP: Alle Leerräume

Peter Kahrel
Beiträge gesamt: 182

14. Nov 2007, 15:50
Bewertung:

gelesen: 51463

Beitrag als Lesezeichen
Martin,

In my (English) version of Indesign, \s captures all white space, including returns (\r). If you're using it in a script, maybe you forgot to escape the backslash:

...findGrep = "\\s";

If this is in the UI, it would indeed be a bug of the German version.

Peter

(Dieser Beitrag wurde von Peter Kahrel am 14. Nov 2007, 15:52 geändert)

GREP: Alle Leerräume

pixxxelschubser
Beiträge gesamt: 1708

14. Nov 2007, 15:57
Bewertung:

gelesen: 51459

Beitrag als Lesezeichen
Hallo Martin,

Zitat Allerdings würde er mir in der schlichteren Art wie "\#" (= alle Leerräume) noch besser gefallen.

Mit dem Suchergebnis könnte man alle Arten von Leerzeichen durch einen Wortabstand ersetzen. Gibt es noch andere Verwendungsmöglichkeiten?


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton


GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 16:10
Bewertung:

gelesen: 51454

Beitrag als Lesezeichen
Peter,

I did try it in the UI with "\s" and in a script with "\\s".
But with this expression I couldn't find something like "~>" (thin space).

I have detected this while writing some lines for FindChangeByList.jsx.
The following lines should put a thin space between a single or two character(s) followed by a dot followed by a single or two character(s) followed by a dot. (e.g. "e.g." -> "e.|g."; "J.Ch. Peirce" -> "J.|Ch. Peirce", "B. C. E." -> "B.|C.|E.", ...)

Code
grep	{findWhat:"\\<([\\u\\l]{1,2}\\.)[~m~>~>~f~|~S~s~<~/~.~3~4~%\\s]?([\\u\\l]{1,2}\\.)"}	{changeTo:"$1~<$2"}	{includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}	z. B. -> z.B.; z. Fs. -> z.Fs. 
grep {findWhat:"(\\u{1,2}\\.)[~m~>~>~f~|~S~s~<~/~.~3~4~%\\s]?([\\u\\l]{1,2}\\.)[~m~>~>~f~|~S~s~<~/~.~3~4~%\\s]?([\\u\\l]{1,2}\\.)"} {changeTo:"$1~<$2~<$3"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} H. L. J. -> H.L.J.


As you told that \s captures all white space in the english version of ID, this seems to be a bug in the german version.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 14. Nov 2007, 16:16 geändert)

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 16:14
Bewertung:

gelesen: 51450

Beitrag als Lesezeichen
Hans-Jürgen,

mein Beispiel, wie ich es versuchte, für FindChangeByList.jsx auszudrücken, siehst Du oben.

Nach Abarbeitung der ersten Zeile kam es vor, daß z.B. aus "J.C.B." das herauskam: "J.|B.C.".
Oder aus "J. B. C." das: "J.|B. C."

Im nächsten Durchgang sollte er diese Kombination aus drei Zeichen mit folgendem Punkt und kein Leerzeichen oder irgendeines bearbeiten, so daß aus J.|B.C."und aus "J.|B. C." das wird: "J.|B.|C.".

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 14. Nov 2007, 16:20 geändert)

GREP: Alle Leerräume

Peter Kahrel
Beiträge gesamt: 182

14. Nov 2007, 16:51
Bewertung:

gelesen: 51432

Beitrag als Lesezeichen
Martin,

Maybe I don't understand you properly, but you could insert those spaces with just one expression:

find: (?<=\u)\.(?=\u\.)
replace: .&#8201;~<

Peter

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 16:57
Bewertung:

gelesen: 51429

Beitrag als Lesezeichen
Peter,

oh!
I will give it a try.
But first I have to ride my scooter (thru the snow).

Thanks
Martin

GREP: Alle Leerräume

Peter Kahrel
Beiträge gesamt: 182

14. Nov 2007, 17:01
Bewertung:

gelesen: 51425

Beitrag als Lesezeichen
That replace expression should be jus .~< (I don't know where that unicode value came from).

Peter

GREP: Alle Leerräume

Marco Morgenthaler
Beiträge gesamt: 2474

14. Nov 2007, 17:01
Bewertung:

gelesen: 51423

Beitrag als Lesezeichen
Hallo Martin

Deine Vorgaben sollten durch folgenden GREP-Ausdruck erfüllt sein:

Suchen nach: ((?<=\b[\l\u])|(?<=\b[\l\u]{2}))\.(?=[\l\u]{1,2}\.)
Ändern in: .~<

Der GREP-Ausdruck findet also einen Punkt, wenn vorher eine Wortgrenze \b und ein oder zwei Buchstaben [\l\u] stehen (aufgedröselt in zwei Look behind ?<= mit Oder-Verknüpfung |) UND nachher (Look ahead ?=) ein oder zwei Buchstaben [\l\u]{1,2} und ein Punkt \. folgen. Die Gruppe {1,2} funktioniert im Look behind nicht, deshalb die Aufteilung mit «oder».

Bei meinem Test hat’s funktioniert: u.a. z.B. e.g. A.B.C. J.Ch. usw. Bei J.Chr. (drei Buchstaben) müsste der GREP-Ausdruck angepasst werden (zusätzliche ODER-Schleife im Look behind und {1,3} im Look ahead).

Gruss Marco

@Peter: (?<=\u)\.(?=\u\.) works well with uppercase letters only (A.B.C.), but not for u.a., e.g., z.B., J.Ch. etc.

(Dieser Beitrag wurde von Marco Morgenthaler am 14. Nov 2007, 17:16 geändert)

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 18:19
Bewertung:

gelesen: 6137

Beitrag als Lesezeichen
Marco,

das läuft prima!
Habe noch eine kleine Änderung eingefügt: "[ ~s~S~<]?" hinter den ersten Punkt.
Manchmal steht zwischen den Abkürzungen kein Leerraum und manchmal ist einer drin.

((?<=\b[\l\u])|(?<=\b[\l\u]{2}))\.[ ~s~S~<]?(?=[\l\u]{1, 2}\.)

Eine Sache macht mich noch etwas nervös: der Ändernausdruck ".^<"
Verflixt, die Lösung kommt beim Schreiben: im Suchenausdruck ist praktisch alles außer dem Punkt in lookbefore und lookbehind. Das ist ja raffiniert. Ich glaub’, ich lerne GREP. ;-)

Peter, I didn't take time yet to dig me deeper into your ShortCut, as you can see.
Sorry about that. :-(

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 14. Nov 2007, 21:12 geändert)

GREP: Alle Leerräume

Hans Haesler
Beiträge gesamt: 5826

14. Nov 2007, 21:40
Bewertung:

gelesen: 6121

Beitrag als Lesezeichen
Hallo Martin,

FWIW: Auch mit meiner französischen Version von InDesign CS3 dasselbe Problem: Mit "\s" wird nur der normale Leerraum gefunden. Aber nicht Geviert, Halbgeviert usw.

Doch immerhin – wie von Peter erwähnt – ein Return. Und auch: Shift-Return, Tabulator und Zeilenspalter.

Gruss, Hans

GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 21:59
Bewertung:

gelesen: 6118

Beitrag als Lesezeichen
Marco,

lookbehind und lookahead fängt an, mir Spaß zu machen.

Habe gerade aus zwei einzelnen Suchvorgängen zu einem zusammengeschmiedet:

Suche: "((?<=[\s\(\[])-(?![\s,]))|((?<!\s)-(?=[\s\)\]]))"
Ändere in: "~~"

Damit wird ein Divis/Bindestrich nach einem Leerzeichen, einer öffnenden Klammer ( oder [ durch einen geschützten Viertelgeviertstrich ersetzt. Dasselbe gibt bei einem Divis vor einem Leerzeichen und einer schließenden Klammer.
Ausnahme 1: Vor und nach dem Divis steht ein Leerzeichen (soll kein gesch. Viertelgeviertstrich werden, sondern ein Halbgeviertstrich).
Ausnahme 2: Nach dem Divis steht ein Komma - just jetzt fällt mir ein, daß man auch für diesen Fall unterscheiden müßte, ob dem Divis ein Leerzeichen oder ein anderes Zeichen vorangeht; in ersterem Falle wäre es ein Halbgeviertstrich, im anderen ein Viertelgeviertstrich.

Hast Du ne Idee, wie man das in dieser Zeile noch einbinden könnte? ;-)

Viele Grüße
Martin


GREP: Alle Leerräume

Martin Fischer
  
Beiträge gesamt: 12783

14. Nov 2007, 22:01
Bewertung:

gelesen: 6117

Beitrag als Lesezeichen
Hallo Hans,

ist es möglich, daß sich dieser Fehler erst mit dem letzten Bugfix eingeschlichen hat?
Ich meine mich dunkel daran zu erinnern, daß es früher mal so funktionierte, wie von Peter beschrieben.

Viele Grüße
Martin


GREP: Alle Leerräume

Hans Haesler
Beiträge gesamt: 5826

14. Nov 2007, 23:12
Bewertung:

gelesen: 6090

Beitrag als Lesezeichen
Hallo Martin,

jetzt, wo Du es sagst ... :-)

Ich habe für die "Fachhefte grafische Industrie" zwei Artikel über die "regular expressions" von InDesign CS3 geschrieben. Die ersten Nachforschungen dafür machte ich anfangs Juni.

Im ersten Artikel – erschienen in der Nummer 4.2007 – schrieb ich "... währenddem mit dem \s (= alle Leerräume) auch Halbgevierte usw. gefunden werden."

Ich bin sicher, dass ich dieses Verhalten damals getestet hatte. Mit einem deutschen CS3, am Arbeitsplatz. Nur weiss ich die genaue Versionsnummer nicht mehr.

Jetzt habe ich hier auf dem Heimrechner die Partition hochgefahren, auf welcher ein deutsches CS3 installiert ist. Das Update auf 5.01 ist bei diesem noch nicht gemacht. In den Informationen steht CS3(5.0.0.463).

Doch wie beim französischen 5.01 werden Halbgevierte (usw.) nicht mehr gefunden.

Gruss, Hans

GREP: Alle Leerräume

pixxxelschubser
Beiträge gesamt: 1708

4. Jan 2008, 17:52
Bewertung:

gelesen: 5891

Beitrag als Lesezeichen
Hallo Martin,

ich muss den Thread noch einmal hervorholen.
Was bewirkt die Suche nach posix
Code
[[:space:]] 


Werden damit "nur" (sämtliche) Leer- und Absatzzeichen gefunden, oder steckt da noch mehr dahinter?


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton