Skip to content

E-Book-Erstellung aus LaTeX und HTML

E-Book-Reader und mobile Geräte, auf denen man E-Books anzeigen lassen kann, werden immer beliebter. Der Artikel soll am Beispiel von freiesMagazin zeigen, wie man am besten aus verschiedenen Quellformaten wie LaTeX oder HTML ein E-Book im EPUB-Format erstellen kann. Dabei werden zwei Programme vorgestellt, die die Konvertierung in dieses Format gut beherrschen.

Unterschiede zwischen Buch und E-Book

Auch wenn die meisten Leser sicherlich schon einmal ein Buch aus Papier in den Händen gehalten haben, ist man sich oft der Eigenschaften, die so ein Buch mitbringt, nicht bewusst. So gibt es feste Seiten, in der Regel mit Seitenzahlen am Rand oder in den Ecken. Rand? Genau, einen Rand um den eigentlichen Textkörper gibt es auch. So kann man das Buch mit den Händen festhalten, ohne dass der Text verdeckt wird. Oder man kann Kommentare mit einem Stift an den Seitenrand schreiben. Für ältere Menschen ist dieses feste Format aber eher schlecht. Die Schriftgröße verschiedener Bücher ist oft viel zu klein, sodass man sich externer Hilfen wie Lupen bedienen muss. Diese Eigenschaften treffen natürlich nicht nur auf gedruckte Bücher zu, sondern auch teilweise auf „starre“ digitale Formate, wie z.B. das PDF.

Ein E-Book dagegen ist nicht starr. Ganz im Gegenteil kann man es sogar als „fließend“ bezeichnen. Die Schriftgröße oder auch die Schriftart lassen sich oft so einstellen, dass man ohne Probleme auch bei einer Sehschwäche lesen kann. Man kann in einem E-Book zwar auch von Seite zu Seite blättern, dabei sind die Seitenzahlen aber nicht fest. Sie richten sich danach, wie groß der Text auf einer einzelnen Seite ist. Je nach Darstellungsart hat ein Buch also bei einem Leser 100 Seiten und bei einem anderen vielleicht 150.

Ein weiterer Unterschied zwischen E-Books und Büchern ist die Möglichkeit der Verlinkung und der Suche. In der analogen Welt muss man sich mit einem Index zufrieden geben und hoffen, dass der Autor alle wichtigen Stellen indiziert hat. Ansonsten ist viel Blättern angesagt. Bei digitalen Formaten dagegen kann man vom einem Index über Links direkt an die gewünschte Stelle im Buch springen oder auch einfach den ganzen Text in Sekundenbruchteilen durchsuchen.

Für E-Books hat sich in den letzten Jahren das offene EPUB-Format als dominierend erwiesen. So gut wie alle Hersteller von E-Book-Readern verstehen dieses Format. Es gibt eigentlich nur eine unrühmliche Ausnahme: das Amazon Kindle. Amazon setzt lieber auf ein eigenes, proprietäres MOBI-Format, welches wiederum von keinem anderen Gerät verstanden wird. Auch wenn Amazon mit seinen Kindle-Geräten sehr erfolgreich ist, gehört EPUB aufgrund der breiteren Unterstützung auf dem Markt die Zukunft und soll in diesem Artikel betrachtet werden.

EPUB ist ein gepacktes Container-Format, in welchem man die XHTML-kodierte Dateien (wie bei gewöhnlichen Webseiten) findet, welche den Text und die Formatierung angeben. Daneben enthält der Container natürlich auch die anzuzeigenden Bilder sowie im EPUB3-Standard Audio- und Videoelemente. Zusätzlich kann man auch noch ein Inhaltsverzeichnis und andere Meta-Daten (wie Autoren, Herausgeber etc.) in dem Container ablegen.

freiesMagazin als PDF

freiesMagazin als PDF.

Wandlung von LaTeX

Es gibt theoretisch eine Möglichkeit, wie man von einer LaTeX-Dokument direkt zu einem EPUB kommt: Pandoc. Die Ergebnisse des Programms sind aber (zumindest, was die Konvertierung von freiesMagazin angeht) nicht sehr gut bzw. es funktioniert einfach nicht.

Ansonsten gibt es keinen direkten Weg von LaTeX zu einem EPUB. Daher muss zwingend über ein Zwischenformat gearbeitet werden. Hier böte sich PDF an, was heutzutage das „normale“ Endprodukt einer LaTeX-Übersetzung ist. Wie oben geschrieben ist PDF aber ein starres Dateiformat mit festen Seitenzahlen und Umbrüchen. Dies führt bei der Konvertierung meistens zu Problemen.

Eines der bekanntesten Programme zur Konvertierung ist Calibre. Dabei ist Calibre selbst eher ein Medienverwaltungsprogramm, welches aber zahlreiche Hilfsmittel und Skripte mitbringt. Eines davon, ebook-convert, beherrscht viele Wandlungen, unter anderem auch PDF nach EPUB. Konvertiert man freiesMagazin damit, ist das Ergebnis leider nicht sehr brauchbar. Grund dafür ist zum einen das starre Layout von PDF, welches seitenbasiert arbeitet, zum anderen macht aber auch die dreispaltige Seitenaufteilung Probleme. Calibre kommt mit solchen Dokumenten einfach nicht zurecht. Konvertiert man beispielsweise das PDF der freiesMagazin-Septemberausgabe mittels


$ ebook-convert freiesMagazin-2012-09.pdf 09-2012.epub

erhält man Sätze wie „NahezujedeZeitschriftundInternetsei-sind.Möglichisthier,z.B.offene(oderschwach übertragen–eingefundenesFressenfürAngreite, die sich mit einem PC-nahen The- verschlüsselte) WLAN-Netze oder auch unverfer.“ Wer das noch lesen kann, ist gut. Ohne eine Anpassung des Layouts geht es also nicht.

Calibre

Calibre.

Exkurs: Der Aufbau von freiesMagazin

freiesMagazin besteht wie viele andere Projekte auch, aus einer Hauptdatei, welche die verschiedenen Kapitel (d.h. Artikel) per \input einbindet. Damit jede Ausgabe gleich aussieht, gibt es zahlreiche Befehle und Layoutdefinitionen. Diese sind in mehrere Dateien aufgeteilt: befehle.tex, layout.tex und pakete.tex.

Der Dateiaufbau von freiesMagazin

Der Dateiaufbau von freiesMagazin.

Die Idee ist nun, die Dateien, welche das Layout und die Darstellung bestimmen, so umzuformen, dass diese eher wie ein Fließtext wirken. Das heißt, im Grundprinzip ersetzt man die drei obigen Dateien durch eine befehle-mobil.tex. Übersetzt man den LaTeX-Code damit, ergibt sich ein optisch nicht schönes, aber doch recht fortlaufend aussehendes Format, welches in etwa an Fließtext erinnert. Eine Wandlung des PDFs mit Calibre zeigt dann auch ein bereits lesbares EPUB, wobei das Aussehen noch etwas kränkelt und Fußzeilen und Seitenzahlen den Lesefluss immer noch unterbrechen.

Calibre geht bei der Wandlung eines PDFs wie folgt vor: Es wandelt dieses zuerst in HTML und wandelt dann die HTML-Ausgabe in ein EPUB. Durch die Benutzung von XHTML in den EPUBs, ist der letzte Schritt in der Regel sehr leicht.

Die Idee ist also ganz einfach: Man wandelt nicht das starre PDF in EPUB, sondern versucht von LaTeX zu einer HTML-Version zu kommen, die man dann in ein EPUB umwandelt.

Der Dateiaufbau von freiesMagazin für die HTML-Ausgabe.

Der Dateiaufbau von freiesMagazin für die HTML-Ausgabe.

Von LaTeX zu HTML

Im Gegensatz zur Wandlung von LaTeX nach EPUB gibt es für die Wandlung von LaTeX nach HTML zahlreiche Programme, die um die Gunst des Nutzers buhlen: TeX4ht, Hyperlatex, LaTeX2HTML, LaTeXML, Hevea, tth und das oben bereits erwähnte Pandoc.

Bis auf Hevea und tth haben alle Konverter große Probleme, überhaupt sinnvolles HTML aus dem LaTeX-Code von freiesMagazin zu machen. Bei anderen LaTeX-Dateien kann dies sicherlich anders aussehen. Diese Einschränkung hat aber dazu geführt, dass man sich 2010 bei der ersten HTML-Erstellung für tth als Konverter entschieden hat (hevea brachte damals im direkten Vergleich schlechtere Ergebnisse).

tth ist aber leider auch fern von optimal und hat zahlreiche Einschränkungen. So versteht es kein \usepackage und kann daher nur den fest eingebauten LaTeX-Sprachschatz verstehen. (Hierbei gibt es aber auch ein Workaround, nämlich die sty-Datei des gewünschten LaTeX-Paketes mit \input zu inkludieren.) Dies führt dazu, dass man an der befehle-mobil.tex zahlreiche Anpassungen vornehmen muss, ehe tth den LaTeX-Code versteht:

  • keine Kopf- oder Fußzeile
  • einspaltiges Layout
  • alle Längenberechnungen entfernen
  • keine Spalten- oder Seitenumbrüche
  • „normale“ Positionierung von Bildern
  • einige Sonderzeichen (\ ~ |) maskieren
  • kein \ifthenelse
  • keine optionalen Argumente
  • Artikelüberschriften als \chapter
  • keine Listings (Paket listings)
  • nur Standardtabellenformat
  • keine absolute Positionierung (Paket textpos)

Auch ist die HTML-Ausgabe von tth nicht ganz optimal und fern von einer W3C-Validität. Daher läuft nach der Generierung der HTML-Datei ein eigens erstelltes Skript über den HTML-Code und passt diesen so an, dass ein ordentliche HTML-Version von freiesMagazin entsteht. So werden u.a. folgende Anpassungen vorgenommen:

  • unnötige Umbrüche entfernen
  • doppelte Absatzabstände entfernen
  • maskierte Sonderzeichen zurückwandeln (siehe oben)
  • echte Anführungszeichen setzen: „…“ anstatt ,,…''
  • Tabellenlayout korrigieren (feste Breite raus, einfacher Rahmen)
  • Bildergröße mittels style="max-width:100%;" anpassen
  • Meta-Daten (Titel, Herausgeber, etc.) des Dokuments setzen

Der gesamte, automatisierte Ablauf um eine HTML-Version von freiesMagazin zu erhalten, sieht also wie folgt aus:

  1. befehle-mobil.tex in die Hauptdatei eintragen und andere Dateien entfernen
  2. LaTeX-Code gesondert aufbereiten (hauptsächlich wegen Listings)
  3. tth laufen lassen
  4. HTML-Code nachbereiten (siehe oben)

Am Ende hat man ein HTML-Dokument, welches man im nächsten Schritt nach EPUB wandeln kann.

freiesMagazin als HTML

freiesMagazin als HTML.

Wandlung von HTML

Für die Wandlung des HTML-Dokuments nach EPUB kann man, wie oben bereits erwähnt, Calibre nutzen. Durch den Konsolenbefehl ebook-convert geht die Wandlung sogar automatisiert. Leider zeigt Calibre ein paar unschöne Eigenheiten. So wird der Abstand zwischen Absätzen nicht eingehalten, das CSS der Tabellen wird ignoriert und bei jeder Überschrift beginnt automatisch eine neue Seite. Zu guter Letzt fehlen im Inhaltsverzeichnis einige Kapitel. Durch Optionen lassen sich einige dieser Unschönheiten sicherlich ausbessern, nur sollte nicht zu viel Zeit in die Einarbeitung in Calibre investiert werden.

Ein anderer Weg zur Wandlung wäre das bereits oben erwähnte Pandoc, welches als Zielformat auch EPUB beherrscht. Die Ergebnisse des Konverters sind recht gut, dennoch gibt es ähnlich wie bei Calibre einige unschöne Eigenschaften, vor allem was den Einsatz von CSS angeht, sodass auch Pandoc nicht zum gewünschten Ziel führt.

Aus dem Grund wird bei freiesMagazin das Programm Sigil eingesetzt. Dies ist ein Konvertierprogramm von HTML nach EPUB, welches sehr gute Ergebnisse erzielt. Für die automatische Verarbeitung der Daten existiert eine inoffizielle Konsolenversion. Damit diese für freiesMagazin genau das tut, was sie soll, musste Sigil im Quellcode an einigen wenigen Stellen angepasst werden. So wird die HTML-Datei nicht konvertiert, sondern die Artikel werden getrennt, sodass jeder Artikel auf einer neuen Seite anfängt, und es wird ein Inhaltsverzeichnis erstellt. Das Ergebnis der Konvertierung mittels


$ sigil ~/freiesMagazin-2012-09.html ~/freiesMagazin-2012-09.epub

erzeugt dann (im Groben) die EPUB-Datei, die auf der freiesMagazin-Webseite heruntergeladen werden kann.

Sigil

Sigil.

Aber auch hier geht es leider nicht wieder ohne Anpassungen, damit das erzeugte EPUB ordentlich aussieht. So wird vor der Konvertierung das Inhaltsverzeichnis aus der HTML-Version entfernt, da die E-Book-Reader ein eigenes Inhaltsverzeichnis haben. Daneben erhalten die Artikel bestimmte Trennmarken am Beginn, damit jeder Artikel auf einer neuen Seite beginnt (siehe oben). Und zuletzt wird noch eine spezielle Titelseite erstellt, sodass in der Vorschau der E-Book-Reader zu sehen ist, um welche Ausgabe es sich handelt.

Vom LaTeX-Code über HTML zum EPUB.

Vom LaTeX-Code über HTML zum EPUB.

Prüfung des erstellten EPUB

E-Book-Reader sind bei der Interpretation des XHTML-Inhaltes nicht ganz so großzügig wie normale Webbrowser und verhalten sich mitunter sehr unfreundlich, d.h. sie reagieren mit Abstürzen, wenn das EPUB nicht ganz der Norm entspricht. Aus diesem Grund ist es sinnvoll, das EPUB nach der Erstellung zu überprüfen.

Hierfür gibt es zwei Möglichkeiten. Wer bereits Sigil einsetzt, kann dieses benutzen, um die Validierung durchzuführen. Dafür startet man Sigil, öffnet das EPUB und wählt dann unter „File -> Validate Epub“. Im unteren Teil des Fenster sieht man dann die diversen Warnungen und Fehler, die das geöffnete EPUB enthält. Durch einen Doppelklick kann man auch an die fehlerhafte Stelle springen und diese korrigieren.

Sigil validiert auch EPUBs.

Sigil validiert auch EPUBs.

Eine zweite Möglichkeit zur EPUB-Validierung ist das freie Java-basierende Programm EpubCheck. Nach dem Entpacken ruft man das Programm im Terminal auf und übergibt als Argument das zu prüfende EPUB. Die Ausgabe sieht dann ähnlich aus wie in Sigil:


$ java -jar epubcheck-3.0b5.jar freiesMagazin-2012-09-bilder.epub
Epubcheck Version 3.0b5

Validating against EPUB version 2.0
ERROR: freiesMagazin-2012-09-bilder.epub/OEBPS/content.opf(5,18): element "dc:keywords" not allowed anywhere
ERROR: freiesMagazin-2012-09-bilder.epub/OEBPS/Text/freiesMagazin-2012-09-bilder-epub_0003.xhtml(74,51): attribute "name" not allowed here
ERROR: freiesMagazin-2012-09-bilder.epub/OEBPS/Text/freiesMagazin-2012-09-bilder-epub_0004.xhtml(165,25): attribute "compact" not allowed here
...

Fazit

Der Artikel sollte zeigen, dass der Weg zu einem eigenen EPUB, egal ob man LaTeX oder HTML als Quelle hat, vielleicht nicht immer ganz einfach ist, man aber in der Regel mit vertretbaren Aufwand auch gute Ergebnisse erzielen kann.

freiesMagazin als EPUB.

freiesMagazin als EPUB.

Trackbacks

deesaster.org am : E-Book-Vortrag online

Vorschau anzeigen
Gestern habe den Artikel zu E-Book-Erstellung aus LaTeX und HTML online gestellt und basierend darauf halte ich auf der Ubucon auch einen Vortrag zu dem Thema. Die Folien für den Vortrag habe ich eben hochgeladen. Wie auch schon beim Creative-Commons-Vort

ipad3 am : ipad3

Vorschau anzeigen
E-Book-Erstellung aus LaTeX und HTML - deesaster.org

deesaster.org am : Wenn Features verschwinden

Vorschau anzeigen
Wenn mich jemand fragt, wie er ein EPUB erstellen kann, habe ich bisher immer auf Sigil verwiesen. Das Programm befindet sich in aktiver Entwicklung und hat zahlreiche gute Funktionen. Für freiesMagazin nutzen wir Sigil, um skriptbasiert aus der HTML-Vers

deesaster.org am : Von LaTeX nach HTML und EPUB

Vorschau anzeigen
Wozu die Feiertage alles gut sind … Weil ein Leser nach den konkreten Skripten fragte, wie das mit LaTeX gesetzte freiesMagazin nach HTML und EPUB konvertiert wird, habe ich dazu eine kleine Anleitung geschrieben. Es gab ja schon einmal eine ausführliche

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

postlet am :

Wenn die EPUBs, die von den angesprochenen Konvertern erzeugt werden, eh nachbearbeitet werden müssen, dann hätte mich an dieser Stelle durchaus interessiert, wie man eine konforme EPUB komplett manuell anlegt.

Abgesehen davon aber ein sehr interessanter Artikel. Danke dafür.

Dee am :

Okay, das kam wohl nicht ganz gut heraus. Wir müssen nur Hand anlegen, weil tth kein optimales HTML erzeugt. Man sieht es auch an dem Bild „Sigil validiert auch EPUBs.“, dass da noch Arbeit notwendig ist.

Das heißt, wenn die HTML-Quelle, die man hat bereits valides HTML/XHTML ist, dann ist die Konvertierung mit Sigil (entweder auf der Konsole oder grafisch) in ein valides EPUB kein Problem mehr.

Valide sind die EPUBs eigentlich auch trotz der bemängelten Fehler. Es kann nur eben sein, dass ein E-Book-Reader sich ggf. exakt an den Standard hält und dann Elemente nicht oder falsch anzeigt (oder eben abstürzt).

postlet am :

Ah ok, danke für die Aufklärung.

Fredo am :

Danke für den Artikel!

Vor dem gleichen Problem stand ich neulich auch – ich wollte ein mit LaTeX gesetztes Buch in epub konvertieren. Dafür habe ich mir auch noch einmal ein paar LaTeX-to-HTML-Konverter angesehen.

Seid ihr mal auf plastex (http://plastex.sourceforge.net/) gestoßen? Das fand ich sehr interessant, und es hat auch ziemlich gute Ergebnisse geliefert. Es ist ein LaTeX-Parser in Python, der eine Art DOM aufbaut, und den dann in verschiedenen Formaten wie XHTML ausgeben kann. Dem kann man dann auch für die eigenen Projekte Unterstützung für Makros über Standard-LaTeX hinaus beibringen.

Dee am :

Bei mir funktioniert das leider nicht. plastex hat Probleme mit der Interpretation der KOMA-Skripte, die in Deutschland inzwischen ja eigentlich fast jeder nutzt. Fehlermeldung ist:

ERROR: Error while expanding "newcommand" in /usr/share/texmf-
texlive/tex/latex/koma-script/scrbase.sty on line 227 (pop from empty list)
ERROR: Could not load package "scrkbase": pop from empty list
ERROR: Error while expanding "newcommand" in /usr/share/texmf-
texlive/tex/latex/koma-script/scrbase.sty on line 227 (pop from empty list)
ERROR: Could not load package "scrreprt": pop from empty list
ERROR: Error while expanding "newcommand" in /usr/share/texmf-
texlive/tex/latex/koma-script/scrbase.sty on line 227 (pop from empty list)
ERROR: An error occurred while building the document object in /usr/share
/texmf-texlive/tex/latex/koma-script/scrbase.sty on line 227 (pop from
empty list)

Woran das liegt, weiß ich leider nicht. Habe eine ganze normale TeXLive-Installation.

Fredo am :

Ja, stimmt, mit KOMA gibt es leider noch Probleme. Das lässt sich aber umschiffen:

\newif\ifplastex
\plastexfalse
\ifplastex
\documentclass{book}
\else
\documentclass[a5paper,DIV=calc,smallheadings]{scrbook}
\usepackage{xltxtra,fontspec,xunicode}
\usepackage[biolinum]{libertine}
\KOMAoptions{DIV=last}
\fi

Ggf. muss man dann noch KOMA-spezifische Befehle für die HTML-Ausgabe neu definieren. Ganz ohne Handarbeit geht es hier also auch nicht. Aber dafür muss man das im Idealfall nur einmal machen, und nicht bei jeder Ausgabe wieder. Aber ich weiß natürlich auch nicht, ob Plastex bei einem so komplexen Projekt wie freiesMagazin wirklich besser funktioniert – der Ansatz schien mir aber, verglichen mit anderen Konvertern, sehr vielversprechend.

tuempl am :

sehr interessanter artikel. nur im diagramm "Vom LaTeX-Code über HTML zum EPUB." hast du im letzten grünen kästchen den falschen text.

Dee am :

Danke für den Hinweis, ich habe das Bild eben korrigiert.

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Formular-Optionen