hilfdirselbst.ch
Facebook Twitter gamper-media
Bastian
Beiträge: 10
24. Nov 2017, 15:46
Beitrag #1 von 6
Bewertung:
(4433 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Liebe Leser,

ich probiere gerade, eine einigermaßen "sorgenfreie" GREP-Suche zu erstellen, um Zahlen und Einheiten mit einem Achtelgeviert zu spationieren.

Dabei möchte ich diese Abfolgen finden:
100mm
100 mm

aber diese hier nicht (damit ich sie nicht immer und immer wieder finde):
100[achtelgeviert]mm

Vereinfacht sieht das Muster aktuell so aus:

Suchen: (\d+)(?<!~<) ?(?=mm\>)
Ersetzen: $1~<

Also:
– (\d+) such nach einer oder mehr Ziffern (als Suchgruppe)
– (?<!~<) hör auf wenn schon ein Achtelgeviert da ist
– ? ein Space oder keiner
– (?=mm\>) schau ob danach eine Einheit folgt (im Beispiel nur mal die mm drin, sind natürlich mehr als das)
– $1~< ersetze die gefundene Zahl und häng ein Achtelgeviert an

Das funktioniert auch bestens, und ich finde nicht ständig schon "erledigte" Fälle (wie wenn ich nach \s suchen würde).




"Schönheitsfehler" an der Sache ist, dass ich die Zahl mit suche und dann wieder mit sich selbst ersetze.

Schöne fände ich eine dieser Suchstrings:
(?<=\d)(?<!~<) ?(?=mm\>) oder
(?<=\d(?<!~<)) ?(?=mm\>)

Es stellt die Ziffer auch in einen Lookahead, schließt dann (geklammert oder in Serie) ein möglicherweise vorhandenes Achtelgeviert aus und schaue nach ob eine Einheit folgt.

Die Suche funkioniert auch – es findet die Stelle zwischen 100 und mm und markiert diese (also sogar das "nichts" in "100mm"), wenn da ein Space drin ist oder keiner (aber nicht beim Achtelgeviert).
Allerdings klappt das Einfügen nur beim Fall "100 mm", aber nicht bei "100mm" ... d.h. beim Klick auf "Suchen" wird das Nichts zwischen 100mm gefunden, aber beim Klick auf "Ersetzen" wird dann nichts ersetzt.

Gibt's dafür eine Lösung oder kann man einfach nicht "Nichts durch Etwas" in Indesign ersetzen?

Vielen Dank für jede Idee
Bastian
Top
 
X
Kai Rübsamen  M  p
Beiträge: 4486
24. Nov 2017, 19:06
Beitrag #2 von 6
Beitrag ID: #560984
Bewertung:
(4414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Antwort auf: Gibt's dafür eine Lösung oder kann man einfach nicht "Nichts durch Etwas" in Indesign ersetzen?

Letzteres ist der Fall.

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#560969] Top
 
NEU!
Beiträge: 172
21. Dez 2017, 17:49
Beitrag #3 von 6
Beitrag ID: #561563
Bewertung:
(3229 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Wie wäre es mit einem GREP, welches das Absatzformat permanent überwacht/korrigiert?

Ich habe grad kein InDesign zu Hand, kanns aber morgen nachreichen, vom Ablauf her:

Finde die Stelle, dreen positives LookAhead "mm" findet und deren positiv LookBehind eine Zahl beliebiger Länge findet. Dieser Leerstelle weist du ein Zeichenformat zu, welches nur die Spationierung enthält.
123mm wird optisch zu 123 mm.

Dazu dann noch ins Absatzformat den Fall: Finde Zahl beliebiger länge mit positivem LookAhead "mm" und wende ZF Spationierung an.

Oder muss das zwingend per Suchen/Ersetzen gemacht werden, weil zB kein Absatzformat verwendet werden kann?
als Antwort auf: [#560984] Top
 
Uwe Laubender S
Beiträge: 4042
22. Dez 2017, 00:17
Beitrag #4 von 6
Beitrag ID: #561565
Bewertung:
(3208 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Hallo Jan,

aus meiner Erinnerung:

Exotische Alternative 1:
Wir hatten mal vor Jahren den Fall, da konnte einem Zeichenformat eine Unterschneidung als Eigenschaft mitgegeben werden. War damals in CS3. Das müsste nach wie vor über ein paar Tricks mit dem Editieren von IDMS-Schnipseln gehen, wird aber seit CS5 nicht mehr von der Benutzeroberfläche unterstützt.

Dann wäre das per GREP-Stil kein Problem. Ganz ohne Skripting.

Hier zwei Fundstellen von 2014:
https://www.hilfdirselbst.ch/..._P523179.html#523179

https://www.hilfdirselbst.ch/..._P523209.html#523209

Exotische Alternative 2:
Eigener Font mit dem Zeichen "m" bauen, das eine große Vorbreite hat. Lizenzrechte am Font vorausgesetzt, wäre das sogar mit der kostenlosen Version von Jongwares/Marc Autrets Skript IndyFont machbar und könnte per GREP-Stil angewendet werden.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#561563] Top
 
NEU!
Beiträge: 172
22. Dez 2017, 08:56
Beitrag #5 von 6
Beitrag ID: #561567
Bewertung:
(3187 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Hallo Bastian,

habe es kurz zusammengeklickt und es funzt ganz gut. Leider kann ich dir per PM keine Datei schicken, weil das Limit für Gratisuser unsinnigerweise bei 300kb liegt und ich eine leere InDesign-Datei nicht unter 0.8mb zippen kann, …dann halt ausgeschrieben:

Ein Absatzformat durch folgende zwei GREPS ergänzen:

\d(?=(mm|cm|m))
Zeichenformat: Spationierung+100

(?<=\d) (?=(mm|cm|mm))
Zeichenformat: Spationierung-98
als Antwort auf: [#560969] Top
 
Bastian
Beiträge: 10
22. Dez 2017, 10:40
Beitrag #6 von 6
Beitrag ID: #561569
Bewertung:
(3171 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

GREP: Zahl und Einheit spationieren für Fortgeschrittene (oder Theoretiker)


Besten Dank für die Ideen.

Über eine GREP-Formatierung hatte ich auch schon nachgedacht und (ganz ähnlich wie vorgeschlagen) eingesetzt.

Das Problem dabei ist, dass die Texte aus den Dokumenten um die es geht potentiell dann auch in anderen Sekundär-Dokumenten wiederverwertet werden, und wir haben dort nicht immer die Kontrolle darüber, ob die Formate immer richtig verwendet werden (außer Haus, komplizierte Kunden).
D.h. alles was nicht "in handfesten Zeichen" im Text ist, fliegt potentiell durch Bedienfehler und Unwissen wieder raus und der Kunde beklagt sich dann, dass unsere Lösung "unpraktisch" wäre ...

Wir machen es aktuell als mit Suchen/Ersetzen und Fundgruppen/$#-Ersetzungen, das klappt ja auch.
als Antwort auf: [#561567]
(Dieser Beitrag wurde von Bastian am 22. Dez 2017, 10:41 geändert)
Top
 
X