docx2tex – Ein Werkzeug für die Konvertierung von DOCX nach LaTeX

Im schönen Stralsund durfte ich auf der DANTE-Frühjahrstagung das Tool docx2tex und die dazugehörige Bibliothek xml2tex vorstellen. Davor habe ich docx2tex als erstes transpect-Projekt nebst Bibliotheken von unserem öffentlichen SVN auf GitHub migriert. Wie üblich ist man damit auch erst so richtig fertig, wenn der Zug in den Zielbahnhof einfährt. Daher hatte ich nicht ernstlich damit gerechnet, dass Herbert Voß das Tool in der Zwischenzeit schon erfolgreich ausprobiert hatte, wie er in der freundlichen Ankündigung meines Vortrags anmerkte. Seit der ersten Vorstellung des Prototyps auf dem Demojam der XML Prague 2014 hatte sich unterdessen auch viel getan.

Mein Vortrag beschrieb zunächst ein paar Probleme, die der Einsatz von Chikriis kommerziellem Word2TeX hin und wieder bereitet. Das VBA-basierte Word-Plugin „vergisst“ gelegentlich mal ein Formelzeichen, eine Auszeichnung oder etwas Text. Die Qualität des Outputs erschien uns zudem von Version zu Version zu schwanken. Da es ansonsten keine brauchbaren Alternativen auf dem Markt gibt, entschlossen wir uns zur Entwicklung eines eigenen Konverters.

2015-04-17_dante

Da DOCX auf OfficeOpen XML basiert und der Konverter auch in automatische Workflows integriert werden sollte, bot sich dann für die Entwicklung XSLT und XProc im Gegensatz zu VBA an. Zudem muss man sich weniger Gedanken um unterschiedliche Word-Versionen machen und hat nicht das Problem, Updates auf diverse Installationen ausrollen zu müssen.

Danach habe ich den Aufruf und die Konfiguration von docx2tex vorgestellt. Glücklicherweise haben die Teilnehmer der DANTE-Tagung wenig Probleme mit kurzen Ausflügen in den Quelltext, auch wenn sich dieser mehr aus spitzen als geschweiften Klammern zusammen setzte. In Sachen Quelltext habe ich den Verlauf der XProc-Pipeline und die Konfigurationsdatei für das xml2tex-Modul vorgestellt. Die Konfiguration setzt auf dem XML-Zwischenformat Hub auf. Allerdings ist das nur ein Anwendungsfall von xml2tex. Man kann xml2tex auch für andere XML-Formate konfigurieren, beispielsweise wenn man mal eine XHTML-Webseite mit LaTeX als PDF rendern möchte. MathML und (CALS-)Tabellen werden automatisch nach LaTeX konvertiert.

To-Dos bestehen noch darin, die Unterstützung für HTML-Tabellen nachzurüsten, zusammengesetzte diakritische Unicode-Zeichen zu mappen und eine schlichtere Konfiguration zum Zwecke eines einfachen Style-Mappings zu ermöglichen. Zum Abschluß konvertierte ich für Volker RW Schaa noch eine DOCX-Datei eines Autors mit docx2tex nach LaTeX und das Ergebnis war trotz des gefährlichen Zusammenspiels von Mensch und Word-Maschine doch ganz passabel.

docx2tex kann man auf GitHub herunterladen und ausprobieren. Wer Bugs oder Featurewünsche melden möchte, kann dafür gerne den Issue Tracker des Projekts verwenden.

Kommentar schreiben