Login
Newsletter
Werbung

Do, 20. Juni 2013, 15:00

PDF-Dokumente schreiben mit Pandoc und Markdown

Wen es nicht stört, dass beim Schreiben von Texten für die Erzeugung einer ordentlich gesetzten PDF-Datei auch noch weitere Programme aufgerufen werden müssen, der kann sich dafür eine äußerst produktive Werkzeugkette mit Pandoc und Markdown aufsetzen, welche auf vereinfachten Auszeichnungssprachen basiert.

Das bietet sich vor allem nicht zuletzt für diejenigen an, die sich nicht in das Schwergewicht LaTeX einarbeiten oder sich keine LaTeX-Distribution auf ihrem Computer installieren wollen oder können, aber trotzdem Editor-basiert arbeiten möchten. Denn auch für recht anspruchsvolle Dokumente stellt dieser Ansatz mittlerweile eine beachtliche Alternative für das große Textsatzsystem dar. Dieser Artikel führt in das Erstellen von PDF-Dokumenten mit Pandoc und Markdown ein und bezieht sich dabei mit Ubuntu 12.04 LTS auf ein typisches Linux-System. Dabei liegt die Gewichtung auf Elementen, die beim Schreiben akademischer Beiträge benötigt werden, nämlich unter anderem auf Fußnoten und den ordentlichen Nachweis der verwendeten Quellen.

Markup vs. WYSIWYG

»What-you-see-is-what-you-get«-Textverarbeitungen wie zum Beispiel LibreOffice Writer machen es möglich, elektronische Textdokumente auf der Layout-Ebene genau so zu bearbeiten, wie sie hinterher bei der Druckausgabe oder nach dem Export als PDF-Dokument aussehen. Demgegenüber stehen Dokumentenprozessoren wie zum Beispiel das Textsatzsystem LaTeX, die grundsätzlich dadurch charakterisiert sind, dass elektronische Dokumente der Druckvorstufe und/oder zur elektronischen Betrachtung aus Quelldateien generiert werden, die grundsätzlich unabhängig vom Dokumentenprozessor mit einem Editor bearbeitet werden. In diesen Quelldateien findet sich neben dem eigentlichen Text auch das spätere Layout beschrieben. Beides befindet sich damit sozusagen auf derselben Ebene.

Unabhängig davon, ob zum Beispiel LaTeX mit verschiedenen speziellen Zusatzpaketen einen wesentlich umfangreicheren Funktionsumfang als bspw. LibreOffice Writer bereithält, hat es auch gewisse Vorteile, nicht Binärdateien, sondern Unicode-codierte Textdateien wie bei einem Programmquellcode zu bearbeiten. So können auf diese u.a. Patches angewendet werden, um Korrekturen unkompliziert zu managen, oder die Quelldateien unter eine Versionskontrolle wie Subversion oder Git gestellt werden, was auch für die kollaborative Bearbeitung eines Textes vielfältige Möglichkeiten bereithält.

Dokumentenprozessoren wie Pandoc erlauben es, aus ein und derselben Quelldatei unterschiedliche Zielformate zu generieren (Stichwort: »Multi target publishing«), und vor allem wenn zum Beispiel E-Book-Formate wie EPUB anvisiert werden, bei denen der Text nicht mehr als gedrucktes Buch dargestellt wird, überwiegen meiner Meinung nach die Vorteile, in einer vom Layout unabhängigen Umgebung zu arbeiten.

Im LaTeX-Quellcode zum Beispiel werden Layout-Elemente wie Überschriften und Fußnoten durch bestimmte Steuerbefehle gekennzeichnet. Im Gegensatz dazu wird in den sogenannten vereinfachten Auszeichnungssprachen (Lightweight markup languages) alles mit wenigen Zeichen und einfachen Einrückungen erreicht. Das Prinzip dabei folgt dem, was meist schon rein intuitiv auch in E-Mails oder auf elektronischen Notizzetteln angewendet wird. Wenn nämlich zum Beispiel Überschriften mit Minuszeichen unterstrichen oder Auflistungen mittels Sternchen erzeugt werden. Diese Auszeichnungssprachen werden häufig scherzhaft »no markup languages« genannt, aber tatsächlich ist ein so formatierter Text auch schon ohne Weiterverarbeitung äußerst bequem lesbar.

Markdown, das als HTML-Vorstufe entwickelt worden ist, und ReStructuredText (reST), das aus der Python-Dokumentation stammt, begegnet man unter den vereinfachten Markupsprachen mittlerweile vermutlich am häufigsten. Sie halten einen recht umfassenden Funktionsumfang bereit und aus Quelldateien dieser Sprachen lassen sich mit geeigneten Prozessoren wie Pandoc sehr einfach hochwertige elektronische Dokumente wie zum Beispiel PDF-Dateien erzeugen.

Pandoc

Bei Pandoc handelt es sich um einen sehr ausgereiften und umfangreichen Markupkonverter und Dokumentenprozessor. Pandoc beherrscht zwar neben vielen anderen Markups auch reST, eignet sich aber gerade auch für die Dokumentation mit Markdown, weil es einen großen Satz von Erweiterungen dafür bereitstellt.

Pandoc wird zur Zeit laufend weiterentwickelt und verbessert, weswegen auch für aktuelle Distributionen meist nur recht veraltete Versionen verfügbar sind (aktuell: 1.11.1, Ubuntu 12.04: 1.9.1, Ubuntu 12.10: 1.9.4). Auf der Pandoc-Seite wird ein übersichtliches Änderungsprotokoll gepflegt, in dem man alle Verbesserungen anhand der jeweiligen Versionsnummer detailliert nachvollziehen kann.

Pandoc installieren

Pandoc ist in der funktionalen Programmiersprache Haskell implementiert. So besteht die Möglichkeit, die aktuellste Version von Pandoc ohne größeren Aufwand über das Haskell-Buildsystem Cabal auf den eigenen Computer zu bekommen. Für die Benutzung benötigt man das Paket cabal-install.

Danach aktualisiert man für den nun zur Verfügung stehenden Manager Cabal zunächst das Verzeichnis der erhältlichen Haskell-Programme:

$ cabal update

Nun kann Pandoc mittels Cabal heruntergeladen und kompiliert werden:

$ cabal install pandoc

Dabei werden alle benötigten Abhängigkeiten automatisch mitgezogen. Da alles in das lokale Verzeichnis ~/.cabal geschrieben wird, benötigt man keine Superuser-Rechte für die Benutzung von Cabal. Schließlich muss nur noch die Pfadvariable der Shell um den Pfad der von Cabal erzeugten ausführbaren Dateien erweitert werden. Dazu muss die folgende Zeile in die ~/.bashrc eingefügt werden:

export PATH=$HOME/.cabal/bin:$PATH

Wenn nun noch das Terminalfenster geschlossen und neu aufgerufen wird, steht Pandoc fertig auf der Kommandozeile bereit.

Markdown

Markdown wird mit einem beliebigen Texteditor geschrieben. Auf aktuellen Systemen läuft dabei Unicode »unter der Haube«. Die Dateiendung kann dabei grundsätzlich auch frei gewählt werden, es empfiehlt sich allerdings entweder die Endung .markdown oder .md dafür zu verwenden. Diese Dateien lassen sich auch ohne jegliche weitere Software und grundsätzlich systemübergreifend auf jedem beliebigen Rechner bearbeiten.

Viele Editoren halten für Markdown spezielle Modi bzw. Plug-ins bereit. Für Emacs gibt es bspw. den Markdown-Mode, der Syntax-Highlighting und Tastenkombinationen für das schnelle Einfügen von bestimmten Elementen wie zum Beispiel Hyperlinks zur Verfügung stellt.

Die einzelnen Funktionen von Markdown in Pandoc lassen sich im Handbuch auf der Pandoc-Seite nachlesen. Im Netz findet sich auch eine deutsche Übersetzung der Original-Spezifikation, allerdings ist diese gegenüber den Erweiterungen, die Pandoc zur Verfügung stellt (u.a. Fußnoten und Tabellen), sehr eingeschränkt.

Zur beispielhaften Nutzung wird hier ein Beispieldokument für Pandocs Markdown genutzt. Dieses Beispieldokument enthält eine Reihe von verschiedenen Markup-Elementen:

  • Zeilenvorschübe im Quelltext werden grundsätzlich ignoriert, wodurch sich der bearbeitete Text »strecken« lässt.
  • Überschriften werden erzeugt, indem man einem Überschriftentext ein bis sechs Doppelkreuze (Hash-Zeichen) voranstellt, und zwar entsprechend der Gliederungstiefe.
  • Hyperlinks werden in eckigen Klammer eingefasst oder es kann ein spezieller Linktext für diese angegeben werden.
  • Zitatblöcke werden durch nach links geöffnete eckige Klammern am Anfang der Zeile markiert.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung