Fredo's Blog

Humanities, Social Sciences and Free Software

Zur Serienreife? Serienbriefe mit LaTeX

, ,

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
\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.

Die Königin zum Tango bitten …ScheduleWorld wird kostenpflichtig – aber plötzlich!

Comments

Anonymous Saturday, March 7, 2009 10:43:00 PM

Simon Says writes: ... den Leserinnen und Leser als Übung oder ... den LeserInnen ... aber danke für das Script!

Frederik Elwertfreedo Saturday, March 7, 2009 11:34:35 PM

Ja, danke für den Hinweis! Ich habe auch darüber nachgedacht. Nur geht leider die Eleganz des englischen »I’ll leave this as an exercise for the reader« verloren, wenn man im Deutschen beide grammatikalischen Geschlechter einbezieht.

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

Anke writes: Danke dafür, ich kannte bisher für Serienbriefe nur latexdb, das Skript hat mich gerade (vor umständlicher Arbeit oder selber Skript schreiben ;))gerettet. Ich finde im übrigen das generische Maskulinum im allgemeinen ausreichend. "Leserinnen und Leser" verlängern den Text unnötig, vielleicht nicht bei einmaliger Erwähnung, aber doch bei mehrmaliger Verwendung in politisch korrekt gemeinten Texten (geschrieben wie gesprochen). Das Binnen-I hingegen wirkt auf mich künstlich. Das ist natürlich nur meine subjektive Haltung, ich habs eben gern unkompliziert. Gruß

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies