A one-page LaTeX resume with a matching cover letter.
-
Download or clone this repository.
-
Open
resume.tex. Fill in your contact details at the top, then replace the example text in each section. -
From the repository folder, run:
make build
-
Open
build/resume.pdf.
You need a LaTeX installation with pdflatex and latexmk, plus make. The spacing helper and page check also need Python 3; no Python packages are required.
Prefer a browser editor? Upload the .tex files to an Overleaf project, set resume.tex as the main document, and use pdfLaTeX. The shell helpers are for local use.
| Command | What it does |
|---|---|
make build |
Build the resume PDF. |
make watch |
Rebuild when you save. Press Ctrl+C to stop. |
make fit |
Update line spacing to fit one page and build the PDF. |
make check |
Build and check that the resume is one page. |
make cover-letter |
Build the example cover letter. |
make clean |
Remove the generated build/ folder. |
make |
Show the available commands. |
All generated PDFs go in build/.
Escape special characters in ordinary text: write \&, \%, \_, and \#. Use \company{...} for organization names and \datefont for dates. Inside onecolentry, use \linewidth when sizing tables.
If the resume spills onto a second page, shorten the content or run make fit. The helper tries spacing from 0.70 to 1.20 and leaves your source unchanged if compilation fails or the content cannot fit. Review the PDF afterward for readability. You can also edit \resumeLineSpread yourself.
The older ./auto_linespread.sh command still works; --watch refits after each save. For ordinary editing, use make watch, which leaves your source alone.
Copy cv/example_cover_letter.tex, replace the sample text, and build your copy:
cp cv/example_cover_letter.tex cv/company_cover_letter.tex
latexmk -pdf -interaction=nonstopmode -halt-on-error -outdir=build cv/company_cover_letter.texThe result is build/company_cover_letter.pdf.
Run ./setup.sh to install a local pre-commit hook. It checks that resume changes build to one page without editing or staging files. It preserves existing hooks and asks you to stage or stash partial edits before checking.
- Command not found: check that your LaTeX tools,
make, and Python 3 are installed and on yourPATH. - Missing
.styfile: install the named package through your LaTeX distribution's package manager. This template uses packages includingparacol,fontawesome5,lmodern, andmicrotype. - LaTeX error: look for the first line starting with
!inbuild/resume.log. Check recent edits for unescaped special characters or unmatched braces. - No
makeavailable: runlatexmk -pdf -interaction=nonstopmode -halt-on-error -outdir=build resume.texdirectly.
To test the spacing helper, run python3 -m unittest discover -s tests. The tests need pdfLaTeX and the template's LaTeX packages.