OpenOffice-Anwender erstellen mit der Textverarbeitung in wenigen Schritten Serienbriefe, und auch in anderen Textprogrammen ist diese Funktion selbstverständlich – doch das Textsatzsystem LaTeX [1] kennt kein solches Feature. Dabei gibt es hübsche LaTeX-Klassen für die private oder geschäftliche Korrespondenz, aber sie dienen stets nur dem Verfassen einzelner Schreiben.
Liegen Adress- oder andere Daten als Tabelle in einer der Datenbanken MySQL und Postgresql vor, hilft das in Python geschriebene Tool LaTeXDB [2] weiter: Es integriert SQL-Abfragen in ganz normale LaTeX-Dokumente und verhilft damit auch LaTeX-Freunden zur Serienbrieffunktion.
Bei LaTeXDB handelt es sich nicht um eine echte Erweiterung von LaTeX, sondern um ein Wrapper-Skript: Es sucht in einer LaTeX-Datei nach Datenbankabfragen, leitet diese an die Datenbank weiter und trägt die Ergebnisse in die LaTeX-Datei ein.
Einfache Syntax
Der Aufbau eines LaTeX-Dokuments mit SQL-Aufrufen wird am schnellsten anhand des kleinen Beispiels in Listing 1 deutlich. Bei den fett gedruckten Bereichen des Listings handelt es sich um LaTeXDB-Befehle:
\texdbconnectiondefiniert eine Verbindung mit der SQL-Datenbank. Das erste Argument gibt den Datenbanktyp an (MySQLoderPostgreSQL), danach folgen Server, Benutzername, Passwort und Name der Datenbank.- In
\texdbdeftragen Sie eine SQL-Abfrage ein (in der üblichen SQL-Syntax, alsoselect Spalten from Tabelle) und geben Metavariablen (hier:##Vornameund##Nachname) an, die später im LaTeX-Code den Zugriff auf die Werte ermöglichen. - Am wichtigsten ist schließlich die For-Schleife, die durch das neue Schlüsselwort
\texdbforeingeleitet wird: Für alle Ergebnisse der SQL-Abfrage ("result set") fügt LaTeXDB das zweite Argument in das LaTeX-Dokument ein. Dabei ersetzt es die Metavariablen durch die aktuellen Werte aus der Datenbankabfrage.
Der Beispiel-LaTeX-Code holt aus einer simplen User-Tabelle Vor- und Nachnamen. Für jeden Treffer erzeugt LaTeXDB dann einen Block, der mit dem Briefkopf beginnt, dann den Adressaten persönlich anspricht und nach dem Brief-Footer einen Seitenvorschub auslöst: So entsteht ein einfacher Serienbrief.
Listing 1
\documentclass{…}\texdbconnection{MySQL,localhost,user,passwort,texdb}\texdbdef{##Users}{select Vorname,Nachname from Users}{##Vorname,##Nachname}
\begin{document}\texdbfor{##Users}{
\briefheader
Hallo, ##Vorname ##Nachname, \\
anbei schicken wir Ihnen eine aktuelle Preisliste.
\brieffooter
\newpage}
\end{document}
TIPP
Beachten Sie bei eigenen LaTeXDB-Experimenten, dass die Metavariablen (die mit ## beginnen), "präfixfrei" sein müssen – es darf also kein Variablenname das Anfangsstück eines anderen Variablennamen sein: ##vorn und ##vorname dürfen nicht gleichzeitig in einem LaTeXDB-Dokument auftauchen.
Programminstallation
LaTeXDB lässt sich schnell installieren: Nach dem Auspacken des Archivs latexdb-0.3.tar.gz liegt im neu erstellten Verzeichnis eine ausführbare Datei install, die Sie mit Root-Rechten aufrufen – das Skript kopiert ein paar Programmdateien und die Manpage in die /usr/local-Hierarchie. Danach können Sie das Programm direkt starten:
$ latexdb -v /usr/local/bin/latexdb version 0.3 (2006/04/24). Relased under the GPL.
Klappt das nicht, ist vielleicht der Pfad falsch eingestellt – /usr/local/bin muss in der Variable $PATH auftauchen.



