
mdfusion
Ein Python-Modul zum Mergen und Exportieren von Markdown-Dateien. Verfügbar für pip.
Wenn ich für Prüfungen lerne, sammeln sich oft viele Markdown-Dateien in einer Ordnerhierarchie an. Zum Wiederholen der Inhalte ist es dann praktisch, diese Dateien in einem gut lesbaren Format in einer einzigen Datei zusammenzuführen.
Als ich nach einem Tool gesucht habe, das genau das macht, habe ich nichts gefunden, was in einem Schritt die Dateien zusammenführt und in eine PDF- oder HTML-Datei exportiert. Also habe ich ein kleines Python-Modul geschrieben, das genau das mithilfe von Pandoc macht. Da vielleicht auch andere Leute einen Nutzen dafür haben könnten, habe ich mich entschieden, es auf GitHub und PyPI zu veröffentlichen.
Darüber hinaus habe ich eine Funktion zum Exportieren der zusammengeführten Markdown-Datei in eine Powerpoint-ähnliche Präsentation hinzugefügt. Dafür nutze ich die native Unterstützung von Pandoc für das reveal.js-Framework. Die Präsentation kann dann in einem Webbrowser angesehen oder mit der Python-Bibliothek Playwright in eine PDF-Datei exportiert werden. Das fand ich praktisch, falls ich mal sehr schnell eine Präsentation vorbereiten muss.
Der Code ist auf GitHub verfügbar und auf PyPI zu finden.
Auch wenn es sich um ein kleines Projekt handelt, manage ich es in einem git-Repository mit
Merge all Markdown files in a directory tree into a single PDF or HTML presentation with formatting via Pandoc + XeLaTeX.
.md files under a directory (natural sort order)You must have the following on your PATH:
For HTML presentations and PDF export from HTML, you may also want to install:
pip install playwright and then playwright installpip install mdfusion
git clone https://github.com/ejuet/mdfusion.git
cd mdfusion
pip install .
mdfusion ROOT_DIR [OPTIONS]
-o, --output FILE Output filename (default: <root_dir>.pdf or .html for presentations)--no-toc Omit table of contents--title-page Include a title page (PDF only)--title TITLE Set title for title page (default: directory name)--author AUTHOR Set author for title page (default: OS user)--pandoc-args ARGS Extra Pandoc arguments (whitespace-separated)-c, --config FILE Path to a mdfusion.toml config file (default: mdfusion.toml in the current directory)--presentation Output as a reveal.js HTML presentation (not PDF)--footer-text TEXT Custom footer for presentationsmdfusion --title-page --title "My Book" --author "Jane Doe" docs/
mdfusion --presentation --title "My Talk" --author "Speaker" --footer-text "My Conference 2025" slides/
You can create a mdfusion.toml file in your project directory to avoid long command lines. The [mdfusion] section supports all the same options as the CLI.
[mdfusion]
root_dir = "docs"
output = "my-book.pdf"
no_toc = false
title_page = true
title = "My Book"
author = "Jane Doe"
pandoc_args = ["--number-sections", "--slide-level", "2"]
# header_tex = "header.tex" # Optional: custom LaTeX header
[mdfusion]
root_dir = "slides"
output = "my-presentation.html"
title = "My Talk"
author = "Speaker"
presentation = true
footer_text = "My Conference 2025"
pandoc_args = ["--slide-level", "6", "--number-sections", "-V", "transition=fade", "-c", "custom.css"]
# You can add more reveal.js or pandoc options as needed with ["-V", "option=value"]
Then just run:
mdfusion
Run all tests with:
pytest
Noch Fragen?