blob: 9199b48b8668ac4c44c7d83deb2ed427bd4374ea (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# 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_OPTS := --into .build --pdf $(RUBBER_XARGS) --shell-escape -I "$(LATEX_BASE)"
LATEX_PROG ?= pdflatex
LATEX = TEXINPUTS=$(LATEX_BASE) $(LATEX_PROG)
LATEX_OPTS := -interaction=nonstopmode -shell-escape -output-directory=.build/
PDF2PPTX := pdf2pptx
VERBOSE ?= @
ifeq ($(VERBOSE), @)
RUBBER_OPTS += --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_OPTS) --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_OPTS) --jobname $(@:.build/%.pdf=%) $<
%.pdf: .build/%.pdf
@echo "built $@"
$(VERBOSE)cp .build/$@ $@
%_printout.pdf: %_printout.tex %.pdf $(MAKEFILE_LIST)
.PHONY: .FORCE
.FORCE:
|