PLEASE ADJUST this template for the needs of cvxgrp.
A starter template for writing academic papers in LaTeX, with a reproducible build and automated PDF compilation on every push.
.
├── paper/
│ ├── main.tex # the paper
│ ├── make_figures.py # generates the figures (uv / PEP 723 script)
│ ├── refs/
│ │ └── references.bib # bibliography
│ └── figures/ # generated figures (PDF)
├── Makefile # build / figures / clean targets
└── .github/workflows/ # CI that builds the PDF
You need a LaTeX distribution (e.g. TeX Live or MacTeX) with pdflatex and
bibtex.
make # show the available targets
make compile # build paper/main.pdf
make clean # remove build artifacts (keeps the PDF)Figures are generated by paper/make_figures.py, a self-contained
uv script (its dependencies are pinned inline via
PEP 723, so no environment setup is needed). It writes PDFs into paper/figures/.
make figures # choose a figure interactively
make figures FIG=all # build every figure
make figures FIG=sine # build just oneAdd a figure by writing a figure_* function and registering it in the Target
enum in make_figures.py.
Two GitHub Actions workflows run automatically:
- build.yml — compiles the PDF on every push and pull request, uploads it
as a workflow artifact, attaches it to tagged releases, and (on pushes to
main) publishes it to thepdfbranch. - arxiv.yml — on pushes to
main, assembles a self-contained arXiv submission tarball (source.tex,references.bib, pre-built.bbl, and figure PDFs), verifies it compiles standalone, and publishes it to thearxivbranch.