paper-template/README.md

20 lines
3.6 KiB
Markdown

# Paper template
This repository is a template for an academic paper in LaTeX, written with Claude Code as an assistant. It compiles as it is and contains placeholder content.
## Layout
`main.tex` uses the article class; a marked block at its top switches it to a venue class, whose files go in `venue/`. It loads the macros in `macros/` and inputs the sections in `sections/` and the proofs in `appendix/`. Every symbol of the paper is a macro in `macros/notation.tex`, listed with its meaning in `context/notation.md`. Figures are standalone TikZ files in `figures/src/` that read their data from `figures/data/`, and the paper includes their compiled PDFs from `figures/build/`. The references are in `bib/dblp.bib` and `bib/refs.bib`, processed by biblatex with biber.
`context/` contains the material Claude Code works from: the outline with the claims of the paper and the goal of each section, the notation table, and referee reviews, which Claude Code does not edit; and the related papers, which Claude Code downloads into `context/related-papers/` as `<year>-<first-author-surname>-<title-slug>.pdf`, each with a `.md` file of notes. When a download is blocked, you save the file from Firefox into `ingest/`, and Claude Code moves it to `context/related-papers/`. `scratch/` contains explorations, one dated folder each, indexed in `scratch/README.md`. `.claude/` contains the permissions of Claude Code and the commands `/review-section`, `/check-notation`, `/tighten-prose` and `/new-scratch`. `CLAUDE.md` contains the rules Claude Code follows and imports two files: `writing-style-guide.md`, the style guide, and `claudese.md`, the list of banned words and phrases. `.mcp.json` registers the dblp MCP server.
Entries from dblp, through the dblp MCP server or `dblp-cli bibtex <key>`, go in `bib/dblp.bib` and may be added at any time. A reference not in dblp goes in `bib/refs.bib`, with the BibTeX doi.org returns for its DOI.
## Full and conference versions
The full version is the text, and the conference version is built from the same sources. Text of the full version only is hidden in the conference version, and a passage that differs as a whole, such as the abstract, is swapped; `macros/version.tex` defines the commands for both. Each proof is written once, in its own file in `appendix/`: the full version reads it in the body after its theorem, and the conference version restates the theorem in the appendix and reads the proof there. In the class block at the top of `main.tex`, each version can use its own class.
## Building
`make` compiles the figures, then the full version with latexmk into `build/make/full/` and the conference version into `build/make/conf/`, copies their PDFs to `main.pdf` and `main-conf.pdf`, and prints the page on which the References heading of the conference version lands. `make full` and `make conf` build one version each. `make figures` compiles each `figures/src/*.tex` into `figures/build/`, and recompiles a figure when its source or a file in `figures/data/` has changed. `make watch` runs latexmk in continuous mode on the full version into `build/`, the folder vimtex also uses through `.latexmkrc`; since `make` writes into `build/make/`, it can run while vimtex or `make watch` is compiling. `make clean` removes `build/` and `figures/build/`. `make arxiv` writes `build/arxiv.tar.gz` with the sources, the compiled figures and the `.bbl` file of the full version, without `context/`, `scratch/`, `ingest/`, `.claude/`, `CLAUDE.md`, `writing-style-guide.md`, `claudese.md` and `.mcp.json`. `make wordcount` runs texcount over `sections/` and `appendix/`.