# The full path to the Makefile MAKEFILE_PATH = $(abspath $(lastword $(MAKEFILE_LIST))) # The path to the directory of the Makefile MAKEFILE_DIR = $(dir $(MAKEFILE_PATH)) IMGS := $(wildcard img/*) LATEX_BASE := $(MAKEFILE_DIR)latex LATEX_FMT_BASE := $(LATEX_BASE)/fmts COMMON_IMAGES := $(LATEX_BASE)/images PANDOC_DIR := $(MAKEFILE_DIR)pandoc PANDOC_FILTER_DIR := $(PANDOC_DIR)/filters PANDOC_TEMPLATE_DIR := $(PANDOC_DIR)/templates PANDOC_CITE_OPTIONS := --citeproc --csl=$(PANDOC_DIR)/din-1505-2-numeric-alphabetical.csl PANDOC_FILTER_OPTIONS := --lua-filter "$(PANDOC_FILTER_DIR)/center-img.lua" PANDOC_FILTER_OPTIONS += --lua-filter "$(PANDOC_FILTER_DIR)/include-files.lua" PANDOC_FILTER_OPTIONS += --lua-filter "$(PANDOC_FILTER_DIR)/meta-vars.lua" PANDOC_FILTER_OPTIONS += --filter pandoc-plot COMMON_PANDOC_OPTIONS := --resource-path="$(COMMON_IMAGES):." $(PANDOC_CITE_OPTIONS) $(PANDOC_FILTER_OPTIONS) PANDOC := pandoc $(COMMON_PANDOC_OPTIONS) SLIDES_OPTIONS := --slide-level 2 -t beamer SLIDES_OPTIONS += --pdf-engine-opt=--shell-escape SLIDES_OPTIONS += --metadata-file=$(PANDOC_DIR)/defaults/slides-metadata.yml SLIDES_OPTIONS += --template=$(PANDOC_TEMPLATE_DIR)/beamer.tex SLIDES_OPTIONS += --pdf-engine-opt=-fmt=$(LATEX_FMT_BASE)/slides.fmt RUBBER_XARGS ?= RUBBER_INCLUDES := -I "$(LATEX_BASE)" -I "$(COMMON_IMAGES)" RUBBER_ARGS := --into .build --pdf $(RUBBER_XARGS) --shell-escape $(RUBBER_INCLUDES) LATEX_PROG ?= pdflatex LATEX = TEXINPUTS=$(LATEX_BASE) $(LATEX_PROG) LATEX_OPTS := -interaction=nonstopmode -shell-escape -output-directory=.build/ PDF2PPTX := pdf2pptx VERBOSE ?= @ ifeq ($(VERBOSE), @) RUBBER_ARGS += --quiet SILENCE := > /dev/null endif slides.pdf: slides.md $(wildcard img/*) $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -o $@ slides_handout.pdf: slides_handout.md $(wildcard img/*) $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -M handout -o $@ slides%.pdf: slides%.md $(wildcard slides.md) $(wildcard img/*) $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -o $@ slides.pptx: slides.pdf $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PDF2PPTX) $< schedule.pdf: schedule.md $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PANDOC) --pdf-engine-opt=--fmt=$(LATEX_FMT_BASE)/schedule.fmt -f markdown $< -o $@ %.pdf: %.md $(MAKEFILE_LIST) @echo "building $@" $(VERBOSE)$(PANDOC) -f markdown $< -o $@ .PRECIOUS: .build/%.pdf .build/%.pdf: %.tex .FORCE $(MAKEFILE_LIST) @mkdir -p .build $(VERBOSE)rubber $(RUBBER_ARGS) --jobname $(@:.build/%.pdf=%) $< define generatePDFLatexExceptions .PRECIOUS: .build/$(1).pdf .build/$(1).pdf: $(1).tex .FORCE $(MAKEFILE_LIST) @mkdir -p .build $(VERBOSE)TEXINPUTS=$(LATEX_BASE): TEXFORMATS=$(LATEX_FMT_BASE): pdflatex $(LATEX_OPTS) --jobname=$(1) \&$(1) $$< $(SILENCE) endef $(foreach t, map sequence, $(eval $(call generatePDFLatexExceptions,$(t)))) .PRECIOUS: .build/lehrer_%.pdf .build/lehrer_%.pdf: %.tex .FORCE $(MAKEFILE_LIST) @mkdir -p .build $(VERBOSE)LESSON_LEHRERVERSION=true rubber $(RUBBER_ARGS) --jobname $(@:.build/%.pdf=%) $< %.pdf: .build/%.pdf @echo "built $@" $(VERBOSE)cp .build/$@ $@ %_printout.pdf: %_printout.tex %.pdf $(MAKEFILE_LIST) .PHONY: .FORCE .FORCE: