# vimtex and make watch write into build/ (set in .latexmkrc); make writes into build/make/, so it can run while a watch is compiling. make builds the full version into main.pdf and the conference version into main-conf.pdf. LATEXMK := latexmk FLAGS := -interaction=nonstopmode -halt-on-error -file-line-error FULL := build/make/full CONF := build/make/conf ARXIV := build/arxiv FIG_SRC := $(wildcard figures/src/*.tex) FIG_PDF := $(FIG_SRC:figures/src/%.tex=figures/build/%.pdf) FIG_DATA := $(wildcard figures/data/*) .PHONY: all full conf figures watch clean arxiv wordcount all: full conf full: figures $(LATEXMK) $(FLAGS) -outdir=$(FULL) main.tex cp $(FULL)/main.pdf main.pdf.tmp && mv main.pdf.tmp main.pdf # The conference version defines \conference before main.tex is read; the last line prints the page on which its References heading lands. conf: figures $(LATEXMK) $(FLAGS) -outdir=$(CONF) -usepretex='\def\conference{}' main.tex cp $(CONF)/main.pdf main-conf.pdf.tmp && mv main-conf.pdf.tmp main-conf.pdf @sed -n 's/^\\newlabel{references}{{[^}]*}{\([^}]*\)}.*/Conference version: References on page \1/p' $(CONF)/main.aux figures: $(FIG_PDF) # Each figure is compiled from figures/src/ into a temporary folder and moved into place, so a running watch never reads a half-written PDF. figures/build/%.pdf: figures/src/%.tex $(FIG_DATA) | figures/build @tmp=$$(mktemp -d figures/build/.tmp.XXXXXX); \ if (cd figures/src && pdflatex $(FLAGS) -output-directory=$(CURDIR)/$$tmp $*.tex > /dev/null); then \ mv $$tmp/$*.pdf $@ && rm -rf $$tmp && echo "Built $@"; \ else \ cat $$tmp/$*.log; rm -rf $$tmp; exit 1; \ fi figures/build: mkdir -p $@ watch: figures $(LATEXMK) -pvc -view=none -synctex=1 -interaction=nonstopmode -file-line-error main.tex clean: rm -rf build figures/build # The tarball holds the full version: main.tex, sections/, appendix/, macros/, bib/, the compiled figures, the .bbl and the files of venue/; context/, scratch/, ingest/, .claude/, CLAUDE.md, writing-style-guide.md, claudese.md and .mcp.json stay out. arxiv: full rm -rf $(ARXIV) && mkdir -p $(ARXIV)/figures/build cp -r main.tex sections appendix macros bib $(ARXIV)/ cp figures/build/*.pdf $(ARXIV)/figures/build/ cp $(FULL)/main.bbl $(ARXIV)/ find venue -type f ! -name .gitkeep -exec cp {} $(ARXIV)/ \; tar -czf build/arxiv.tar.gz -C $(ARXIV) . @echo "Wrote build/arxiv.tar.gz" wordcount: texcount -sum sections/*.tex appendix/*.tex