eBooks automatisch erzeugen

Ich bin ein großer Anhänger von Markdown (und allen seinen Dialekten), nicht nur seitdem ich für mein Blog auf Hugo umgestiegen bin. Da ich auch keine großen typographischen Orgien in meinen Büchern oder Artikeln feiere, sondern mir solides Handwerk ausreicht, bin ich dazu übergegangen, Markdown auch für Manuskripte zu benutzen.

Da ich generell eher faul aufwandseffizient bin, habe ich mir einen kleinen Workflow gebaut, der mir das Erstellen einer ePUB- und einer MOBI-Datei direkt aus einer Markdown-Quelle erlaubt. Im Netz gab es einige Hinweis, wie sich das mit pandoc erledigen lässt, aber ich benutze Calibre.

Die Zutaten

Ich habe in meinem Arbeitsverzeichnis folgende Dateien

  • alle Markdown-Quelldateien (minimal eine ;-) )
  • die Grafik für das Cover
  • eine XML-Datei mit den Metadaten

Kommando ePUB!

Die Konvertierung erfolgt auf der Kommandozeile mit ebook-convert von Calibre. Auf einem Mac liegen die Kommandozeilen-Programme von Calibre im Application Bundle (falls Calibre im normalen Programme-Ordner liegt, dann findet sich ebook-convert unter /Applications/calibre.app/Contents/MacOS/ebook-convert)

Beim Aufruf gibt es haufenweise mögliche Optionen, die etwas Recherche in der Anleitung und im Web erfordert haben, bis das gewünschte Ergebnis erzielt wurde. Hier der Aufruf in meinem Script. (Für alle, die nicht mit der bash als Shell oder unter Windows arbeiten: der Backslash am Ende der Zeile bedeutet die Fortführung der Eingabe, das alles ist logisch also eine einzelne Befehlszeile)

ebook-convert EINGABEDATEI.md AUSGABENAME.epub \
	--authors="Armin Hanisch"  \
	--language de_DE \
	--toc-title="INHALT" \
	--formatting-type=markdown \
	--level1-toc="//h:h2" \
	--level2-toc="//h:h3" \
	--title="<der buchtitel>" \
	--cover=cover.jpg \
	--preserve-cover-aspect-ratio \
	--read-metadata-from-opf=metadata.xml \
	--epub-inline-toc \
	--epub-toc-at-end

Sehen wir uns die einzelnen Optionen der Reihe nach an:

  • --authors Hier stehen die Namen der Autoren
  • --language Die Sprache, in der das Bich erstellt wird
  • --toc-title Die Überschrift vor dem Inhaltsverzeichnis
  • --formatting-type Calibre erkennt den Dateityp normal an der Erweiterung, damit erzwingen wir als Eingabeformat Markdown, unabhängig von der Dateiendung der Eingabedateien
  • --level1-toc Ein XPath-Ausdruck, mit dem die HTML-Tags für die erste Ebene des Inhaltsverzeichnisses erkannt werden. Ja, ich habe in diesem Beispiel die erste Ebene im Markdown-Script mit ## Erste Ebene formatiert, als Beispiel zur Verdeutlichung.
  • --level2-toc Das Gleiche wie oben, nur für die zweite Ebene des Inhaltsverzeichnisses (und ja, es gibt auch ein --level3-toc)
  • --title Der Buchtitel (wird auch aus den Metadaten übernommen, falls hier nicht angegeben)
  • --cover Pfad zur Grafikdatei mit dem Buchcover
  • --preserve-cover-aspect-ratio Danach habe ich lange gesucht. Bei SVG-Grafikcontainern bleibt das Seitenverhältnis des Covers gleich, nötigenfalls wird das Bild verkleinert. Ansonsten sieht das Cover auf manchen Geräten seltsam aus
  • --read-metadata-from-opf Dateiangabe für die XML-Datei mit den Dublin Core-Metadaten
  • --epub-inline-toc Über diese Option kann man diskutieren. Moderne eBook-Reader nutzen das Metadaten-Inhaltsverzeichnis und bieten eine entsprechende Menüfunktion. Ich bin in dieser Hinsicht altmodisch und habe dennoch meist gerne ein “Blätter-Inhaltsverzeichnis” in meinen Büchern.
  • --epub-toc-at-end Gehört zur obigen Option, damit wird das “Blätter-Inhaltsverzeichnis” am Ende des Dokuments eingefügt. Für ein seitenlange Inhaltsverzeichnis am Beginn eines eBooks besteht nun wirklich keine Notwendigkeit mehr. ;-)

Nach dem Aufruf findet sich in der Datei AUSGABENAME.epub ein fix und fertiges eBook, mit Inhaltsverzeichnis, Cover und allen Metdaten und das alles ohne langes Rumgeklicke im GUI von Calibre!

MOBI gefällig?

Wird das Script noch um eine weitere Zeile erweitert, lässt sich mit der gleichen Methode auch eine MOBI-Version für den Kindle erzeugen. Natürlich gibt es auch kindlegen, aber der Aufruf unten liefert bei mir ein perfekt lesbares Kindle-eBook (da ich der Meinung bin, dass auch bash-Scripts lesbar sein sollten, wieder mit Backslashes in einzelne Zeilen aufteilt, um einzelne Optionen leichter editieren zu können).

ebook-convert EINGABEDATEI.md AUSGABENAME.mobi \
  --authors="Armin Hanisch"  \
  --language de_DE \
  --toc-title=INHALT \
  --formatting-type=markdown \
  --level1-toc="//h:h1" \
  --level2-toc="//h:h2" \
  --level3-toc="//h:h3" \
  --title="Leitfaden zur Elternarbeit" \
  --cover=elternarbeit-cover.jpg  \
  --read-metadata-from-opf=metadata.xml

Was sind die Unterschiede? Es gibt für MOBI kein preserve-cover-aspect-ratio und die Optinen für das “Blätter-Inhaltsverzeichnis” fehlen. Das lieht daran, dass das MOBI-Format eigentlich keine zweite getrennten TOCs besitzt, sondern das Metadatenverzeichnis aus dem am Ende des Dokuments vorhandenen, automatisch erstellten “Blätter-Inhaltsverzeichnis” erstellt wird. Beim neueren Kindle-Format KF8 (Dateien mit der Erweiterung .AZW3) gibt es mittlerweile auch ein Metadaten-Inhaltsverzeichnis.

Fazit

Jetzt habe ich einen brauchbaren Workflow. Die Quelldateien liegen in einem Repository (egal, ob svn oder git, aber Sie sollten Ihre Texte versionieren, irgendwann kommt der Zeitpunkt, an dem Sie sich eingestehen, dass die Formulierungen letzte Woche doch besser waren und dann ist das ein Kommando) und das Build-Script erzeugt beide eBook-Formate mit einem Scriptaufruf. Das Script kann natürlich erweitert werden, um z.B. nach jedem Build eine Version automatisch ans Lektorat oder Testleser zu mailen, bei erfolgreichem Build das Ergebnis an einen Ordner (z.B. Dropbox) zu kopiern und so weiter. Alles, was jetzt noch fehlt, ist mehr Zeit zum Schreiben. ;-)

Fragen gerne über Mail oder im Fediverse an @Linkshaender@bildung.social

Share Kommentieren
X

Ich habe einen Kommentar zum Artikel

Sie können die Kommentarfunktion ohne die Speicherung personenbezogener Daten nutzen. Schreiben Sie Ihren Kommentar und klicken Sie auf "Abschicken", der Versand erfolgt per Mail von meinem Auftritt aus an mich zur Prüfung. Dieser Versand und die Übertragung Ihres Kommentars ist zur Erfüllung der von Ihnen mit dem Klick auf "Abschicken" ersichtlichen Absicht technisch notwendig und bedarf keiner weiteren Einwilligung.

Wichtiger Hinweis: Sie haben keinen Anspruch auf die Veröffentlichung Ihres Kommentars. Jeder hier eingegebene Kommentar wird zuerst geprüft. Ich behalte mir die Entscheidung vor, welche Kommentare ich als Ergänzung an den Artikel anfüge.