• Thema

  • Technologie

EasyCatalog: Erster Buchstabe im Feld in GROSS

EasyCatalog-Palette mit unterschiedlichen Wortanfängen im Beschreibungsfeld
Beitrag speichern

Noch kein Konto? Registrieren

Wie bekommen wir in einem bestimmten Feld in der EasyCatalog-Palette den ersten Buchstaben zuverlässig als Grossbuchstaben? Diese recht harmlos klingende Anforderung kann es durchaus in sich haben, weil sie für ein zuverlässiges Funktionieren einige technische Voraussetzungen erfordert.

Die EasyCatalog-Palette mit verschiedenen Wortanfängen im Beschreibungsfeld
EasyCatalog-Palette des Test-Datenbestands “Gartengeräte”. Der Text im farbig hinterlegten Feld soll immer mit einem Grossbuchstaben beginnen.

Stufe 1: Bereinigung

Wir erstellen in den Feldoptionen des betreffenden Feldes eine Bereinigungsoption, die den ersten Buchstaben nimmt und ihn mit der Anweisung “\U” in einen Grossbuchstaben ändert:

Der reguläre Ausdruck zum Grosstellen des ersten Buchstabens.
Der reguläre Ausdruck zum “Fangen” des ersten Zeichens und Umändern in einen Grossbuchstaben.

Hier ist der reguläre Ausdruck zum Kopieren und Einfügen:

REGEXV2:^(.)=\U\1;

Das Ergebnis:

Die EasyCatalog-Palette mit verschiedenen Wortanfängen im Beschreibungsfeld
Das erste Ergebnis – Feldinhalt bereinigt mit dem regulären Ausdruck. Dieser “klappt” aber nicht bei Umlauten.

Diese Methode funktioniert aber offensichtlich nur bei Text, der nicht mit einem Umlaut, sondern – vereinfacht gesagt – mit den Buchstaben “a” bis “z” anfängt.

Stufe 2: EasyCatalog-Funktion

Wir erstellen ein Zusatzfeld, holen in dieses zunächst den ersten Buchstaben des Feldes “beschreibung” und ändern diesen in einen Grossbuchstaben. Anschliessend fügen wir den Feldinhalt von “beschreibung” ab dessen 2. Buchstaben hinzu:

Der EasyCatalog-Befehlskette zum Grossstellen des ersten Buchstabens
Mit der gezeigten Befehlskette wird zuverlässig das erste Zeichen als Grossbuchstabe gesetzt.

Hier ist die Befehlskette zum Kopieren und Einfügen:

CONCAT(UPPER(LEFTSTR(beschreibung,1)), SUBSTR(beschreibung, 1, LENGTH(FIELDSTR(beschreibung))))

Das Ergebnis:

Die EasyCatalog-Palette mit verschiedenen Wortanfängen im Beschreibungsfeld
Das Ergebnis im Zusatzfeld “beschreibung_Gross” entspricht schon – fast – der Anforderung.

Diese Methode klappt im Gegensatz zum regulären Ausdruck deswegen, weil die eingebauten EasyCatalog-Funktionen “LEFTSTR”, “SUBSTR” und “LENGTH” auch mit Buchstaben jenseits von A bis Z umgehen können. (Für technisch Interessierte: Der Knackpunkt ist die sog. Textcodierung. Die Stichwörter sind “ASCII” und “Unicode”, formuliert als UTF-8. Die EasyCatalog-Funktionen können mit beidem umgehen. Genau genommen noch mehr, so auch z.B. mit UTF-16.)

Wir scheinen am Ziel zu sein – aber: Was, wenn der Feldinhalt mit z.B. einem Anführungszeichen beginnt und wir das erste Zeichen nach dem Anführungszeichen zuverlässig als Grossbuchstabe sehen möchten? Und was, wenn er mit einem Auslassungszeichen beginnt und wir nach diesem ausnahmsweise doch klein weiterschreiben möchten?

Stufe 3: Verarbeitung mit LUA

Jetzt wird es wirklich technisch, denn wir müssen dem System nun ganz genau mitteilen, was wir möchten. Das geht am besten mit einer “richtigen” Programmiersprache. Erfreulicherweise ist in EasyCatalog schon seit ein paar Jahren die Sprache “LUA” eingebettet, die wir hierfür ausgezeichnet nutzen können. Wie immer gibt es mehrere Ansätze, das Problem anzugehen; einer davon ist exemplarisch hier gezeigt.

Wir können zum Einfügen des Programmcodes die seit der Version 2020 enthaltene Kategorie “Vorverarbeitung” der Feldoptionen nutzen:

Der LUA-Programmcode zum zuverlässigen Grossstellen des ersten Buchstabens in einem Feld
Der LUA-Programmcode: Erst wird der String in einzelne Buchstaben zerlegt und anschliessend wieder zusammengesetzt.
Mithilfe der “Vorverarbeitung” (“preprocessing”) des Feldinhalts – eingebaut seit der Version 2020 – kann der erste Buchstabe zuverlässig gross gestellt werden, auch wenn z.B. ein Anführungszeichen davor steht.

Die Idee: Wir prüfen zunächst, ob der erste Buchstabe ein einfaches oder doppeltes Anführungszeichen ist, falls ja, prüfen wir das beim zweiten Buchstaben und so weiter. Das erste Zeichen, das nicht in der Ausschlussliste steht, wird mit der von EasyCatalog bereitgestellten LUA-Funktion “toupper” in Grossbuchstaben umgewandelt. Das funktioniert auch mit Umlauten zuverlässig, da diese Funktion auch mit Text in UTF-8 umgehen kann.

Hier ist der Programmcode zum Kopieren und Einfügen:

letters = {}   -- Tabelle für die einzelnen Buchstaben
counter = 0    --  Buchstabenzählen
str = ''       -- der bearbeitete String 
-- Buchstaben einzeln in eine Tabelle geben
for p, c in utf8.codes(content) do 
  table.insert(letters, utf8.char(c))
end
-- Tabelle buchstabenweise wieder zusammenfügen
for _, value in ipairs(letters) do
  if counter == 0 and not value:find('[\u{22}\u{27}]') then
    value = toupper(value)
    str = str .. value
    counter = 1
  else
    str = str .. value
  end
end
-- bearbeiteten String wieder zurückgeben
return str

Wer eine InDesign-Version vor 2020 nutzt, erstellt anstelle dessen ein Zusatzfeld vom Typ “Erweitert”, kopiert den Code hinein und fügt ganz am Anfang noch eine Zeile ein, die den Feldinhalt aus dem Feld “beschreibung” holt:

Der LUA-Programmcode zum zuverlässigen Grossstellen des ersten Buchstabens in einem Feld
Der Zusatzfeld-Typ “Erweitert” ist speziell für die Verarbeitung mit LUA geschaffen worden. Eingebaut in EasyCatalog ist zurzeit LUA 5.3.1.

Dieser zusätzliche Code ist:

content = FIELD.get('beschreibung'):content()

Sollen noch weitere Zeichen ausser dem doppelten (Unicodewert 22) und dem einfachen (Unicode 27) [jeweils hexdezimal] Anführungszeichen erkannt werden, dann müssen diese in die betreffende Zeile in die eckige Klammer mit aufgenommen werden:

Der LUA-Programmcode zum zuverlässigen Grossstellen des ersten Buchstabens in einem Feld
Der öffnende Doppelwinkel « hat den hexadezimalen Unicode-Wert “AB”.

Über mich

  • Rudi Warttmann

    Gelernter Schriftsetzer und M.Sc. in Technischer Kommunikation, Adobe Certified Instructor (ID, IC, AI, PS, AC) seit 2003 und EasyCatalog-Integrator/Trainer seit 2006. Mein Arbeitsfeld ist die umfassende Beratung und Unterstützung rund um die Automatisierung von Publikationen aller Art aus Datenquellen aller Art - von einfachen CSV-Dateien bzw. hin zu PIMs oder ERPs. Hierbei sind gewöhnlich Adobe InDesign und das Plug-in «EasyCatalog» im Einsatz. Alle meine Leistungen kann ich auf Deutsch, Französisch und Englisch anbieten. Seit 1992 bin ich selbstständig mit "topset.de"; seit 2021 darf ich an der HFMT in Zürich das Fach "Crossmedia" unterrichten.

Was denkst du dazu?
yeah!
2
wooow
0
what?
0
meh.
0
hahaha
0
Das könnte dich auch interessieren:
Ad - SiteGround Webhosting - Einfache Site-Verwaltung. Mehr erfahren.
Beitrag teilen
Was denkst du dazu?
Was denkst du dazu?
yeah!
2
wooow
0
what?
0
meh.
0
hahaha
0
Diskussion

Eine Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

 

Hinweis: Es kann bis zu zwei Stunden gehen, bis dein Kommentar auf der Website erscheint. Bitte poste deinen Kommentar nur einmal 😉

Aktuelle Jobangebote
  • Grafik / Prepress / Druck / Verpackung / Werbetechnik | Medienjobs und Stellen für Profis

  • Neue Beiträge als E-Mail
    jeden Dienstag die neusten Blogposts in deiner Inbox
    Unsere Partner:

    Dein Gerät ist aktuell offline.