LaTeX Extra > LaTeX Befehle > Serienbriefe


Es gibt mehrere Methoden um innerhalb von LaTeX einen Serienbrief zu erstellen. Der grundsätzliche Ansatz der zwei Methoden die hier kurz vorgestellt werden ist dabei der Gleiche.
Bei der ersten Variante wird ein neuer Befehl \sbrief definiert während bei der zweiten Variante ein bereits bestehender Befehl \adrentry umdefiniert wird.

Brief Basis

Als Basis für die Serienbriefe wird die Dokumentenklasse scrlttr2 aus dem KoMaSkript Bundle verwendet.[1]

Diese Klasse wurde speziell für den Satz von Briefen entwickelt, und verfügt über die gängigen Briefstandards wie zum Beispiel den DIN Brief beziehungsweise einen Brief nach DIN Format.

Die Elemente des Briefes werden dabei in der Form von Variablen festgelegt. Der Brief selbst besteht aus einem Briefkopf und einem Briefkörper.

Beispiel Briefkopf
\setkomavar{fromname}{Absendername}
\setkomavar{fromaddress}{Absenderadresse}
\setkomavar{signature}{Vorname Nachname}

Im Beispiel für den Briefkopf stehen dabei die oben genannten Variablen. Der Aufbau der gesetzten Variablen folgt dabei immer dem gleichen Schema:

\setkomavar{Variablenname}{Inhalt}
Beispiel Briefkörper
\begin{letter}{Empf{\"a}ngeradresse}
\opening{Anrede,}
und hier steht der Inhalt.
\closing{Gru{\ss}formel}
\ps{Post scriptum ohne PS}
\encl{Anlagen}
\end{letter}

Der Briefkörper besteht im wesentlichen aus der letter Umgebung. Diese hat als Argument die Adresse des Empfängers. Innerhalb der letter Umgebung können die Befehle opening für die vom Briefinhalt abgesetzte Anrede, closing für die ebenfalls abgesetzte Grußform, ps für das post scriptum wobei dies ohne vorangestelltes ps gesetzt wird und encl für die Anlagen verwendet werden. Darüber hinaus gibt es den Befehl \cc{Verteiler} der im Beispiel nicht gezeigt wurde. Sowohl der Befehl opening als auch closing sind zu setzen.

weitere Variablen

Neben den bereits gezeigten Variablen gibt noch weitere.
Auszug der möglichen Variablen
eigene Kontaktdaten
\setkomavar{fromname}{Absendername}
\setkomavar{fromaddress}{Absenderadresse}
\setkomavar{signature}{Vorname Nachname}
\setkomavar{fromphone}{Vorwahl Nummer}
\setkomavar{fromemail}{E-Mail}
\setkomavar{fromurl}{Webseite}
Betreff
\setkomavar{subject}{Betreff}
Ort & Datum
\setkomavar{place}{Ort}
\setkomavar{date}{Datum}
zusätzliche Zeichen
\setkomavar{yourref}{Ihr Zeichen}
\setkomavar{yourmail}{Ihr Schreiben vom}
\setkomavar{myref}{Unser Zeichen}
\setkomavar{customer}{Kundenummer}
\setkomavar{invoice}{Rechnungsnummer}

Aus den Daten die bei der letter Umgebung angegeben wurden wird die Anschrift und aus den eigenen Kontaktdaten der Briefkopf erstellt.

Die Ausgabe dieser Variablen lässt sich auch verändern.

\setkomavar*{myref}{Mein Zeichen}

Gestaltung des Briefs

Die Gestaltung des Briefs erfolgt über die Optionen der Dokumentenklasse. Dabei kann auch festgelegt werden, ob eine gesetzte Variable angezeigt wird oder nicht. Nachfolgendes Beispiel zeigt einen kleinen Auszug aus den dabei möglichen Optionen.

\documentclass[
DIN,  % Einstellungen für DIN
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
]{scrlttr2}
Die Klasse selbst bietet noch viele weitere Möglichkeiten.

lco Datei

Durch das Anlegen einer lco Datei kann man sich das wiederholte Eingeben der eigenen Daten beim Schreiben von Briefen ersparen.
Vereinfacht formuliert handelt es sich dabei um eine Sammlung von Wunscheinstellungen was die Gestaltung des Briefkopfes betrifft, den eigenen Daten wie Absendername und -adresse etc. und gegebenenfalls auch genutzten Paketen.

%  absender.lco
\ProvidesFile{absender.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}

\setkomavar{fromname}{Dr. hc. Manfred Mustermann }
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}

Die Datei absender.lco wird vor \begin{document} in den Brief eingefügt.

\begin{filecontents}{absender.lco}
 \ProvidesFile{absender.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}

\setkomavar{fromname}{Dr. hc. Manfred Mustermann }
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{absender} % Einstellungen aus absender.lco laden
\begin{document}
\setkomavar{subject}{Namenshäufigkeit}
\begin{letter}{Herr \\ Michael Maier \\
Testallee 12 \\ 77777 Testdorf}
\opening{Sehr geehrter Herr Micheal Maier,}
Sie sind Träger des häufigsten
Männervornamen in BW, .........
\closing{Mit freundlichen Grüßen}
\end{letter}
\end{document}

sbrief

In dieser Variante für den Serienbrief wird ein neues Kommando sbrief definiert. Die verwendete Klasse, etwaige Pakete und der Briefkopf beziehungsweise die lco Datei bleiben gleich.

Das neue Kommando bezieht sich auf die Empfängeranschrift und die Anrede. Dabei handelt es sich um Elemente die in der letter Umgebung verwendet werden.

Im ersten Ansatz sollen fünf Parameter Vor- und Nachname, Straße, PLZ und Ort gesetzt werden können. Daraus ergibt sich der folgende grobe Ansatz für das neue Kommando sbrief.

\newcommand\sbrief[5]{
\begin{letter}{#1 #2\\#3\\#4 #5}
\opening{Anrede #1 #2,}
Inhalt der immer gleich ist.
\closing{Gru{\ss}formel}
\end{letter}
} % Ende neues Kommando
Hinweis: Der Inhalt es Briefes ist Teil dieses neuen Befehls!

Die Daten der Empfänger können entweder direkt in die Briefdatei geschrieben werden, wie im ersten der folgenden Beispiele oder als Datei eingefügt werden wie im zweiten Beispiel.

Beispiel 1 Empfängerdaten in der Briefdatei
\begin{filecontents}{verein.lco}
 \ProvidesFile{verein.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}
\setkomavar{fromname}{Verein für ....}
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{verein} % Einstellungen aus verein.lco laden
\begin{document}
\setkomavar{subject}{Mitgliederversammlung}

\newcommand\sbrief[5]{
\begin{letter}{#1 #2\\#3\\#4 #5}
\opening{Liebes Mitglied #1,}
wie in jedem Jahr steht auch für dieses Jahr
eine Mitgliederversammlung an.
\closing{mit freundlichen Grüßen}
\end{letter}
}
% Hier stehen die Daten der Empfaenger der Briefe
\sbrief{Adam}{Müller}{Testallee 1}{11111}{Teststadt}
\sbrief{Michael}{Meier}{Musterstr. 2}{22222}{Musterstadt im Wald}
\sbrief{Maria}{Graf}{Weg 3}{33333}{Testdorf}
\sbrief{Laura}{Vöhringer}{Unter den Bäumen 4}{44444}{Musterdorf}
\end{document}
Beispiel 2 Empfängerdaten aus einer Datei in die Briefdatei einfügen
\begin{filecontents}{mitglieder-adressen.tex}
\sbrief{Adam}{Müller}{Testallee 1}{11111}{Teststadt}
\sbrief{Michael}{Meier}{Musterstr. 2}{22222}{Musterstadt im Wald}
\sbrief{Maria}{Graf}{Weg 3}{33333}{Testdorf}
\sbrief{Laura}{Vöhringer}{Unter den Bäumen 4}{44444}{Musterdorf}
\end{filecontents}


\begin{filecontents}{verein.lco}
 \ProvidesFile{verein.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}
\setkomavar{fromname}{Verein für ....}
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{verein} % Einstellungen aus verein.lco laden
\begin{document}
\setkomavar{subject}{Mitgliederversammlung}

\newcommand\sbrief[5]{
\begin{letter}{#1 #2\\#3\\#4 #5}
\opening{Liebes Mitglied #1,}
wie in jedem Jahr steht auch für dieses Jahr
eine Mitgliederversammlung an.
\closing{mit freundlichen Grüßen}
\end{letter}
}
\input{mitglieder-adressen.tex}
\end{document}

Erweiterung -- Fallunterscheidung

Der gezeigte sbrief Befehl lässt sich in soweit erweitern, dass eine Fallunterscheidung eingebaut werden kann. Diese ist zum Beispiel bei der unterschiedlichen Ansprache von Frauen und Männern praktisch.

Für die Umsetzung der Fallunterscheidung wird zusätzlich das Paket ifthen benötigt. Die bisherige Variante des sbrief Befehls wird, wie im folgendem groben Ansatz gezeigt wird, angepasst.

\newcommand\sbrief[6]{
\begin{letter}{#2 #3\\#4\\#5 #6}
\opening{
% Hier kommt die Fallunterscheidung
\ifthenelse{\equal{#1}{Mann}}{Sehr geehrter Herr}{}
\ifthenelse{\equal{#1}{Frau}}{Sehr geehrte Frau}{}
#3,}
Inhalt der immer gleich ist.
\end{letter}
}
\sbrief{Mann}{Adam}{M\"uller}{Testallee 1}{11111}{Teststadt}

Die Befehle der Fallunterscheidung lassen sich auch verschachteln und so gestalten das bestimmte Parameter nur bei bestimmten Konstelationen gesetzt werden wie im folgenden Beispiel.

\begin{filecontents}{mitglieder-adressen-1.tex}
\sbrief{Mann}{Adam}{Müller}{Testallee 1}{11111}{Teststadt}
\sbrief{NN}{Michael}{Meier}{Musterstr. 2}{22222}{Musterstadt im Wald}
\sbrief{NN}{Maria}{Graf}{Weg 3}{33333}{Testdorf}
\sbrief{Frau}{Laura}{Vöhringer}{Unter den Bäumen 4}{44444}{Musterdorf}
\end{filecontents}


\begin{filecontents}{verein.lco}
 \ProvidesFile{verein.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}
\setkomavar{fromname}{Verein für ....}
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{verein} % Einstellungen aus verein.lco laden
\usepackage{ifthen}
\begin{document}
\setkomavar{subject}{Mitgliederversammlung}

\newcommand\sbrief[6]{
\begin{letter}{#2 #3\\#4\\#5 #6}
\opening{
% Hier kommt die Fallunterscheidung
\ifthenelse{\equal{#1}{NN}}{Guten Tag #2}{\ifthenelse{\equal{#1}{Frau}}{Sehr geehrte Frau}{Sehr geehrter Herr}} #3,}
damit unser notwendiger Verein weiterhin erfolgreich arbeiten kann, sind wir auch auf Ihre Spende angewiesen.
\closing{mit freundlichen Grüßen}
\end{letter}
}
\input{mitglieder-adressen-1.tex}
\end{document}

adrentry

Bei dem Befehl adrentry handelt es sich um einen bereits bestehenden Befehl mit acht Parametern. Der Befehl bildet die Grundlage für eine Adressdatenbank. Bei dieser handelt es sich um eine Textdatei mit der Endung .adr .

Bei den acht Parametern sind sowohl die ersten vier wie auch der letzte bereits belegt, sodass nur drei selbst gesetzt werden können.

Belegungsübersicht der Parameter des adrentry Befehls
BelegungParameter
Name1
Vorname2
Adresse3
Telefonnummer4
frei5
frei6
frei7
Kürzel8

einfacher Brief mit adrentry

Bei einem Brief mit nur einem Empfänger wird die Adressdatenbank Datei zwischen \begin{document} und \begin{letter} eingefügt.

\begin{filecontents}{verein.adr}
\adrentry{Müller}{Adam}{Testallee 1 \\ 11111 Teststadt}{123456789}{}{}{}{mueller}
\adrentry{Meier}{Michael}{Musterstr. 2 \\22222 Musterstadt im Wald}{987654321}{}{}{}{meier}
\adrentry{Graf}{Maria}{Weg 3 \\ 33333 Testdorf}{9999 1}{}{}{}{graf}
\adrentry{Vöhringer}{Laura}{Unter den Bäumen 4 \\ 44444 Musterdorf}{0049}{}{}{}{voehringer}
\end{filecontents}


\begin{filecontents}{verein.lco}
 \ProvidesFile{verein.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}
\setkomavar{fromname}{Verein für ....}
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{verein} % Einstellungen aus absender.lco laden
\usepackage{ifthen}
\begin{document}
\setkomavar{subject}{Mitgliederversammlung}
\input{verein.adr}
\begin{letter}{\mueller}
\opening{Liebes Mitglied Adam,}
wie in jedem Jahr steht auch für dieses Jahr eine Mitgliederversammlung an.

\closing{Mit freundlichen Grüßen}
\end{letter}
\end{document}

Der Empfänger wird anhand des Kürzels festgelegt. Dabei handelt es sich um den achten Parameter des adrentry Eintrags.

Serien Briefe mit adrentry

Um einen Serienbrief zu erstellen wird der Befehl adrentry umdefiniert.

\begin{filecontents}{verein.adr}
\adrentry{Müller}{Adam}{Testallee 1 \\ 11111 Teststadt}{123456789}{}{}{}{mueller}
\adrentry{Meier}{Michael}{Musterstr. 2 \\22222 Musterstadt im Wald}{987654321}{}{}{}{meier}
\adrentry{Graf}{Maria}{Weg 3 \\ 33333 Testdorf}{9999 1}{}{}{}{graf}
\adrentry{Vöhringer}{Laura}{Unter den Bäumen 4 \\ 44444 Musterdorf}{0049}{}{}{}{voehringer}
\end{filecontents}


\begin{filecontents}{verein.lco}
 \ProvidesFile{verein.lco}

\KOMAoptions{%
fromalign=left, % Ausrichtung des Briefkopfes
fromphone=true, % Telefonnummer wird im Briefkopf angezeigt
fromemail=true, % E-Mail wird im Briefkopf angezeigt
fromurl=true, % URL wird im Briefkopf angezeigt
fromrule=false % Keine Trennlinie unter dem Briefkopf
}

\RequirePackage[utf8]{inputenc}
\RequirePackage[ngerman]{babel}
\setkomavar{fromname}{Verein für ....}
\setkomavar{fromaddress}{Musterstrasse 12 \\ 12345 Musterheim}
\setkomavar{fromphone}{0123/456789}
\setkomavar{fromemail}{mustermann@example.net}
\setkomavar{fromurl}{www.example.net}
\setkomavar{signature}{Manfred Mustermann}
\end{filecontents}

\documentclass{scrlttr2}
\LoadLetterOption{DIN} % Einstellungen DIN 
\LoadLetterOption{verein} % Einstellungen aus verein.lco laden
\usepackage{ifthen}
\begin{document}
\setkomavar{subject}{Mitgliederversammlung}
\renewcommand{\adrentry}[8]{%
\begin{letter}{#2 #1\\ #3}
\opening{Liebes Mitglied #2}
wie in jedem Jahr steht auch für dieses Jahr eine Mitgliederversammlung an.

\closing{Mit freundlichen Grüßen}
\end{letter}
}
\input{verein.adr}
\end{document}

Wichtig ist dabei darauf zu achten, dass in diesem Fall die Datei mit den Adressen erst nach der Änderung des Befehls adrentry in das Dokument eingebunden wird.

Literatur

[1]
scrlttr2 -- Koma-Script 'letter' class, Markus Kohm, v3.30 von 2020-04-19 https://ctan.org/pkg/scrlttr2