Transforming markdown documentation to PDF

pdf

I like to write all kind of documentation in Markdown. This is however not the preferred way how some clients want to have their documentation written in: they prefer a single, big document.

For a current project, we use a nice project called Eisvogel which is a pandoc LaTeX template. Pandoc will merge all markdown files together and generate a PDF based on the eisvogel template. A simple make target generates everything:

docs:
	pandoc -s \
	$(DOCS_DIR)/introduction.md \
	$(DOCS_DIR)/system-design.md \
	$(DOCS_DIR)/installation-and-configuration.md \
	-o $(DOCS_DIR)/docs.md

	docker run --rm \
		--platform linux/amd64 \
		-v $(DOCS_DIR)/:/data \
		-w /data \
		rstropek/pandoc-latex \
		-f markdown \
		--template /data/eisvogel.tex \
		-t latex \
		-o documentation.pdf \
		--metadata-file=docs.yaml \
		docs.md

A configuration yaml file can be used to configure some behaviour:

title: Project X, Technical Documentation
date: \today
subtitle: |
  The following document provides the documentation of Project X.  
author:
  - John
keywords: [foo, bar]
papersize: a4
links-as-notes: true
toc: true
toc-depth: 2
toc-own-page: true
lang: en
titlepage: true
numbersections: true
footnotes-pretty: true

The resulting PDF file looks really good and also has syntax highlighting: