Aus LinuxUser 05/2013

LaTeX mit Daten aus externen Quellen anreichern

© Alitaylor, sxc.hu

Angefüttert

Ob Serienbrief oder Teilnehmerliste – mit dem richtigen Adapter befüllen Sie LaTeX-Dokumente problemlos mit den Feldinhalten einer Datenbank und erstellen so Druckerzeugnisse in perfekter Qualität.

Strukturierte Datensätze wie Adressen und Produktinformationen liegen in der Regel in Datenbanken. Zum Verarbeiten liest eine Applikation die Datensätze zunächst aus und setzt danach beispielsweise die Inhalte der einzelnen Felder an die jeweilige Position in einem Textbaustein ein. So entstehen Serienbriefe, Terminpläne, Namensschilder, Teilnehmerlisten und Veranstaltungsprogramme.

Zum Anbinden des Textsatzsystems LaTeX an eine Datenbank liegt nur vergleichsweise wenig Dokumentation vor. Häufig gerät sie erst bei einer intensiven Suche ins Blickfeld. Dabei stehen zwei gegensätzliche Verfahren und damit verbundene Vorgehensweisen zur Wahl.

Die erste Variante greift ausschließlich auf Bordmittel von LaTeX zurück und platziert die gesamte Logik zum Zugriff auf die Datenbank in der LaTeX-Datei. Bei der zweiten Variante kommt zusätzlich eine Programmiersprache wie Perl oder Python zum Einsatz. Mit dieser holen Sie die Daten und erzeugen im nächsten Schritt daraus ein LaTeX-Dokument.

Beiden Wegen gemeinsam ist der abschließende Schritt des Übersetzens des LaTeX-Codes ins gewünschte Format, sei es nun Postscript mittels latex und dvips oder PDF mittels pdflatex.

Den Ausgangspunkt für diesen Artikel bilden die drei Pakete Textmerg [1], Csvtools [2] und LaTeXDB [3]. Bei Debian und dessen Derivaten gehören Textmerg und Csvtools zum Paket texlive-latex-extra. LaTeXDB gibt es derzeit nur im CTAN [4], nicht als fertiges DEB- oder RPM-Paket. Alle Pakete binden Sie über das Kommando \usepackage{Paket} in der Präambel des Dokuments ein.

Textmerg

Textmerg ermöglicht das Einlesen von Datensätzen aus einer Textdatei. Dabei erstreckt sich ein vollständiger Datensatz über mehrere Textzeilen hinweg, jedes Feld des Datensatzes liegt in einer einzelnen Zeile. Zum Verarbeiten benötigt LaTeX noch Information zur Struktur der Textdatei und den einzelnen Feldern der Datensätze. Diesen Aufbau beschreiben Sie mit dem Kommando \Fields{Feldbezeichner}. Für drei Felder eines Beispielanschreibens kommt folgender Eintrag zum Einsatz:

\Fields{\Vorname\Name\Funktion}

LaTeX leitet daraus drei Variablen \Name, \Vorname und \Funktion ab. Bei der Wahl der Bezeichner haben Sie zwar freie Hand, sollten aber darauf achten, Kollisionen mit bestehenden Kommandos zu vermeiden.

Die Variablen dürfen Sie an beliebiger Stelle im Dokument platzieren. Noch sind sie jedoch leer – um sie mit sinnvollen Inhalten zu befüllen, teilen Sie LaTeX mit, in welcher Datei diese liegen. Dazu nutzen Sie zusätzlich das Kommando \Merge{Datei}. In Listing 1 heißt die Datei empfaengerliste.

Listing 1

...
\Fields{\Vorname\Name\Funktion}
...
\Merge{empfaengerliste}{%
An
\Vorname \Name \\
\Funktion \\
}
...

Sobald Sie das Dokument übersetzen, öffnet LaTeX in Zeile 4 die Datei empfaengerliste und befüllt bei jedem Durchlauf die Zeilen 6 und 7 entsprechend. Dabei arbeitet die Software die Datei mit den Datensätzen bis zum Ende durch. Alle Einträge landen in einem Dokument.

Listing 2 zeigt ein vollständiges Beispiel, eine Liste mit Besuchern für ein Konzert in der Stadt Stenkelfeld [5]. Jeder der fünf Einträge besteht aus dem Vornamen, dem Namen und der Funktion der Person aus der bekannten norddeutschen Hörspielserie. Abbildung 1 zeigt das Ergebnis nach dem Übersetzen des LaTeX-Codes aus Listing 3 mit Pdflatex.

Abbildung 1: Bei Bedarf generieren Sie mit LaTeX eine Teilnehmerliste für eine Veranstaltung aus den Daten einer Textdatei.
Abbildung 1: Bei Bedarf generieren Sie mit LaTeX eine Teilnehmerliste für eine Veranstaltung aus den Daten einer Textdatei.

Listing 2

Friedhelm
Pötter
Leiter der Jürgen-Koppelin-Bildungsstätte
Dr. Walter
Broermeyer
Wim-Thoelke-Universität Stenkelfeld
Friedemann
von Klöhnen
Geriatriedekan, Heimleiter des Seniorenstifts am Höcklager Industrieweg
Helmut
Sönkel-Pörthagen
Geschäftsführer der Großküche Stenkelfeld
Dr. Bernwart
Ölvermöhlen
Direktor der Volksgenossenbank von 1936

Listing 3

\documentclass[10pt]{article}
\usepackage{german}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{palatino}
\usepackage{textmerg}
\begin{document}
\Fields{\Vorname\Name\Funktion}
\begin{center}
\huge{Teilnehmerliste zum Neujahrskonzert im Gasthof Knollmeyer}
\end{center}
~\\
\begin{itemize}
\Merge{teilnehmer}{%
    \item \textbf{\Vorname ~\Name} \\ \Funktion \\
}
\end{itemize}
\end{document}

Csvtools

Csvtools von Dr. Nicola Talbot verhält sich ähnlich zu dem bereits vorgestellten Paket Textmerg. Die Daten befinden sich in einer Textdatei im CSV-Format. Jede Zeile darin entspricht einem Datensatz, ein Komma trennt jeweils die einzelnen Felder eines Datensatzes voneinander.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 05/2013 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: