Login
Newsletter
Werbung

Do, 6. August 2015, 15:00

Mit LaTeX zum E-Book

Pandoc

Pandoc wurde bereits erwähnt, als es um die Konvertierung von HTML nach EPUB ging. Da hierbei aber wichtige Textformatierungen und Elemente wie Tabellen nicht übernommen wurden, stellt sich die Frage, nach einer direkten Konvertierung von LaTeX nach HTML mit Pandoc.

Pandoc von John MacFarlane ist Open Source und steht für BSD, Linux, Mac OS X und Windows zur Verfügung. Die getestete Version ist 1.13.2 vom 20. Dezember 2014. Die Benutzung nach der Installation ist prinzipiell recht einfach:

$ pandoc --toc -R -s -o beispiel.html beispiel.tex

Die Option --toc erstellt dabei ein Inhaltsverzeichnis, was normalerweise fehlen würde. -s erzeugt eine Standalone-Ausgabe, sodass eine valide HTML-Seite erzeugt wird. Zuletzt ist die Option -R wichtig, weil damit auch durch für Pandoc unverständliche LaTeX-Kommandos gegangen wird. Seltsamerweise führt das dennoch dazu, dass einige Elemente nicht ausgegeben werden.

Der erste Versuch scheitert aber mit der Meldung:

pandoc:
Error at "input" (line 191, column 1):
unexpected '\n'
Die folgende Aufzählung soll mit römischen Ziffern beginnen. Dies geht aber
^

Leider deutet der Fehler nicht auf das echte Problem hin. Problematisch sind nämlich die KOMA-Beschreibungslisten mittels labeling. Kommentiert man diese aus, gibt es aber weitere Problem mit der Definition eigener Kommandos. So bringt bei \newenvironment die eingebettete Liste mit itemize sowie die benutzte enumerate-Aufzählung in einem Kommando Pandoc durcheinander und bricht den Konvertiervorgang ab. Behebt man diese drei Stellen durch Auskommentieren, lässt sich das LaTeX-Dokument nach HTML übersetzen.

Das Ergebnis ist leider nicht sehr befriedigend, was vor allem daran liegt, dass Pandoc kein \newcommand* und kein \newenvironment versteht. Und alle unbekannten Makros und Umgebungen hinterlassen mit Pandoc eine Lücke im HTML-Text, d.h. dass keinerlei Inhalt ausgegeben wird. Das normale \newcommand ohne Stern wird verstanden, aber es gibt bei manchen Definitionen Probleme, wie man oben gesehen hat. Wenn man in der Datei befehle.tex, in der die Befehle für das Beispieldokument stehen, die Sternchen entfernt und zusätzlich die center-Umgebung bei der Bildeinbindung auskommentiert, wird wesentlich mehr dargestellt.

Wandlung in HTML

Dennoch ist das resultierende HTML-Dokument nicht sauber konvertiert. Bei den Schriftformatierungen werden \textsf und \underline komplett ignoriert. Dafür werden die Kapitälchen korrekt dargestellt. Die Familien \ttfamily und \sffamily werden ebenfalls ignoriert. Ebenfalls ungewohnt ist, dass alle Schriftgrößen nicht interpretiert werden.

Serifenloser und unterstrichener Text fehlen

Dominik Wagenführ

Serifenloser und unterstrichener Text fehlen

Schön ist dagegen, dass neben Verbatim auch lstlisting verstanden wird.

Textausrichtungen werden auch nicht erkannt, ebenso wie Verweise mit \label und \ref, was die Verlinkung und Referenzierung innerhalb eines Dokuments hinfällig macht.

Auch die Unterstützung von Tabellen ist nur rudimentär vorhanden, da Tabellenlinien gar nicht gedruckt werden. \multicolumn wird ebensowenig erkannt wie die Definition mehrfacher Spalten oder eigene Definitionen. Auch longtable ist unbekannt. Die tabular-Umgebung wird erkannt, die Tabellenunterschrift steht aber über der Tabelle, was etwas ungewohnt aussieht.

Im Gegensatz tabular wird figure zwar auch unterstützt, nur fehlt die Bildunterschrift völlig. Immerhin werden die Bilder angezeigt. PNG und JPG ist dabei kein Problem. PDF und EPS werden per embed src ins HTML eingebunden, was nur funktioniert, wenn entsprechende Plugins für diese Formate installiert sind.

Zu den weiteren nicht unterstützen Elementen gehören Farben, Zähler und jede Art von Verzeichnis (das Inhaltsverzeichnis ausgenommen). Ohne Quellverzeichnis sind somit auch keine Quellenangaben möglich. Okay sind dagegen die Fußnoten, die auch mit Backlink am Dokumentende eingefügt werden.

Tabellen werden rudimentär unterstützt, Linien werden nicht angezeigt

Dominik Wagenführ

Tabellen werden rudimentär unterstützt, Linien werden nicht angezeigt

Mathematische Formeln werden in LaTeX-Syntax dargestellt

Dominik Wagenführ

Mathematische Formeln werden in LaTeX-Syntax dargestellt

Zum Schluss soll noch einen Blick auf die mathematischen Formeln geworfen werden. Pandoc hat hierfür Unterstützung für MathML, jsMath, MathJax, KaTeX und mehr. Leider werden diese alle nicht von EPUB unterstützt. Viel versprechend schien die Konvertierung mittels des Extraprogramms gladTeX, was aber leider bei dem Beispieldokument direkt bei der ersten Formel mit einem Fehler abbrach. Insofern bleibt nur die normale Mathe-Interpration als Reintext. Pandoc wählt hierfür eine Mischung aus der Darstellung des LaTeX-Codes und korrekter Interpretation mit Sonderzeichen. Das letztere wird dann genutzt, wenn es sich um simple Formeln mit Hoch- und Tiefstellen bzw. griechischen Buchstaben handelt. Als einzige Umgebung wird equation (diesmal auch mit Stern) korrekt verstanden.

Wandlung in EPUB

Bei der Wandlung in ein EPUB geht die Auszeichnung als Kapitälchen mit \textsc und \scshape verloren, die im HTML noch zu sehen waren. Bei den Bildern ergibt sich die logische Konsequenz, dass PDF und EPS nicht angezeigt werden, da das embed-Tag im EPUB nicht unterstützt wird.

Die mathematischen Formeln werden zu einem Großteil korrekt im EPUB angezeigt, bis auf die Stellen, wo unbekannte Unicode-Zeichen benutzt werden, z.B. das »für alle« oder »es existiert«.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung