Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Abstand bei Zahlen

Abstand bei Zahlen

Beobachter
Beiträge gesamt: 136

10. Okt 2018, 16:39
Bewertung:

gelesen: 10354

Beitrag als Lesezeichen
Hallo alle
Um Zahlen gut lesbar zu halten verwende ich folgenden Grep-Stil

(?<=\d)\d(?=\d{3}\>)|\d(?=(\d{15}|\d{12}|\d{9}|\d{6})\>)

Das geht auch prima, aber wenn ich nur die Zahl in einer Textbox habe, braucht es die Zeilenschaltung, damit der Grep-Stil sauber angewendet wird.
Ist es möglich, den Grep-Stil so zu ändern, dass er auch ohne Zeilenschaltung funktionieren würde?
Gruess und Danke, Michel

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

15. Okt 2018, 09:11
Bewertung:

gelesen: 10263

Beitrag als Lesezeichen
Hallo Michel,

würdest Du bitte ein Beispiel-Dokument hochladen?

Gruss, Hans

Abstand bei Zahlen

Beobachter
Beiträge gesamt: 136

15. Okt 2018, 18:43
Bewertung:

gelesen: 10227

Beitrag als Lesezeichen
Guten Abend, Hans

Ich habe ein IDML hochgeladen.
Danke und Gruess, Michel

Anhang:
Grep-Stil Tausender Zahlen.idml (45.5 KB)

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

15. Okt 2018, 20:10
Bewertung:

gelesen: 10206

Beitrag als Lesezeichen
Guten Abend Michel,

danke für das Dokument.

Ja, das Problem ist so, wie Du es beschreibst. Eine einfache Abhilfe wäre: Nach der Zahl einen Leerschlag einfügen.

Doch eigentlich ist es keine Frage für die Skriptwerkstatt. Vielleicht sollte das Thema ins InDesign-Forum verschoben werden.
Auch dort hat es versierte GREP-Spezialisten. Und möglicherweise kann jemand eine Lösung vorschlagen.

Gruss, Hans

Abstand bei Zahlen

Thomas Richard
Beiträge gesamt: 19334

16. Okt 2018, 20:37
Bewertung:

gelesen: 10125

Beitrag als Lesezeichen
Es hängt am Wortende \> im hinteren Lookahead

Dieses steht als Platzhalter für alles was ein Wort beendet, also diverse Leerräume, Divis, Return, ...

Das ist aber nicht das selbe wie NICHTS.

Ich hab mit dem Passus \d{3}+ das ganze für alle Zahlenlängen >4 Ziffern universell nutzbar gemacht:
Code
(?<=\d)\d(?=\d{3}\>)|\d(?=(\d{3}(\d{3})+\>)) 


Ist aber auch keine Lösung für das Problem, wenn nur eine Zahl im Textrahmen steht.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

Abstand bei Zahlen

Thomas Richard
Beiträge gesamt: 19334

17. Okt 2018, 01:04
Bewertung:

gelesen: 10097

Beitrag als Lesezeichen
Antwort auf: Ich hab mit dem Passus \d{3}+ das ganze für alle Zahlenlängen >4 Ziffern universell nutzbar gemacht


Uups. Im zitierten GREP ists korrekt. Es muss natürlich (\d{3})+ heissen.
--> Findet das ein- und vielfache von drei Ziffern in Folge.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

17. Okt 2018, 08:53
Bewertung:

gelesen: 10065

Beitrag als Lesezeichen
Hallo Thomas,

danke für die Bestätigung. Dass es keine direkte Lösung gibt.

@ Michel: Wenn Du den verkürzten GREP von Thomas kopierst, den Leerschlag entfernen, welcher vom Server angefügt wurde.

Gruss, Hans

Abstand bei Zahlen

Thomas Richard
Beiträge gesamt: 19334

17. Okt 2018, 13:24
Bewertung:

gelesen: 10010

Beitrag als Lesezeichen
So, und zur Lösung des eigentlichen Problems.

Ich hab es nicht geschafft in den GREPstil alternativ zum Wortende auch och das Absatzende $ zu implementieren (k.A. warum das nicht greift), aber du kannst per
Code
^\d+$ 

per Suchen und Ersetzen mit
Code
$1~/ 

ein Ziffernleerzeichen an alle Ziffern hängen, die das letzte Zeichen eines Textrahmens mit nur Ziffern sind.

Wenn du das Ziffernleerzeichen nicht anderweitig verwendest, hast du damit auch die Möglichkeit, sie einfach wieder komplett verschwinden zu lassen (wenn doch noch ne gescheite Lösung auftaucht ;) ).


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

(Dieser Beitrag wurde von Thomas Richard am 17. Okt 2018, 13:27 geändert)

Abstand bei Zahlen

Kai Rübsamen
  
Beiträge gesamt: 4684

17. Okt 2018, 21:25
Bewertung:

gelesen: 9915

Beitrag als Lesezeichen
Ich hab keine Ahnung, warum es per Grep-Stil nicht geht, per S&E geht es wie im beigefügten Screenshot.

Gruß Kai Rübsamen

Anhang:
Bildschirmfoto 2018-10-17 um 21.23.58.png (67.5 KB)

Abstand bei Zahlen

Thomas Richard
Beiträge gesamt: 19334

17. Okt 2018, 22:12
Bewertung:

gelesen: 9901

Beitrag als Lesezeichen
Mit deinem GREP funktionierts bei mir hier in CS6 gar nicht. Weder per S&E noch per Grepstil:


Wo ich aber langsam an einen Bug glaube, ist sowas hier:


Bei 5, 8 und 11 Ziffern funktioniert es für die erste Trennstelle, danach dann nicht mehr.


Außerdem hast du die Ausnahme der vierstelligen Zahlen nicht mit in deinem GREP, war das Absicht?


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

Anhang:
GREP_Zahlenabstand.png (64.0 KB)   GREP_Zahlenabstand2.png (44.2 KB)

Abstand bei Zahlen

Kai Rübsamen
  
Beiträge gesamt: 4684

17. Okt 2018, 22:23
Bewertung:

gelesen: 9895

Beitrag als Lesezeichen
Ja, war Absicht. Ich hab mir den Original-GREP aus dem ersten Post hier nicht betrachtet. Komisch, dass es in CS6 nicht geht.

Gruß Kai Rübsamen

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

18. Okt 2018, 08:10
Bewertung:

gelesen: 9804

Beitrag als Lesezeichen
Hallo Thomas,

Antwort auf: Mit deinem GREP funktionierts bei mir hier in CS6 gar nicht

Weil Du am Ende eine Klammer zuviel getippt hast. :-)

@ Kai: Abgesehen davon: Ob GREP-Stil oder Suchen/Ersetzen ... das erstrebte Ergebnis ist dasselbe.

Aber sonst sind die beiden Methoden grundverschieden. Mit dem GREP-Stil werden keine greifbaren Tausender-Trennzeichen eingefügt. Der Vorteil: Bei einer Änderung der Anzahl Ziffern werden die Positionen automatisch korrigiert.

Gruss, Hans

Abstand bei Zahlen

Thomas Richard
Beiträge gesamt: 19334

18. Okt 2018, 13:01
Bewertung: |||

gelesen: 9749

Beitrag als Lesezeichen
Danke Hans!

Jetzt findet Kais Grep 1-3 ziffrige Zahlengruppen wenn drei oder vielfache von 3 an Zahlen hinten dran stehen.

Das kann mit dem verwendeten GREP-Stil aber nicht funktionieren, da dort immer nur der Ziffer vor der erstrebten optischen Trennung eine +200 Laufweite zugewiesen wird.

Ich hab jetzt noch etwas herumprobiert.
Es kommt bei den Rahmen die nur Ziffern enthalten immer dann ins trudeln wenn Optionales im GREP abgefragt wird, sprich wenn ich das + entferne oder die | rausnehme, funktioniert es für den dann noch gültigen Teilbereich.
Somit ist die Lösung wohl nur zu erzielen, wenn man sich von meiner universalmethode trennt und für jede Dreierstelle einen separaten GREPstil anlegt.

So kann ich mir evtl. mein seltsames Fehlerbild im letzten Beitrag herleiten: Es klappte dort, für die Konstellation wo das + irrelevant war.

Also so funktioniert es jetzt von 5 bis 12 Stellen im Textfluss als auch in reinen Ziffernrahmen:


mit diesen Greps für jeweils einen, zwei oder drei Dreierblöcke hinter der Trennstelle:
Code
\d\K\d(?=\d{3}\b) 
\d(?=\d{3}\d{3}\b)
\d(?=\d{3}\d{3}\d{3}\b)



MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

Anhang:
GREP_Zahlenabstand3.png (95.3 KB)

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

18. Okt 2018, 15:47
Bewertung:

gelesen: 9717

Beitrag als Lesezeichen
Hsllo Thomas,

bitte sehr. Und danke für Dein Herumpröbeln.

Ich werde Deinen Vorschlag erst heute Abend ausprobieren. Jetzt gerade sind wir in Solothurn. Aber vielleicht meldet sich vorher der OP Michel ...

Gruss, Hans

Abstand bei Zahlen

Hans Haesler
Beiträge gesamt: 5826

18. Okt 2018, 19:47
Bewertung:

gelesen: 9666

Beitrag als Lesezeichen
Hallo Thomas,

jetzt habe ich Deinen Vorschlag geprüft. Und für gut befunden. :-) Meinen Leerschlag-Trick braucht es nicht mehr. :-(

Weil das Original-Muster von Michel 18 Stellen kann, habe ich noch zwei Strings mehr definiert.

Hier sind alle fünf. Für jedes Muster das Zeichenformat "Abstand Tausender Zahlen" wählen.
*****
\d\K\d(?=\d{3}\b)

\d(?=\d{3}(\d{3})\b)

\d(?=\d{3}\d{3}\d{3}\b)

\d(?=\d{3}\d{3}\d{3}\d{3}\b)

\d(?=\d{3}\d{3}\d{3}\d{3}\d{3}\b)


*****
Wie schon im Beitrag #7 gesagt: Bei jeder kopierten Zeile den überflüssigen Leerschlag entfernen.

Gruss, Hans