DANTE 2017 – Tag 3 – DocBook zu LaTeX
Holger Bast vom Bundesamt für Sicherheit in der Informationstechnik (BSI) und Patrick Gundlach (speedata) stellten einen Weg vor, wie man ausgehend von DocBook komplexe Dokumente in LaTeX erzeugt.
Mit LibreOffice kämpfte man beim Erstellen von technischen Dokumenten mit leeren Seiten, verrutschten Grafiken uvm. und migrierte zunächst auf LaTeX. Zu den Anforderungen gehören
- Beschreibungen
- IDs und Referenzen
- Listen
- Export in CSV-Datei
- Tabellen von Daten (Ereignissen) mit Parametern
- Komponenten-Diagramme (Lua-Scripte, PlantUML) parallel zum Compilieren erzeugt
Patrick Gundlach stellte DocBook vor. Das ist ein XML-Format mit Start-Tags und End-Tags, mit starker Trennung von Gestaltung und Inhalt. DocBook kümmert sich nur um Inhalt und logische Auszeichnung.
DocBook sagt
- welche Elemente erlaubt sind,
- wie verschachtelt wird.
Es ist
- leicht erweiterbar,
- weit verbreitet,
- jedoch komplex.
Warum DocBook?
- LaTeX kann nicht jeder
- Einfache Syntax
- Validierbar
- Gutes Ausgangsformat, das man wandeln kann (PDF, HTML, EPUB, DOCX)
- Editor-Tools verfügbar (oXygen, XMLmind)
- Barrierefrei/-arm
- Für Übergangszeit Mischbetrieb mit LaTeX möglich
Direkter Export DocBook zu PDF (XSL-FO) liefert nicht optimale Ergebnisse. dblatex kommt als Wandler zu LaTeX in Frage. Es ist schon etwas veraltet und braucht detaillierte Konfiguration. Die Programmiersprache XLST transformiert DocBook-Elemente zu LaTeX-Befehlen.
Schematisch:
DocBook -> XLST (+.tex) -> luaLaTeX -> PDF
Herausforderungen:
- Mathematik
- Escapen (\%)
- Inkompatible Tabellen
- oXygen-Schachtelungen problematisch
- DocBook-Schema ist komplex
- Programmierung nicht einfach
- CSS-Styling für oXygen nötig
Für alle Autoren ist eine standardisierte Toolchain nötig.
- Cygwin als Basis
- Java
- Saxon (XLST-Prozessor)
- ant (statt make)
- PlantUML für Diagramme
- TeX Live
- Git
- oXygen optional
- DocBook-Erweiterungen via CSS
Mangels Fähigkeit zu Barrierefreiheit wird evtl. von LaTeX zu anderen Tools gewechselt, das kann evtl. ConTeXt oder ein ganz anderes Tool werden.