InDesign GREP-Stil für Geviert vor Einheit

Kürzlich fragte mich eine Kollegin, ob es per GREP-Stil, GREP-Suche / -Ersetzen bzw. GREP-Skript möglich sei, die normalen Leerräumen vor Einheiten wie ml, kg etc. in ein Geviert zu ändern. Wer sich mit den verschiedenen Optionen schon einmal etwas genauer beschäftigt hat, wird wissen, dass beide Möglichkeiten und auch das »normale« Suchen & Ersetzen zum Erfolg führen würde. (Hier mein Video-Tutorial zum Vergleich GREP-Stil vs. GREP-Skript.)

Ich habe dann die Aufgabenstellung per GREP-Stil umgesetzt. GREP-Stile haben den Vorteil, dass sie auch bei erneutem Platzieren von Text direkt greifen. Suchen / Ersetzen muss ja bei jedem neuen Text erneut angewendet werden. Und weil beim GREP-Stil der eigentliche Text nicht geändert wird, habe ich einfach ein Zeichenformat (»leerzeichen-geviert-breite«) erstellt, dass einen normalen Leerraum auf 750 Einheiten verbreitert. (Bei einer Laufweite von 750 entspricht das normale Leerzeichen einem Geviert – zumindest hat das meine Messung bei der Minion Pro so ergeben. Was mich gewundert hat: ich war davon ausgegangen, dass Gevierte in regulären Schriften 1000 Einheiten breit sind.)

Und per GREP-Stil wird dann einfach vor einem mg, kg, ml das o.gl. Zeichenformat angewendet. Der GREP-Ausdruck lautet dann \s(?=EL|TL|ml|kg)

Hier die Erklärung:
\s Leerzeichen
(?=) Positives Lookahead: Das Zeichen, das vor dem positiven Lookahead steht (hier das \s, wird nur gefunden, wenn es von den nach dem = notierten Zeichen gefolgt wird.
EL|TL|ml|kg Die aufrechten Striche |, auch »pipes« genannt, liest GREP als »oder«. Damit lassen sich verschieden Suchmuster miteinander verketten.
Zusammenfassend lautet der GREP-Code: »finde ein Leerzeichen, wenn es von EL, TL, ml oder kg gefolgt wird«.

Hier die InDesign-Datei mit dem GREP-Stil zum Download:

geviert-per-grep-stil.idml_.zip (427 Downloads)

PS: Ich kann mir auch nicht merken, wann ein Lookahead bzw. ein Lookbehind Sinn macht ;-)
PPS: Warum ein Geviert vor den Einheiten stehen soll, weiß ich übrigens nicht genau – war Vorgabe.

Ähnliche Beiträge

11 Kommentare

  1. Warum 750 statt 1000? Die Breite des normalen Leerzeichens kommt ja noch dazu. Bei Laufweite 1000 hast du also ein Geviert und ein Leerzeichen – das geht im Vergleich genau auf.

    1. Stimmt – das hatte ich nicht bedacht (gerade wo ich mir sicher war, dass in InDesign ein Geviert 1000 Einheiten breit ist). Danke für den Hinweis!

  2. Hallo Karsten, habe gerade mit Interesse deine GREP Anwendung studiert … leider bin ich in dem Thema nicht so gut drin … ich suche nämlich einen Befehl mit dem ich grundsätzlich bei allen Mengenangaben wie z.B. 100g oder 250g oder 25g usw. also Ziffern die von g gefolgt werden, ein Sechstelgeviert einsetzen kann … das Problem ist nämlich, dass in allen Zutatenlisten das g ohne Leerzeichen direkt auf die Mengenangabe folgt … kannst du mir hier helfen? Gerne schicke ich dir dann nach Produktion ein kostenloses Exemplar des betreffenden Kochbuchs … Besten Dank und viele Grüsse, Tommas

      1. Hallo Tommas,

        sorry für meine späte Rückmeldung, bin gerade unterwegs. Freut mich, dass Du Deine Aufgabe erledigen konntest!

        Ja, klar: melde Dich wieder, wenn Du eine Frage hast!

        Viele Grüße
        Karsten

  3. Hallo, Tommas, wie hast du dein Problem gelöst? Bin auch auf der Such enach einer GREP Anwendung für „500g“, also Ziffer gefolgt von Maßeinheit. Das kann auch TL, kg, g etc sein. Leider ist zwischen Buchstabe und Maßeinheit kein Leerzeichen.
    Grüße
    Carmen

    1. Hallo Carmen,
      ich weiß zwar nicht, wie Tommas es gemacht hat, aber für mich wäre das ein Fall für Suchen/Ersetzen mit GREP. Also z.B. mit [cc lang=“bash“ inline=“true“](\d)(?=EL|TL|ml|kg)[/cc] suchst Du Deine Ziffern/Einheiten-Kombinationen und mit [cc lang=“bash“ inline=“true“]$1~<[/cc] fügst Du in die betreffenden Stellen ein Achtelgeviert ein. Klappt das? Liebe Grüße Karsten

      1. Hallo Karsten,
        danke für deine rasche Antwort. Ich habe deinen Ausdruck etwas abgewandelt denn das Ergebnis war „500$g“

        Mit diesem hat dann geklappt:
        Suchen: \d(?=g|TL|ml|kg)
        Ersetzen: $0~<
        Also die 1 surch 0 ersetzen.
        Liebe Grüße
        Carmen

        1. Hallo Carmen,
          seltsam: bei mir klappt es mit meinem Code. Bei Deinem Codebeispiel fehlen allerdings auch die Klammern um das [cc lang=“bash“ inline=“true“](\d)[/cc]. Egal: freut mich, dass Du es hinbekommen hast!
          Viele Grüße
          Karsten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.