paper-template/README.md

3.6 KiB

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/.