# Build CV variants to ./build/.pdf using a dockerised XeLaTeX. # Run `make` (or `make full`) to build the full CV. Add new targets per variant. DOCKER_IMAGE := texlive/texlive:latest BUILD_DIR := build ENGINE := xelatex # Run the container with the current dir mounted. UID:GID match avoids root-owned outputs. # TEXINPUTS prepends ./tex-vendor so altacv.cls (vendored) is found. DOCKER_RUN = docker run --rm \ -u $(shell id -u):$(shell id -g) \ -v $(CURDIR):/work \ -w /work \ -e TEXINPUTS=.:./tex-vendor: \ $(DOCKER_IMAGE) .PHONY: all full short clean shell install-hooks all: full short # Activate the pre-commit hook that rebuilds every variant on commit. # Run once after cloning, or after a fresh checkout. install-hooks: git config core.hooksPath hooks @echo "Hooks path set to ./hooks -- pre-commit will rebuild all variants on .tex/.cls/Makefile changes." # Pattern rule: build/.pdf is built from .tex by running xelatex twice # (twice to settle cross-references / hyperref). $(BUILD_DIR)/%.pdf: %.tex preamble.tex $(wildcard chapters/*.tex) $(wildcard chapters/short/*.tex) | $(BUILD_DIR) $(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \ -output-directory=$(BUILD_DIR) $< $(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \ -output-directory=$(BUILD_DIR) $< $(BUILD_DIR): mkdir -p $(BUILD_DIR) full: $(BUILD_DIR)/cv-full.pdf short: $(BUILD_DIR)/cv-short.pdf # Drop into an interactive TeX-Live shell (handy for debugging). shell: docker run --rm -it -u $(shell id -u):$(shell id -g) \ -v $(CURDIR):/work -w /work $(DOCKER_IMAGE) bash clean: rm -rf $(BUILD_DIR)