Modular LaTeX CV: scaffolding, 13 chapters, altacv styling

Replace the monolithic ODT with a modular LaTeX source tree that becomes
the canonical full CV:

- preamble.tex: altacv color/font overrides + compact-row macros
  (\cvrow, \cvgrant, \cvtalk, \cvalum, \cvpub) so dense lists keep
  baseline-aligned dates without the tabularx misalignment the
  custom v1 had.
- cv-full.tex: driver including the 13 chapters in order.
- chapters/*.tex: header, positions, education, grants, teaching,
  examinations, service, talks, collaborators, alumni, publications,
  products (solo-founded flyRoom + Berengar), software.
- tex-vendor/altacv.cls (v1.7.4): vendored, not in TeX Live.
- Makefile: dockerised xelatex build via texlive/texlive:latest,
  with TEXINPUTS=.:./tex-vendor: so the vendored class resolves.

Output: 6-page build/cv-full.pdf (down from 10 in the first pass).
This commit is contained in:
Giorgio Gilestro 2026-05-13 15:56:51 +01:00
parent a391a85313
commit 7e30ed5b48
18 changed files with 1068 additions and 0 deletions

39
Makefile Normal file
View file

@ -0,0 +1,39 @@
# Build CV variants to ./build/<name>.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 clean shell
all: full
# Pattern rule: build/<name>.pdf is built from <name>.tex by running xelatex twice
# (twice to settle cross-references / hyperref).
$(BUILD_DIR)/%.pdf: %.tex preamble.tex $(wildcard chapters/*.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
# 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)