Webdesign und Medien
Leave a comment

LaTeX-Ersatz mit Pandoc und FOP

Für den automatischen Textsatz, also im Grunde das Konvertieren von Texten in PDF, wird nach wie vor häufig LaTeX verwendet. Ich mag weder die Sprache TeX, noch die Macken wie die fehlende UTF-8-Unterstützung. Meiner Meinung nach ist auch das Ergebnis nicht so super, wie es sein sollte. Mit Tabellen, Bildern und Zeilenumbrüchen ist die Engine öfter überfordert.

Im professionellen Satz wird häufig mit dem Format Docbook gearbeitet, das HTML ähnelt. Da ich Docbook nicht gerne direkt eingeben möchte, schreibe ich in Markdown und konvertiere mit Pandoc nach Docbook. Zum Docbook braucht man ein Stylesheet im Format XSLT, das alle Angaben enthält, wie das Layout genau sein soll. Mit dem Programm xsltproc wird das Docbook auf das Stylesheet angewendet, heraus kommt eine FO-Datei. Diese FO-Datei muss nur noch mit den Bildern zusammen ins PDF umgewandelt werden, aber das ist der schwierige Schritt. Hier gibt es einige Programme mit unterschiedlicher Qualität. Ich verwende Apache FOP.

Installation unter Ubuntu 13.04

Zuerst werden die Pakete pandoc, fop, xsltproc und docbook-xsl installiert. Die ersten drei sind die beteiligten Programme. das letzte ist das Standard-Stylesheet. Damit ist im System alles vorhanden, der Rest ist für das jeweilige Dokument spezifisch.

pandoc -D docbook > template.db

Der Befehl holt von Pandoc das Standard-Template, mit dem es Docbooks erstellt. Man kann hier z.B. die Elemente article und articleinfo durch book und bookinfo ersetzen. Weitere Grundlagen gibt es bei der TU Chemnitz. Das Verzeichnis /usr/share/xml/docbook/stylesheet/docbook-xsl enthält das Standard-Style und wird zwecks Anpassungen zur template.db kopiert. Nahezu alle Einstellungen kann man in der docbook-xsl/fo/param.xsl machen. <xsl:param
name=”l10n.gentext.default.language”>de</xsl:param>
stellt Wörter wie Inhaltsverzeichnis oder Kapitel auf deutsch. <xsl:param name=”paper.type”>A4</
xsl:param>
ändert das Papierformat auf A4. Damit sind Installation und Konfiguration geschafft.

Anwendung

Zum Template und Stylesheet kommt die Markdown-Datei mit dem Dokument. Man kann ein Dokument natürlich auf mehrere Markdown-Dateien aufteilen und Bilder referenzieren. Auch Literaturangaben z.B. im BibTeX-Format sind kein Problem. Aus einer Datei document.md wird erst mit dem Template (und dem Literaturverzeichnis) das Docbook erstellt, dann mit dem Stylesheet das FO und dann mit den Bildern (und Schriften) das PDF. Wie das mit den Schriften geht, habe ich hier beschrieben.

pandoc --template template.db -o document.db document.md
xsltproc -o document.fo docbook-xsl/fo/docbook.xsl document.db
fop document.fo document.pdf

Es bietet sich an, diese drei Befehle in ein Shell-Script zu schreiben, damit man mit einem Klick das Markdown in ein PDF übersetzen kann. Die sehr gute Hilfe von Pandoc sieht nach der Umwandlung in PDF so aus.

Leave a Reply

Your email address will not be published. Required fields are marked *