Add make and latexmk build
This commit is contained in:
parent
11e8d469d2
commit
13d3aae6ad
37
.gitignore
vendored
Normal file
37
.gitignore
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
# LaTeX build artifacts
|
||||
*.aux
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*.fdb_latexmk
|
||||
*.fls
|
||||
*.log
|
||||
*.out
|
||||
*.run.xml
|
||||
*.synctex.gz
|
||||
*.synctex(busy)
|
||||
*.toc
|
||||
*.lof
|
||||
*.lot
|
||||
*.dvi
|
||||
*.xdv
|
||||
figures/src/*.pdf
|
||||
|
||||
# Build output
|
||||
build/
|
||||
figures/build/
|
||||
main.pdf
|
||||
main.pdf.tmp
|
||||
|
||||
# Downloads waiting to be moved to context/related-papers/
|
||||
ingest/*
|
||||
!ingest/.gitkeep
|
||||
|
||||
# Scratch output
|
||||
scratch/**/build/
|
||||
scratch/**/*.pdf
|
||||
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
4
.latexmkrc
Normal file
4
.latexmkrc
Normal file
@ -0,0 +1,4 @@
|
||||
# Settings shared by vimtex, make watch and make. vimtex and make watch write into build/; make passes -outdir=build/make, so a make run never writes the files of a running watch.
|
||||
$pdf_mode = 1;
|
||||
$out_dir = 'build';
|
||||
ensure_path('TEXINPUTS', './venue//');
|
||||
49
Makefile
Normal file
49
Makefile
Normal file
@ -0,0 +1,49 @@
|
||||
# vimtex and make watch write into build/ (set in .latexmkrc); make writes into build/make/, so it can run while a watch is compiling.
|
||||
|
||||
LATEXMK := latexmk
|
||||
FLAGS := -interaction=nonstopmode -halt-on-error -file-line-error
|
||||
BUILD := build/make
|
||||
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 figures watch clean arxiv wordcount
|
||||
|
||||
all: figures
|
||||
$(LATEXMK) $(FLAGS) -outdir=$(BUILD) main.tex
|
||||
cp $(BUILD)/main.pdf main.pdf.tmp && mv main.pdf.tmp main.pdf
|
||||
|
||||
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 takes 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: all
|
||||
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 $(BUILD)/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
|
||||
Loading…
Reference in New Issue
Block a user