diff --git a/documentation/.gitignore b/documentation/.gitignore index c44580b088..35ead8af66 100644 --- a/documentation/.gitignore +++ b/documentation/.gitignore @@ -1,3 +1,5 @@ _build/ Pipfile.lock .vscode/ +*/svg/*.png +*/svg/*.pdf diff --git a/documentation/Makefile b/documentation/Makefile index 996f01b7d5..f015026562 100644 --- a/documentation/Makefile +++ b/documentation/Makefile @@ -6,8 +6,11 @@ SPHINXOPTS ?= -W --keep-going -j auto SPHINXBUILD ?= sphinx-build SOURCEDIR = . +IMAGEDIRS = */svg BUILDDIR = _build DESTDIR = final +SVG2PNG = inkscape +SVG2PDF = inkscape ifeq ($(shell if which $(SPHINXBUILD) >/dev/null 2>&1; then echo 1; else echo 0; fi),0) $(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed") @@ -17,7 +20,7 @@ endif help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -.PHONY: help Makefile clean publish +.PHONY: help Makefile clean publish epub latexpdf publish: Makefile html singlehtml rm -rf $(BUILDDIR)/$(DESTDIR)/ @@ -26,10 +29,30 @@ publish: Makefile html singlehtml cp $(BUILDDIR)/singlehtml/index.html $(BUILDDIR)/$(DESTDIR)/singleindex.html sed -i -e 's@index.html#@singleindex.html#@g' $(BUILDDIR)/$(DESTDIR)/singleindex.html +# Build a list of SVG files to convert to PDFs +PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(SOURCEDIR)/$(dir)/*.svg))) + +# Build a list of SVG files to convert to PNGs +PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCEDIR)/$(dir)/*.svg))) + +# Pattern rule for converting SVG to PDF +%.pdf : %.svg + $(SVG2PDF) --export-filename=$@ $< + +# Pattern rule for converting SVG to PNG +%.png : %.svg + $(SVG2PNG) --export-filename=$@ $< + clean: - @rm -rf $(BUILDDIR) + @rm -rf $(BUILDDIR) $(PNGs) $(PDFs) + +epub: $(PNGs) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +latexpdf: $(PDFs) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile +%: @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/documentation/README b/documentation/README index 1e7b4f0e65..2d9eb887b2 100644 --- a/documentation/README +++ b/documentation/README @@ -113,6 +113,10 @@ To install all required packages run: $ pip3 install sphinx sphinx_rtd_theme pyyaml +Also install the "inkscape" package from your distribution. +Inkscape is need to convert SVG graphics to PNG (for EPUB +export) and to PDF (for PDF export). + To build the documentation locally, run: $ cd documentation