Aus LinuxUser 06/2013

LaTeX mit Daten aus externen Quellen anreichern

© Ayla87, sxc.hu

Am laufenden Band

Mit Skriptsprachen wie Perl oder Python verheiraten Sie Datenbanken und LaTeX zu einem Dream-Team beim Seriendruck.

Zur strukturierten und effizienten Verwalten von Daten stehen leistungsfähige Datenbanksysteme (DBS) wie PostgreSQL [1], Apache CouchDB [2], SQLite [3] oder BaseX [4] bereit. Die Programme sind ausschließlich auf diesen Einsatzzweck hin optimiert. Bei Dokumenten mit perfektem Druckbild gilt dagegen das Textsatzsystem LaTeX als Maß der Dinge. Dieser Beitrag zeigt, wie Sie die beiden Spezialisten zu einem Dream-Team vereinen.

Die Abfrage der Datenbank – also der Zugriff auf die gespeicherten Daten – erfolgt über standardisierte Schnittstellen und Abfragesprachen, wie SQL oder XQuery. Inzwischen verfügen fast alle Programmiersprachen über entsprechende Module, um die Kommunikation über diese Schnittstellen zu kapseln und damit das Programmieren und den Zugriff auf die Daten zu vereinfachen. Wie Sie die gelesenen Daten danach ausgeben oder weiterverarbeiten, steht Ihnen frei. Mit Hilfe von LaTeX erhalten Sie in jedem Fall ein optisch ansprechendes Ergebnis.

Rückblick

Im ersten Teil dieses Workshops bildete LaTeX den zentralen Punkt, an den alle Erweiterungen andockten [5]. Dabei erfolgte der Zugriff ausschließlich über Bordmittel in Form von LaTeX-Paketen. Selbst die Anfrage an die Datenbank gehörte zum Dokument.

In diesem Teil des Workshops erfolgt der Einsatz von LaTeX nur noch als Mittel zum Zweck. Den Hintergrund dafür stellt das das Zerlegen des Ablaufs in einzelne, leichter zu überschauende und besser zu pflegende Schritte dar. Das eröffnet auch die Möglichkeit für komplexere Datenbankabfragen. Den Zugriff auf das DBS übernehmen nun höhere Programmiersprachen, wie PHP, Python, Perl oder Ruby (Abbildung 1).

Abbildung 1: Das Zerlegen des Ablaufs in separate Schritte vereinfacht das Anpassen an eine veränderte Umgebung.
Abbildung 1: Das Zerlegen des Ablaufs in separate Schritte vereinfacht das Anpassen an eine veränderte Umgebung.

LaTeX dient dabei lediglich zum Vorbereiten der druckreifen Ausgabe ins Zielformat, etwa nach Postscript oder PDF. Um alles andere – das Generieren des LaTeX-Dokuments mit den Inhalten aus der Datenbank und das Übersetzen ins gewünschte Zielformat – kümmern sich die Programmzeilen aus dem Shell-Skript drumherum (Listing 1).

Listing 1

#!/bin/bash
python namensschilder.py > namensschilder.tex
pdflatex namensschilder.tex
pdfnup --nup 1x2 --no-landscape --outfile a.pdf namensschilder.pdf
pdfnup --nup 2x1 --outfile namensschilder_druck.pdf a.pdf
python teilnehmerliste.py > teilnehmerliste.tex
pdflatex teilnehmerliste.tex

Vorgehen

Alle nachfolgend gezeigten Schritte beziehen sich auf ein praktisches Beispiel, das Erstellen von Unterlagen für eine Veranstaltung. Dazu gehört neben Namensschildern für alle Mitwirkenden (Referenten, Organisatoren, Helfer, Presse) eine Liste der Teilnehmer. Das Ziel besteht darin, aus einer zentralen Datenbasis alle Unterlagen zu erstellen – und das möglichst automatisiert ohne Handarbeit.

Als Inspiration diente der Vortrag „Konferenzmanagement mit LaTeX“ von Uwe Ziegenhans [6] sowie die Vorbereitungen zum jährlich im Spätherbst in Potsdam stattfindenden Brandenburger Linux-Infotag (BLIT) [7].

Bei diesem bildet das Konferenzverwaltungssystem Pentabarf [8] die Grundlage zum Verwalten aller beteiligten Personen, Aussteller und Vorträge (Abbildung 2). Ursprünglich für die Veranstaltungen des Chaos-Computer-Clubs entwickelt, hat Pentabarf inzwischen nicht nur in diesem Genre Maßstäbe gesetzt.

Abbildung 2: Die Veranstalter des BLIT setzen zum Verwalten der Teilnehmer auf die bewährte Software Pentabarf.
Abbildung 2: Die Veranstalter des BLIT setzen zum Verwalten der Teilnehmer auf die bewährte Software Pentabarf.

Das System nutzt PostgreSQL als Datenbank und verfügt über eine Reihe von Filtern zum Export der Daten in Formate wie HTML, XML und CSV. Bislang kommt dabei meist der CSV-Export zum Einsatz, der die Datenbasis für Drucksachen bereitstellt. Der direkte Zugriff auf PostgreSQL wäre zwar möglich, der Weg über CSV genügt aber aufgrund der überschaubaren Datenmenge bislang vollkommen.

Das Drumherum

Das Shell-Skript aus Listing 1 bildet den gesamten Arbeitsablauf ab. Zur Ausgabe der Namensschilder ruft es zunächst das Python-Skript namensschilder.py auf und leitet dessen Ausgabe mittels des Operators > in eine LaTeX-Datei um (Zeile 3). Mittels Pdflatex entsteht danach aus dieser LaTeX-Datei ein PDF-Dokument (Zeile 4). Da dieses keine dynamischen Elemente wie Referenzen oder ein Inhaltsverzeichnis enthält, genügt ein einziger Durchlauf zum Übersetzen.

In den Zeilen 5 und 6 fasst das Skript jeweils zwei einzelne Seiten auf einem Blatt zusammen – zunächst übereinander (Zeile 5) und darauf folgend nebeneinander (Zeile 6). Das Ergebnis besteht aus vier Namensschildern samt passender Schnittmarken pro Blatt, sodass sich dieses direkt für den Druck sowie den maschinellen Schnitt eignet (Abbildung 3). In den Zeilen 8 und 9 entsteht mittels der Daten aus der Datenbank die Liste der Teilnehmer sowie eine passende Übersicht.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 06/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: