Jahresbericht mit InDesign – Lehrerlisten dank GREP
März 19, 2008
Der Jahresbericht ist zwar erst im Juli fällig, doch die Arbeit geht schon langsam an. In den Osterferien sind die Schüler/Lehrer-Seiten dran und die Listen der Lehrer der jeweiligen Klassen machen den Auftakt.
Die Daten stammen von der unsäglichen Schulverwaltungssoftware, die zum Glück überhaupt irgendeine Exportfunktion bietet. Was dann letzten Endes gespeichert werden kann, sieht so aus (Namen wurden aus Datenschutzgründen etwas „vereinheitlicht“):
Lehrer in der Klass5A 13.03.2008
Klassleitung: StR Müller M. (MUL)
Stellv.KlassleStRzA Müller A. (MUL)Kath.Religionslehre (K)
k51 StRzA Müller P. (MUL)Evang.Religionslehre (Ev)
v51 OStR Müller K. (MUL)
Ethik (Eth)
et5 OStR Müller M. (MUL)
Deutsch (D)
StR Müller M. (MUL)Lehrer in der Klass9B 13.03.2008
Klassleitung: StR Müller H. (MUL)
Stellv.KlassleLAss Müller J. (MUL)Kath.Religionslehre (K)
N k91 StRzA Müller P. (MUL)Evang.Religionslehre (Ev)
N OStR Müller K. (MUL)
Ethik (Eth)
N et9 OStR Müller B. (MUL)
Deutsch (D)
N StRef Müller-Schmidt N. (MUL)
Nein, das sind keine Tabulatoren… Einrückungen sind sämtliche mit Leerzeichen bzw. CR als Zeilenumbruch. Nun ja, ich wollte mir schon immer mal Suchen&Ersetzen via GREP bei Indesign aneignen und dies scheint ein vielversprechender Patient zu sein. Da GREP weitaus mächtiger als die Suchen&Ersetzen-Funktion meines an sich schon tollen Texteditors SC1 ist, wird also alles einfach mal via Copy&Paste nach Indesign in ein Textfenster verfrachtet. Dann das Suchen-Fenster (STRG+F) und den GREP Tabellenreiter angeklickt.
Erster Schritt: Ausmisten
Zuerst einmal muss unnötiger Ballast weg: Der Dateiname, die Schule, das Datum tauchen regelmäßig wieder auf. Ein einfaches Sucher nach dem jeweiligen Eintrag und Ersetzen (durch nichts) löst das recht schnell. Dann die Leerzeilen entfernen:
Find what: (^\r)
Change to:
Genial einfach (stammt leider nicht von mir): Gesucht wird nach einem Zeilenumbruch \r, der am Absatzanfang ^ steht. Und dann durch nichts ersetzt wird (= gelöscht).
Jeder Lehrer in seine eigene Zeile
Um nicht zu viel zu löschen, suche ich mal nach einer Endklammer und einem Zeilenumbruch und ersetze das dann einfach durch die Klammer. Pas de problem… Ach so… Klammer ist in GREP nicht einfach Klammer. Die runde Klammer erfüllt durchaus eine Funktion, so dass ich also nach \) suchen sollte. Und um etwas Struktur herein zu bringen, ersetzen wir den Zeilenumbruch durch einen Tabulator. Um die ersten zwei Zeilen (Klassleitung) nicht mit einzubeziehen, für ich hinter dem Zeilenumbruch \r einfach noch Leerzeichen ein:
Find what: \)\r [und dann kommen hier noch entsprechend viele Leerzeichen bis zum nächsten Wort!!]
Change to: )\t
Und da immer noch Leerzeichen vor sämtlichen Zeilen stehen, entferne ich diese auch gleich:
Find what: ^ [und wieder entsprechend viele Leerzeichen]
Change to:
Zweigbezeichnungen entfernen
Langsam wird es besser. Jetzt stehen mittendrin in manchen Zeilen noch differenzierende Bezeichnungen für die einzelnen Zweige (Sprachlich, Neusprachlich, Mathematisch) – die müssen weg: Tabulator gefolgt von S, N oder M, gefolgt von 2 Leerzeichen, einem 3 Buchstaben-Kürzel und erneut 2 Leerzeichen wird zum simplen Tabulator gekürzt:
Find what: \t[S|N|M][ ]{2}[ \w]{3}[ ]{2}
Change to: \t
Kath.Religionslehre (K) k51 StRzA Müller P. (MÜL)
Evang.Religionslehre (Ev) v51 OStR Müller K. (MÜL)
Ethik (Eth) et5 OStR Müller M. (MÜL)
Deutsch (D) StR Müller M. (MÜL)
Allerdings sind immer noch komische Kürzel im Text – die entsprechenden Kurse. Nach einem Tabulator kommen 2-3 Leerzeichen, dann 2-3 Buchstaben oder Leerzeichen, gefolgt von 2-3 Leerzeichen (bitte fragt mich nicht, warum dies so ist…).
Find what: \t[ ]{2,3}[\w ]{2,3}[ ]{2,3}
Change to: \t
Duplikate entfernen
Manchmal unterrichten in einer geteilten Klasse (neusprachlich/mathematisch) unterschiedliche Lehrer das gleiche Fach, manchmal ist es der gleiche Lehrer. In letztem Fall muss das Duplikat weg: Zuerst muss ein Tabulator kommen, dann kommt eine beliebige Anzahl (das nachgestellte +) von Zeichen die nicht Tabulator oder Zeilenumbruch sind (^\t\r) und dann kommt das ganze noch einmal (\1+). Das alles könnte man durch den ersten Ausdruck ($1) ersetzen:
Find what: \t[^\t\r]+)\1+
Change to:$1
Es wird ernst
Und nun kommt die eigentliche Transformation.
Latein (L) LAss Müller B. (MÜL)
Französisch (F) StRzA MüllerR. (MÜL) StRzA MüllerJ. (MÜL)
[L] B. Müller
[F] R. Müller, J. Müller
Wir suchen also zuerst einmal das Fach (also eine beliebige Anzahl an Buchstaben, evtl auch mit einem Bindestrich) gefolgt von einem Leerzeichen. Dann kommt das Fächerkürzel. Da wir dieses ja später noch brauchen, setzen wir es in runde Klammern – so können wir es mit $Nummer im Change To – Feld wieder ansprechen: zuerst also eine runde Klammer \(, dann das Kürzel, was aus allem Möglichen, nur nicht einer runden Endklammer besteht ([^)]+) und schließlich der runden Endklammer \).
Dann ein Tab, die Dienstbezeichnung \w+ (also beliebige Anzahl an Zeichen) und ein Leerzeichen.
Nun kommt der Nachname ([\w-]+): beliebige Anzahl an Zeichen oder einem Bindestrich – in Klammer, weil wir ihn später noch brauchen. usw.
Find what: ^[\w \-.]+ \(([^)]+)\) \w+ ([\w-]+) (.\.) \(…\) \w+ ([\w-]+) (.\.) \(…\)
Change to: [$1] $3 $2, $5 $4 ~8
~8 ist der hübsche Punkt auf x-Höhe •. Jetzt haben wir aber nur die Fälle mit zwei Lehrkräften ersetzt. Drei bzw eine Lehrkraft gehen analog.
Da die Liste als fortlaufender Text formatiert werden soll, muss nun noch der Zeilenumbruch nach dem • gelöscht werden. Nichts leichter als das:
Find what: ~8 \r
Change to: ~8
Klassleistung
Klassleitung: StR Müller H. (MÜL)
Stellv.KlassleLAss Müller J. (MÜL)
Die Klassleitung soll in eine Zeile, wieder Vorname, Nachname
Find what: (?<=Klassleitung: )\w+ ([\w-]+) (\w\.) \(…\)
Stellv\.Klassle\w+ ([\w-]+) (\w\.) \(…\)
Change to: $2 $1 ~8 $4 $3
Feintuning
Jetzt kann ich sämtlichen Fächern (in den eckigen Klammern) noch den CharacterStyle ‘Fach’ zuweisen: (\w+) sucht nach dem Fach, dass nach einer eckigen Klammer (?<=\[) und vor einer eckigen Schlussklammer (?=\]) steht. So wird auch nur das Fach markiert, die Klammern bleiben ohne Formatvorlage.
Find what: (?<=\[)(\w+)(?=\])
Change to: [CharacterStyle auswählen!]
Oder die Nachnamen entsprechendem Style zuweisen:
FInd what: (?<= \u\. )[\w-]+
Und zu guter Letzt noch der Punkt am Ende jeder Zeile. Der stört:
Find what: ~8 \r
Change to: \r
Biliographie
Was sich jetzt hier recht flott liest, hat in der Realität einen Vormittag gedauert. Trial&Error war das Motto, aber ohne folgenden Quellen hätte es noch deutlich länger gedauert:
- Ulrich Haeme: GREP Übersicht (kam glücklicherweise just an jenem Tag via email ins Postfach)
- Gerald Singelmann: GREP Übersicht (aus dem Buch »Adobe InDesign CS3 - Das Nachschlagewerk für Fortge-
schrittene«, Gallileo Press) - Peter Kahrel: GREP in InDesign CS3 (O’Reilly, PDF $9.99)