Login
Newsletter
Werbung

Do, 6. August 2015, 15:00

Mit LaTeX zum E-Book

Hevea

Hevea wird von Luc Maranget von Inria erstellt und liegt aktuell in Version 2.23 vom 8. März 2015 vor. Hevea ist Open Source und wurde mit Objective Caml programmiert, was die Übersetzung des Quellcodes auf manchen Plattformen eventuell etwas erschwert. Auf einem aktuellen Linux-System ist das aber kein Problem, solange man Objective Caml 3.12 oder neuer installiert hat. Versucht man das Beispieldokument mit Hevea zu übersetzen, erhält man

$ hevea beispiel.tex
./beispiel.tex:4: Warning: Cannot open file: scrartcl.hva
./beispiel.tex:4: Giving up command: \documentclass
./beispiel.tex:4: Error while reading LaTeX:
    No base style
Adios

Hevea kann Dokumentklassen und auch Pakete nicht einfach laden, sondern kennt nur einige ausgewählte, die als style.hva mitgeliefert werden, wobei style einer Dokumentklasse (z.B. scrartcl) oder einem Paket entspricht.

Man kann aber manuell die article-Dokumentklasse bei der Konvertierung mit angeben, was dann aber etwas später mit einem Fehler abbricht:

$ hevea article.hva beispiel.tex
...
./beispiel.tex:446: Giving up command: \end@tabular
./beispiel.tex:446: Giving up command: \endtabular
./beispiel.tex:446: Giving up command: \end
./beispiel.tex:446: Error while reading LaTeX:
    This array/tabular column has no specification
Adios

Grund hierfür ist die Tabelle mit dem selbst definierten Spaltentyp (\begin{tabular}{C{3.5cm}<{\centering}p{3.5cm} }), die auskommentiert werden muss. Es gibt dann noch viele Warnungen, aber zumindest übersetzt Hevea das Dokument dann.

Nachdem Hevea gelaufen ist (gegebenenfalls zweimal, damit das Inhaltsverzeichnis korrekt erstellt wird), müssen die Bilder noch manuell extrahiert werden:

$ imagen beispiel

Das wiederum führt erneut zu einem Abbruch:

! LaTeX Error: Command \@ already defined.
               Or name \end... illegal, see p.192 of the manual.

l.30 ...nd{\@KommandoMitAtZeichen}{Ich bin ein @.}

was seltsam ist, weil das Dokument selbst korrekt mit latex und pdflatex übersetzt. Es scheint so, als würden die Befehle \makeatletter und \makeatother nicht übersetzt werden, weswegen man diese Passage im Beispieldokument ebenfalls auskommentieren sollte.

Danach gibt es noch ein Problem mit Ghostscript:

Operand stack:
   3   0
Execution stack:
   \%interp\_exit   .runexec2   -{}-nostringval-{}-   -{}-nostringval-{}-   -{}-nostringval-{}-   2   \%stopped\_push   -{}-nostringval-{}-   -{}-nostringval-{}-   -{}-nostringval-{}-   false   1   \%stopped\_push   1920   1   3   \%oparray\_pop   1919   1   3   \%oparray\_pop   1903   1   3   \%oparray\_pop   1787   1   3   \%oparray\_pop   -{}-nostringval-{}-   \%errorexec\_pop   .runexec2   -{}-nostringval-{}-   -{}-nostringval-{}-   -{}-nostringval-{}-   2   \%stopped\_push   -{}-nostringval-{}-
Dictionary stack:
   -{}-dict:1180/1684(ro)(G)-{}-   -{}-dict:0/20(G)-{}-   -{}-dict:80/200(L)-{}-   -{}-dict:188/300(L)-{}-   -{}-dict:62/200(L)-{}-
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.10: Unrecoverable error, exit code 1

Effektiv muss man alle Bilder auskommentieren bis auf das EPS, welches korrekt von Ghostscript konvertiert werden kann. Dieses Problem ist ggf. keines von Hevea, sondern von der installierten Ghostscript-Version auf dem Testrechner.

Wandlung in HTML

Nachdem man das LaTeX-Dokument also angepasst hat, konvertiert Hevea dieses in eine HTML-Ausgabe. Die Standardformatierungen und Textgrößen werden verstanden, ebenso wie Verbatim und sogar lstlisting mit korrekten Rahmen.

lstlisting wird korrekt interpretiert

Dominik Wagenführ

lstlisting wird korrekt interpretiert

Tabellen sehen ganz gut aus, auch wenn die Linien nicht exakt mit LaTeX übereinstimmen

Dominik Wagenführ

Tabellen sehen ganz gut aus, auch wenn die Linien nicht exakt mit LaTeX übereinstimmen

Formeln werden als Text mit Sonderzeichen dargestellt

Dominik Wagenführ

Formeln werden als Text mit Sonderzeichen dargestellt

\noindent wird zwar verstanden, aber scheinbar befindet sich in dem Makro etwas, was Hevea nicht gefällt. Hierbei gilt, dass Hevea bei unbekannten Makros einfach nur den Inhalt anzeigt, der als Argument übergeben wurde. So führt ein \noindent zu der Ausgabe 1ex im Dokument.

Verweise mit \label und \ref funktionieren, nur \pageref wird inkorrekt mit zwei Fragezeichen ausgegeben. Dafür werden auch \href und \url unterstützt. Die Tabellen werden größtenteils korrekt erkannt und sehen mit den einfachen Linien gut aus. Einzig \multirow funktioniert nicht und bei der Angaben über p{…} werden die Breitenverhältnisse nicht eingehalten.

Mathematische Formeln kann man mit MathML darstellen, was für das E-Book wie bereits erwähnt nicht sinnvoll ist. Deswegen wird die standardmäßig eingestellte Formatierung als Reintext bevorzugt. Es wird versucht, mit diversen Sonderzeichen eine gute Darstellung zu erreichen, was auch mehr oder weniger gelingt.

Eigene LaTeX-Befehle und -Umgebungen werden erkannt (bis auf das oben erwähnte Problem mit dem @ im Befehlsnamen). Bei Bildern besteht das erwähnte Problem, dass imagen nur das EPS korrekt konvertieren kann. Auch Zähler, Fußnoten und Farben funktionieren.

Was nicht geht, sind Literaturverweise. Die BibTeX-Bibliography wird zwar erkannt und am Ende des Dokuments als »References« angezeigt, aber Zitate laufen ins Leere. Der Index (Stichwortverzeichnis) wird korrekt angezeigt und verlinkt, Abbildungs- und Tabellenverzeichnis fehlen dagegen komplett. Auch das Inhaltsverzeichnis besteht nur aus der Angabe der beiden Part-Angaben.

Wandlung in EPUB

Da das Inhaltsverzeichnis bereits im HTML fehlt, wird es auch im EPUB nicht korrekt angezeigt. Das heißt, das EPUB-eigene Inhaltsverzeichnis enthält zwar zu einem Teil die Abschnittsnummerierung, aber keine Abschnittstitel. Eine ordentliche Navigation ist im EPUB so nahezu unmöglich.

Das EPUB-Inhaltsverzeichnis wird nicht korrekt erstellt

Dominik Wagenführ

Das EPUB-Inhaltsverzeichnis wird nicht korrekt erstellt

Die Beispielformel sieht im Fließtext noch gut aus, abgesetzt ist sie nicht mehr komplett lesbar

Dominik Wagenführ

Die Beispielformel sieht im Fließtext noch gut aus, abgesetzt ist sie nicht mehr komplett lesbar

Die anderen Elemente im Dokument werden wie im HTML dargestellt – bis auf die mathematischen Formeln. Im Fließtext sehen diese noch gut aus, abgesetzt werden die Bruchstriche aber enorm gestreckt, sodass nur ein kleiner Teil der Formel sichtbar ist. Auch im Querformat mit kleiner Schriftgröße ist dies nicht besser. Daneben fehlt bei den Unicode-Zeichen (hier bei den Klammern) die Darstellung, wie das auch schon bei anderen Umsetzungen mit Unicode der Fall war.

Zum Schluss geht bei den Kapitälchen die Formatierung verloren, sodass diese als normaler Text dargestellt werden.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung