Inhaltsverzeichnis
- Einleitung
- Hugo Teil 1
- Publii
- Hugo Teil 2
- mdBook
- Hugo Teil 3
- Pandoc/Markdown (das ist dieser Artikel)
Vorbemerkung
Vielleicht in Ergänzung zur Serie mit den "Static Site Generators", also Systemen, die statische Webseiten bauen, hier noch ein Versuch mit Pandoc und Markdown. Wir benötigen - sofern nicht eh schon vorhanden - natürlich die Pakete 'markdown' und 'pandoc'.
Die Idee
Pandoc kann auch als SSG ("Static Site Generator") verwendet werden. Es liegen alle zu "beackernden" Markdown-Dateien in einem gemeinsamen Verzeichnis, und wir haben zusätzlich die folgenden Unterverzeichnisse:
- css - Hier liegt eine CSS Datei, welche die Textformatierung erledigt und eine "Menüleiste" ermöglicht.
- htm - Diese "Menüleiste" ist eine "HTML Liste", welche Pandoc in alle zu bauenden HTML Dateien einfügt.
- med - Mit diesem Verzeichnis sind "Medien" gemeint, also (anderes) HTML, Bilder, PDF, Tabellen u. s. w.
Mehrere 'Schleifen' in einem kleinen Shellskript bauen unsere Webseiten unter Verwendung von CSS, binden jeweils unsere Leiste ein und sie räumen hinterher wieder auf. Wichtig: Die gesamte Seitenstruktur liegt in der «Menüleiste» (HTML-Liste).
Das Skript
Wir definieren das Arbeitsverzeichnis, bauen – wie oben schon angedeutet – die Webseiten und räumen hinterher wieder auf.
Zur Struktur der erzeugten Seiten
Die "Struktur" der HTML Seiten besteht in der definierten "Menüleiste", und es liesse sich natürlich auch anderer Kram, der z. B. in anderen Ordnern liegt, dort einbinden.
Die fertigen Seiten
Die Homepage (index.htm), und man kann oben in der "Menüleiste" –hier ausgewählt ist "Dieses"– andere (Unter-)Seiten ansteuern.
Aufgetretene Probleme
Zumindest meine Pandoc "Inkarnation" kann nicht "beliebig" zwischen den Formaten hin- und her wandeln, und (derzeit) sieht es so aus, als würden (noch) keine Markdown-Tabellen in korrekte HTML-Tabellen übersetzt. Bei der Umwandlung in andere «Zielformate» – Textverarbeitungsformate z. B. – klappt das mit den Tabellen nämlich sehr wohl.
Eine Lösung besteht hier temporär darin, in 'med/tab/' und einem dort abgelegten Python-Skript – dort – Markdown-Tabellen in HTML umzuwandeln und diese dann – manuell – in die vom Shellskript zu beackernden «Ausgangs-Markdown-Dateien» einzufügen.
Die Tabelle sind hier im Beispiel – stark verkürzt – einige Etappen des Giro d’Italia 2019. Wie diese Tabelle dann eingefügt aussieht, kann man übrigens (teilweise) oben erkennen.
Fazit und Ausblick
Für mich 'selbst' und im reinen Desktop-Betrieb kann ich meinen eigenen Kram gut pflegen. Arbeitsgruppen, Serverbetreiber u. s. w. sind womöglich aber – potenziell – mit anderen Generatoren oder gar "richtigen" CMS "besser" aufgehoben.
Mit verfügbaren "Template Engines", die zusätzliche und separate HTML-Schnipsel in den Markdown-Code einfügen, habe ich bislang ebenfalls noch nicht experimentiert. Mit HTML an sich kommt ja Pandoc bekanntlich sehr gut klar. Selber bin ich leider kein Programmierer, aber wer Erfahrung mit Python o. Ä. hätte, kann da noch sicherlich mehr.
Quellen:
Bilder und Screenshots sind von mir, die Tabelle (Giro 2029) stammt aus Wikipedia, das Build-Skript stammt von mir, nicht aber das ursprüngliche Python-Skript zur Umwandlung von Markdown-Tabellen. Ob man – auch für den reinen «Desktop-Betrieb» – besser stets ein virtuelles Python-Environment verwendet, kann ich nicht beurteilen.
Die hier verwendete CSS-Datei hatte ich vor Jahren gebaut, und der Teil mit der "Menüleiste" stammt aus einer Vorlage, deren Herkunft ich heute leider nicht mehr nachvollziehen kann. Die 'Hauskatze' hat sich bei meinen Eltern einquartiert.
Oder, wenn man Emacs verwendet, direkt org mit org2html.