Zur Serienreife? Serienbriefe mit LaTeX
Saturday, March 7, 2009 8:01:48 PM
Das Thema Serienbrief bringt mich regelmäßig zur Verzweiflung. OpenOffice.org bietet hier zwar die entsprechenden Funktionen an, aber wirklich reibungslos läuft das bei mir nie. Schon allein eine ODS-Datei mit den Adressen in das Dokument zu laden ist für mich eine Herausforderung.
Außerdem schreibe ich meine Briefe sowieso lieber mit LaTeX. Dort sieht alles ganz schnell so aus, wie es bei einem anständigen Brief sein soll. Also habe ich mich gefragt, ob man mit LaTeX nicht auch Serienbriefe erstellen kann. Und tatsächlich, in der KOMA-Anleitung bin ich fündig geworden. Serienbriefe sind mit scrlttr2 möglich. Allerdings muss man die Adressdaten in einem bestimmten Format haben. Eine Datei mit der Endung .adr soll Einträge in der Form
haben. Das ist natürlich eher ungewöhnlich, um nicht zu sagen nervig.
Also habe ich mir ein kleines Skript in Python geschrieben, das eine CSV-Datei in eine adr-Datei umwandeln kann. Dabei kann man die adr-Felder frei aus Feldern in der CSV-Datei zusammensetzen. Oftmals wird man z.B. die Adresse in einzelnen Feldern vorliegen haben, z.B. Straße, PLZ und Ort.
Das Skript gibt’s hier: addressify.py
Ein Aufruf könnte z.B. so aussehen:
Nun hat man eine passende Datei, also steht dem Serienbrief nichts mehr im Weg. Der könnte z.B. so aussehen:
Für meine Zwecke reicht das erst einmal, endlich ein verlässlicher Weg, einfache Serienbriefe zu schreiben. Raum für Optimierungen gibt es sicherlich noch, aber das überlasse ich, wie man so schön sagt, dem Leser als Übung.
Außerdem schreibe ich meine Briefe sowieso lieber mit LaTeX. Dort sieht alles ganz schnell so aus, wie es bei einem anständigen Brief sein soll. Also habe ich mich gefragt, ob man mit LaTeX nicht auch Serienbriefe erstellen kann. Und tatsächlich, in der KOMA-Anleitung bin ich fündig geworden. Serienbriefe sind mit scrlttr2 möglich. Allerdings muss man die Adressdaten in einem bestimmten Format haben. Eine Datei mit der Endung .adr soll Einträge in der Form
\adrentry{Name}{Vorname}{Adresse}{Telefon}{F1}{F2}{Kommentar}{Kürzel}
haben. Das ist natürlich eher ungewöhnlich, um nicht zu sagen nervig.
Also habe ich mir ein kleines Skript in Python geschrieben, das eine CSV-Datei in eine adr-Datei umwandeln kann. Dabei kann man die adr-Felder frei aus Feldern in der CSV-Datei zusammensetzen. Oftmals wird man z.B. die Adresse in einzelnen Feldern vorliegen haben, z.B. Straße, PLZ und Ort.
Das Skript gibt’s hier: addressify.py
Ein Aufruf könnte z.B. so aussehen:
python addressify.py -m 'Name=$Nachname' -m 'Vorname=$Vorname' -m 'Adresse=$Strasse\\$PLZ $Ort' -m 'F1=$Geschlecht' -o 'adressen.adr' adressen.csv
Nun hat man eine passende Datei, also steht dem Serienbrief nichts mehr im Weg. Der könnte z.B. so aussehen:
\documentclass[DIN]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}
\begin{document}
\newcommand{\Anrede}{}
\renewcommand*{\adrentry}[8]{%
\if #5w \renewcommand{\Anrede}{Frau} \fi
\if #5m \renewcommand{\Anrede}{Herrn} \fi
\begin{letter}{\Anrede\\#2 #1\\#3}
\if #5w \opening{Sehr geehrte Frau #1,} \fi
\if #5m \opening{Sehr geehrter Herr #1,} \fi
Serienbriefe mit \LaTeX{} sind nicht schwer zu realisieren.
\closing{Mit freundlichen Grüßen,}
\end{letter}
}
\input{adressen.adr}
\end{document}
Für meine Zwecke reicht das erst einmal, endlich ein verlässlicher Weg, einfache Serienbriefe zu schreiben. Raum für Optimierungen gibt es sicherlich noch, aber das überlasse ich, wie man so schön sagt, dem Leser als Übung.








Anonymous # Saturday, March 7, 2009 10:43:00 PM
Frederik Elwertfreedo # Saturday, March 7, 2009 11:34:35 PM
Hiermit seien alle Leserinnen also noch einmal ausdrücklich aufgefordert, sich auch an weiteren Optimierungen zu versuchen! :-)
Anonymous # Friday, August 7, 2009 6:08:39 PM