Kindle-eBooks mit Pandoc erstellen

In den letzten Jahren bin ich ein großer Fan von Pandoc geworden. Pandoc konvertiert Texte aus der Markdown-Syntax in alle erdenklichen anderen Formate. Ich verwende Pandoc vor allem zum Schreiben von eBooks. Wenn Sie wissen möchten, wie Sie selbst mit Pandoc ein eBook in dem auf amazon vorgeschriebenen Mobi-Format erstellen, lesen Sie weiter …

Die erste Voraussetzung ist Pandoc. Dieses Open-Source-Programm kann von der Pandoc-Website kostenlos heruntergeladen werden (und hier die Installations-Tipps). Viele Linux-Distributionen liefern sogar entsprechende Pakete mit — die sind aber leider nicht immer aktuell. (Pandoc ist ein relativ junges Programm, bei dem es regelmäßig neue Versionen mit durchaus nützlichen Verbesserungen gibt. Es empfiehlt sich deswegen, eine aktuelle Version zu verwenden.)

Der nächste Schritt besteht darin, den Text des eBooks zu verfassen. Dabei halten Sie sich an die Regeln der Pandoc-Syntax. Für nicht-technische Texte sind die Regeln schnell zusammengefasst: # am Zeilenanfang kennzeichnet eine Überschrift der ersten Ordnung, ## eine zweiter Ordnung, ### eine dritter Ordnung. Texthervorhebungen führen Sie so durch: kursiv und fett.

Idealerweise verwenden Sie einen Editor, der die Markdown-Syntax kennt und ein entsprechendes Syntax-Hightlighting durchführt. (Ich arbeite mit dem Emacs, für den es eine Markdown-Erweiterung gibt.) Ich strukturiere längere Texte in der Regel kapitelweise, also pro Kapitel eine Datei.

HTML-Ansicht

Damit Sie einen Vorstellung erhalten, wie das eBook später ungefähr aussieht, erzeugen Sie einfach eine HTML-Version und sehen sich diese in Ihrem Webbrowser an. Ich verwende dazu eine winzige Script-Datei:

#!/bin/bash
chaps="impressum.text vorwort.text kapitel1.text kapitel2.text kapitel3.text"
pandoc --toc --smart -s -c buch.css -o buch.html $chaps

Damit das Ganze optisch einigermaßen erträglich aussieht, brauchen Sie eine einfache CSS-Datei. Sie können buch.css (siehe den Download-Link am Ende des Artikels) als Ausgangspunkt für eigene Experimente verwenden.

pandoc-mobi1

Umwandlung in das Mobi-Format

Sobald der Text fertig ist, steht die Umwandlung in das Mobi-Format an. Dazu benötigen Sie das Kommando kindlegen, das Sie von der amazon-Website kostenlos herunterladen.

kindlegen erwartet primär eine HTML-Datei als Input. Diese HTML-Datei erzeugen Sie wie gehabt mit Pandoc. Außerdem brauchen Sie aber noch drei Dateien:

  • eine Bilddatei (*.jpeg) für das Cover des Buchs.
  • eine *.opf-Datei, die im XML-Format die Eckdaten des Buchs beschreibt (Titel, Autor, etc.). In die *.opf-Datei müssen Sie auch die Orte der restlichen Dateien (buch.html, cover.jpeg etc.) eintragen.
  • eine *.ncx-Datei mit einem kapitelweisen Inhaltsverzeichnis des Buchs.

Der genaue Aufbau dieser Dateien ist im Kindle Publishing Guide sehr detailliert beschrieben. Für erste Experimente orientieren Sie sich einfach an den Musterdateien in pandoc-mobi.tgz.

Auch zur Erzeugung der Mobi-Datei verwende ich das folgende Script:

#!/bin/bash
chaps="impressum.text vorwort.text kapitel1.text kapitel2.text kapitel3.text"
pandoc --toc --smart -s -c kindle.css -o tmp.html $chaps
sed -e 's,<h1 id="\([^"]*\)"><a href="\#[^"]*">\([^<]*\)</a></h1>,<h1 id="\1">\2</h1>,' \
    -e 's,<h2 id="\([^"]*\)"><a href="\#[^"]*">\([^<]*\)</a></h2>,<h2 id="\1">\2</h2>,' \
    -e 's,<h3 id="\([^"]*\)"><a href="\#[^"]*">\([^<]*\)</a></h3>,<h3 id="\1">\2</h3>,' \
    < tmp.html > buch.html
~/Downloads/kindle/kindlegen buch.opf

Den Pfad zum Programm `kindlegen müssen Sie natürlich anpassen. Die irrwitzigen sed-Kommandos haben damit zu tun, dass Pandoc bei der Erzeugung der HTML-Datei aus unerfindlichen Gründen jede Überschrift als Link auf sich selbst schreibt. Das sieht hässlich aus und sollte daher geändert werden.

Außerdem sollten Sie für die Kindle-Version Ihres eBooks eine eigene CSS-Datei verwenden. Amazon ist ja der Meinung, dass jeder Text in Blocksatz am schönsten aussieht. Diese Meinung teile ich nicht, und schon gar nicht, wenn es keine Möglichkeit zur Silbentrennung gibt. Immerhin akzeptieren mittlerweile die meisten Kindle-Geräte die CSS-Angabe text-align: left;.

Der erste Durchlauf von kindlegen endet häufig mit Fehlermeldungen: fehlende Angaben in der *.opf-Datei, falsche Querverweise in der *.html-Datei mit dem eBook-Text etc. Erst wenn diese Probleme alle behoben sind, erzeugt kindlegen eine Mobi-Datei.

Preview
Um zu kontrollieren, dass die Mobi-Datei OK ist, brauchen Sie den Kindle-Previewer. Zwar stellt amazon auch dieses Programm kostenlos zur Verfügung, wirklich glücklich bin ich damit aber nicht geworden. Eine Linux-Version gibt es überhaupt nicht, und die Mac-Version funktioniert bei mir nicht (vermutlich, weil ich eine andere Java-Version installiert habe als die amazon-Programmierer). Ich habe es aufgegeben, nach der Ursache zu forschen, und mir stattdessen die Windows-Version in ein virtuelles Windows-XP-System installiert.

pandoc-mobi2

eBook verkaufen

Wenn soweit alles geklappt haben, wollen Sie Ihr Werk jetzt wahrscheinlich im Kindle-Shop verkaufen. Dazu müssen Sie Teilnehmer von Kindle Direct Publishing werden. Vor dem ersten Upload müssen Sie alle erdenklichen Infos angeben — eine mühsame Sache! Aber der Marktmacht von amazon kann man als eBook-Autor schwer entkommen: Bücher bzw. eBooks, die es bei amazon nicht gibt, sind für viele Leser ganz einfach nicht existent.

Musterdateien

Damit Sie den gesamten Prozess unkompliziert ausprobieren können, habe ich Ihnen alle erforderlichen Quelldateien (also ohne Pandoc und kindlegen) in ein Tar-Archiv verpackt:

pandoc-mobi.tgz