define pages $(if $(TITLE),title.txt break) way-to-be-great.txt space lost-pen.txt space authenticated-counterfeit.txt break argument.txt space why.txt space con-job.txt break introduction.txt space introjoke.txt break human-communication.txt break $(if $(TITLE),break break break) endef pages := $(pages:=) define pages $(if $(TITLE),title.txt break) way-to-be-great.txt space lost-pen.txt break authenticated-counterfeit.txt space argument.txt break introduction.txt space break $(if $(TITLE),break break break) endef pages := $(pages:=) output_name = poetrybook pdf_viewer = evince .DEFAULT_GOAL = view output_txt = $(output_name).txt output_pdf = $(output_name).pdf SIDES = two-sided-short-edge LP = lp LP += $(if $(SIDES), -o sides=$(SIDES)) LPDF = lpdf NUMBER_UP = 2 LEFT_MARGIN = 100 TOP_MARGIN = 20 MARGIN_ARGS = left=$(LEFT_MARGIN) top=$(TOP_MARGIN) SCALING = none LPDF += $(if $(PAGES), -P $(PAGES)) LPDF += $(addprefix -o page-, $(MARGIN_ARGS)) LPDF += $(if $(SCALING),-o print-scaling=$(SCALING)) LPDF += $(if $(NUMBER_UP),-o number-up=$(NUMBER_UP)) LPDF += $(if $(SIDES),-o sides=$(SIDES)) define concatenate_with_terminator @($(foreach f,$(+), cat < $(f) && printf $(1);)) > $@.tmp @$(done) endef newprint: NUMBER_UP=1 newprint: SIDES= dirs = build $(dirs): @mkdir -p $@ done = mv -T -- $@.tmp $@ .INTERMEDIATE: build/$(output_txt) build/break: | build printf \\f > $@ build/space: | build printf \\n\\n\\n > $@ build/$(output_txt): $(addprefix build/,$(pages)) | build cat $+ > $@.tmp $(done) %.pdf: %.txt $(LPDF) $< > $@.tmp $(done) %.ps: %.pdf pdf2ps -dLanguageLevel=3 $< $@ build/%: % | build cp --reflink -T -- $< $@ clean: -rm -rf build .PHONY: view print viewall printall realview realprint booklet pages booklet: clean build/booklet.pdf -$(pdf_viewer) $(word 2, $+) & pages: clean build/pages.ps -$(pdf_viewer) $(word 2, $+) & newprint: clean newrealprint newrealprint: NUMBER_UP=1 newrealprint: SIDES= newrealprint: build/pages.pdf -$(pdf_viewer) $< & %.pdf: %.ps ps2pdf $< $@ build/pages.ps: NUMBER_UP=1 build/pages.ps: SIDES= build/pages.ps: build/$(output_pdf:pdf=ps) @cp -T -- $^ $@ build/booklet.ps: build/pages.ps psbook $< $@.tmp psnup -2 $@.tmp $@ @rm $@.tmp view: clean realview print: clean realprint realview: build/pages.pdf -$(pdf_viewer) $< & realprint: build/booklet.ps $(LP) $^ .PHONY: install install: apt install --no-upgrade printer-driver-cups-pdf evince ghostscript