Zum Inhalt

Serienbriefe mit LaTeX schreiben

Serienbriefe lassen sich mit LaTeX sehr schnell und effizient schreiben. Dabei ist es auch möglich die Empfänger nach bestimmten Kriterien zu filtern und ganz gezielt anzuschreiben.

Der Serienbrief ist bis auf eine kleine Ergänzung in der brief.tex gleich aufgebaut wie der Standardbrief.

Ich habe dafür auch die gleiche lco-Datei verwendet. 👉 Briefe schreiben mit LaTeX, nichts einfacher als das!

address.adr - Liste der Empfängeradressen

Für Serienbriefe ist es sinnvoll eine eigene separate Datei mit allen Empfängeradressen zu erstellen. Die Datei lässt sich in einem LaTeX-Brief im Hauptdokument brief.tex über den Befehl \input{} laden und die Adressen von dort auslesen.

Am Ende des Hauptdokuments brief.tex wir die Datei address.adr eingebunden.

...

\end{letter}

% Die Adressdatei wird eingebunden
\input{address.adr}

\end{document}

Beim Konvertierungslauf holt LaTeX die Adressen von dort ab und fügt sie automatisch in das Feld für die Empfängeradresse im Brief ein.

Folgendes Schema für die Empfängeradressen habe ich für das Beispiel gewählt:

% --- Schemata ---
\adrentry{} % Vorname
         {} % Nachname
         {} % Straße Hausnummer \\ PLZ Ort
         {}
         {}
         {}
         {}
         {}
% ----------------

Mit \adrentry wird immer ein neuer Adresseintrag begonnen.

In den geschweiften Klammern {} werden dann Attribute, also die Kontaktinformationen definiert. Es gibt dabei keine Reihenfolge, jedoch solltet ihr immer in jedem Kontakt die gleiche Information in der gleichen Klammer platzieren.

In dem obigen Schema wird der Vornamen in die erste geschweifte Klammer (#1) geschrieben.

Für eine bessere Sortierung bei vielen Adressen kann \adrchar{} in der address.adr verwendet werden. Der Eintrag wird während des LaTeX-Konvertierungslaufs ignoriert, erzeugt also keine Fehler.

Serienbrief erstellen

Nachdem nun alle Empfängeradressen nach einem einheitlichen Schema in der address.lco hinterlegt sind, kann mit dem Erstellen des Serienbriefs begonnen werden.

Im Hauptdokument brief.tex ist die Logik für das Auslesen der Adressen direkt unterhalb von \begin{document} einzufügen.

% --- Serienbrief ---
% Es werden die Einträge aus der Adressdatei ausgelesen.
% Für jeden Eintrag wird ein eigener Brief erstellt.
% Erklärung
% In der eckigen Klammer [] wird die Anzahl der Attribute pro Kontakt angegeben, die in der address.adr definiert sind.
%
% Es werden die Werte aus den {}-Klammern 1,2,3 ausgelesen und neu angeordnet
% --- OPTION 1 ---
\renewcommand*{\adrentry}[8]{%
\begin{letter}{#2 #1\\#3}
% --------------------------

Was passiert nun?

Mit diesen zwei Zeilen wird LaTeX gesagt, dass wir

  • 8 geschweifte Klammern pro Empfängeradresse haben - [8]
  • Die Werte aus den Klammern #1, #2, #3 ausgelesen werden und
  • in der Reihenfolge #2 #1 \\ #3 eingefügt werden sollen

Es wird also damit pro Empfängeradresse

  • Vorname - #1
  • Nachname - #2
  • Adresse - #3

ausgelesen und in der Reihenfolge Nachname Vorname Adresse eingefügt.

Serienbrief mit Filter erstellen

LaTeX-Serienbriefe lassen sich auch mit Filter erstellen. Das bedeutet, dass in den geschweiften Klammern Werte abgespeichert werden können und während des Konvertierungslaufs nur die Filterwerte als Empfängeradresse verwendet werden.

Ein Beispiel:

In der Hauptdatei biref.tex wird der Abschnitt direkt nach \begin{document} eingefügt.

% Wenn-Dann-Prüfung
\renewcommand*{\adrentry}[8]{
\ifdim #4pt>0pt\relax
% Der Wert in {}-Klammer 4 ist eine Zahl größer als 0.
\begin{letter}{#2 #1\\#3}
% Es wird der Wert in {}-Klammer 5 geprüft und die entsprechende Anrede gesetzt
% m = männlich
% w = weiblich
\if #5m \opening{Lieber #2,} \fi % es wird \opening verwendet, deshalb ist die Anrede weiter unten auszuschalten
\if #5w \opening{Liebe #2,} \fi  % es wird \opening verwendet, deshalb ist die Anrede weiter unten auszuschalten

Was passiert nun?

  1. Die Klammer #4 wird geprüft, ob deren Wert > 0 (größer Null) ist. Dort steht also eine Zahl und kein Zeichen.

  2. Bei einem Treffer, also der Wert in #4 ist > 0 (größer Null), wird die Empfängeradresse verwendet

    1. Es wird dann die Klammer #5 geprüft, ob dort m oder w steht. Je nach Wert wird eine andere Anrede für den Vornamen aus Klammer #2 verwendet, die über \opening definiert wird

      m = Lieber #2 w = Liebe #2

Es ist also sehr einfach über ein paar Bedingungen die Erstellung von Serienbriefen zu automatisieren und ganz gezielt Empfänger anzuschreiben.

Codeberg

LaTeX Templates

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj

Source

Photo by Mathyas Kurmann on Unsplash