Zeichenformate filtern

Meine persönliche Lieblingsfunktion von CS4 ist die Möglichkeit mit so gennanten GREP-Styles bestimmten Textbereichen Zeichenformate zuzuweisen. Sicherlich nicht die wichtigste Neuerung aber als großer Fan von Regulären Ausdrücken ist dieses Feature Pflicht.

Die Funktion ist im Absatzformatvorlagen-Dialog unterhalb der Verschachtelten Formate zu finden. Die Anwedung ist durchaus intuitiv. Man muss allerdings Reguläre Ausdrücke beherrschen bzw. sich mit der angebotenen Übersicht arrangieren.

Im unteren Beispiel werden alle Preise ausgezeichnet die aus Ziffern bestehen und denen die Buchstabenkombination EUR folgt. Z.B. Dieser Blogeintrag könnte 15 EUR kosten.

Im Detail sieht das so aus:

  • \d+ bedeutet mindestens beliebig viele Ziffern jedoch mindestens eine (1…n)
  • mit (?=Ausdruck) wird sichergestellt, das nach den gefundenen Ziffern der Ausdruck stehen muss
  • der Ausdruck \s?EUR erlaubt ein optionales Leerzeichen gefolgt von der Zeichenkette EUR.

Nun werden alle Ziffernfolgen mit dem entsprechenden Zeichenformat formatiert. Ein kleiner Fehler ist allerdings noch zu beheben: Damit auch durch Komma abgetrennte Preise erkannt werden muss der Ausdruck wie folgt erweitert werden:

[\d,]+(?=\s?EUR)

innerhalb der eckigen Klammern wird definiert welche Zeichen auftreten dürfen, im Beispiel Ziffern und das Komma.

Leider kann über das Skripting Interface nicht auf die Instanzen zugreifen auf die das Styling angewendet wurde.
Dazu muss man selber die entsprechenden Absätze mit dem Regulärem Ausdruck durchsuchen. Wenn man dies generisch lösen will, kann das insbesondere bei den schon seit CS3 vorhandenen verschachtelten Formaten aufwändiger werden.

Die Idee alle Textbereiche über

TextStyleRange.appliedNestedStyles

auszuwerten funktioniert nur so lange, bis zusätzliche Veränderungen innerhalb von vorformatierten Bereichen diese weiter aufteilen.