mirror of
https://github.com/prdlk/cv.git
synced 2026-08-02 17:31:41 +00:00
docs(root): Update documentation and migrate to self-contained LaTeX resume template
This commit is contained in:
@@ -4,39 +4,30 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
|
|
||||||
## What this is
|
## What this is
|
||||||
|
|
||||||
A single-page, two-asymmetric-column LaTeX resume template (Deedy-Resume, OpenFonts variant). The content lives in one `.tex` file; styling lives in one `.cls` file; publications come from a `.bib` file via BibTeX.
|
A single-page, two-column LaTeX resume. All content and styling live in one file: `source.tex`. There is no class file, no bibliography, and no bundled fonts — it is a plain `article` document.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
Must compile with **XeLaTeX**, not pdflatex — the template uses `fontspec` to load the bundled OTFs in `fonts/lato/` and `fonts/raleway/` by path. All commands must run from the repo root so those relative paths resolve.
|
Compiles with **pdflatex** (via `latexmk`). `source.tex` uses `inputenc`/`fontenc` with default Computer Modern fonts, so no XeLaTeX or external font files are needed.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make # one-shot build → dist/deedy_resume-openfont.pdf
|
make # one-shot build → dist/source.pdf
|
||||||
make watch # latexmk -pvc: rebuild + live-preview on every save (dev mode)
|
make watch # latexmk -pvc: rebuild + live-preview on every save
|
||||||
make preview # build once and open the PDF
|
make preview # build once and open the PDF
|
||||||
make clean # remove LaTeX aux files, keep the PDF
|
make clean # remove LaTeX aux files, keep the PDF
|
||||||
make distclean # remove dist/ entirely
|
make distclean # remove dist/ entirely
|
||||||
```
|
```
|
||||||
|
|
||||||
Under the hood `make` calls `latexmk -xelatex` with `-output-directory=dist`, which handles the bibtex passes for `publications.bib` automatically. There is no CI or linter — the only "test" is that the PDF compiles and stays one page (see Layout constraint below).
|
`make` runs `latexmk -pdf -output-directory=dist`. No CI, no linter — the only "test" is that it compiles and stays one page.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
- **`deedy-resume-openfont.cls`** — document class. Defines colors, font face mappings (Lato + Raleway loaded from relative `fonts/` paths via `fontspec`), and the custom commands the `.tex` file calls: `\namesection`, `\runsubsection`, `\descript`, `\location`, `\sectionsep`, and the `tightemize` environment. Edit this file for styling/typography; edit the `.tex` for content.
|
The two columns are a [`paracol`](https://ctan.org/pkg/paracol) environment, split by `\columnratio{0.3}` (left 30% / right 70%) and divided with `\switchcolumn`. The left column holds Contact / Skills / Languages; the right holds Summary / Experience / Education / Projects. Section headers are a bold label followed by a `\rule` underline; entries use `enumitem` `itemize` lists with `nosep` to keep them tight.
|
||||||
- **`deedy_resume-openfont.tex`** — content. Note the filename uses an underscore while the class file uses a hyphen — this asymmetry is intentional, don't "fix" it. The two columns are a `minipage` pair (`0.33\textwidth` left, `0.66\textwidth` right) separated by `\hfill`.
|
|
||||||
- **`publications.bib`** — entries cited via `\nocite{*}` in the Publications section.
|
|
||||||
- **`fonts/`** — bundled OTFs. The `.cls` references them by relative path, so the working directory at build time must be the repo root.
|
|
||||||
|
|
||||||
## Layout constraint
|
## Layout constraint
|
||||||
|
|
||||||
The template is **single-page by design** and silently overflows to a second page if either column gets too long (documented in README "Known Issues"). When adding content, mentally budget against the existing column length and prefer trimming over adding. The `\sectionsep` (8pt) and `tightemize` (a tightened `itemize`) exist specifically to claw back vertical space.
|
Single-page by design — it silently overflows to a second page if a column gets too long. When adding content, budget against the existing column length and prefer trimming over adding.
|
||||||
|
|
||||||
## Known quirks to leave alone
|
## Note on history
|
||||||
|
|
||||||
- `deedy_resume-openfont.tex` ends with a stray `\documentclass[]{article}` *after* `\end{document}` (line 249). It's ignored by the compiler and is a long-standing artifact of the upstream template.
|
This was forked from the Deedy-Resume template (XeLaTeX, custom `.cls`, bundled OTFs in `fonts/`). That entire stack has been removed in favor of the self-contained `source.tex`. `README.md` is still the upstream Deedy README and describes the old template, not this fork — treat it as historical, not as a description of the current setup.
|
||||||
- `\refname` is redefined twice (once in the `.cls`, once inline in the `.tex` Publications section) — the inline redefinition is a documented workaround the upstream author couldn't get working from the `.cls` alone.
|
|
||||||
- The first bullet of column two has a hand-tuned `\vspace{\topsep}` to fix awkward spacing — don't remove it without checking the rendered output.
|
|
||||||
|
|
||||||
## Upstream
|
|
||||||
|
|
||||||
Forked from https://github.com/deedydas/Deedy-Resume (Apache 2.0). The README in this repo is the upstream README and still references the upstream author's content; treat it as template documentation rather than a description of this fork.
|
|
||||||
|
|||||||
@@ -1,55 +1,42 @@
|
|||||||
# Deedy-Resume (OpenFonts) build
|
# Resume build — each variant is a src/*.tex, built to dist/*.pdf (pdflatex).
|
||||||
#
|
|
||||||
# Requires: latexmk, xelatex, bibtex (TeX Live or MacTeX).
|
|
||||||
# Run all targets from the repo root — the .cls references fonts/ by
|
|
||||||
# relative path and only resolves correctly from here.
|
|
||||||
|
|
||||||
TEX := deedy_resume-openfont.tex
|
|
||||||
NAME := $(basename $(TEX))
|
|
||||||
DIST := dist
|
DIST := dist
|
||||||
PDF := $(DIST)/$(NAME).pdf
|
VARIANTS := $(notdir $(basename $(wildcard src/*.tex)))
|
||||||
|
PDFS := $(addprefix $(DIST)/,$(addsuffix .pdf,$(VARIANTS)))
|
||||||
|
|
||||||
SOURCES := $(TEX) deedy-resume-openfont.cls publications.bib
|
LATEXMK := latexmk -pdf -interaction=nonstopmode -halt-on-error -output-directory=$(DIST)
|
||||||
|
|
||||||
LATEXMK := latexmk
|
|
||||||
LATEXMK_FLAGS := -xelatex -interaction=nonstopmode -halt-on-error -output-directory=$(DIST)
|
|
||||||
|
|
||||||
# Pick a PDF viewer: xdg-open on Linux, open on macOS.
|
|
||||||
VIEWER := $(shell command -v xdg-open 2>/dev/null || command -v open 2>/dev/null)
|
VIEWER := $(shell command -v xdg-open 2>/dev/null || command -v open 2>/dev/null)
|
||||||
|
|
||||||
.PHONY: all build watch preview clean distclean help
|
.PHONY: all build watch clean distclean help $(VARIANTS)
|
||||||
|
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
## build: compile the resume into dist/
|
## build: compile every variant in src/ into dist/
|
||||||
build: $(PDF)
|
build: $(PDFS)
|
||||||
|
|
||||||
$(PDF): $(SOURCES) | $(DIST)
|
$(DIST)/%.pdf: src/%.tex
|
||||||
$(LATEXMK) $(LATEXMK_FLAGS) $(TEX)
|
$(LATEXMK) $<
|
||||||
|
|
||||||
$(DIST):
|
# Build a single variant by name, e.g. `make react-native`
|
||||||
mkdir -p $(DIST)
|
$(VARIANTS): %: $(DIST)/%.pdf
|
||||||
|
|
||||||
## watch: rebuild + live-preview on every save (dev mode)
|
## watch: rebuild + live-preview a variant, e.g. `make watch V=react-native`
|
||||||
watch: | $(DIST)
|
watch:
|
||||||
$(LATEXMK) $(LATEXMK_FLAGS) -pvc $(TEX)
|
$(LATEXMK) -pvc src/$(V).tex
|
||||||
|
|
||||||
## preview: build once and open the PDF
|
## preview: build a variant and open it, e.g. `make preview V=react-native`
|
||||||
preview: build
|
preview: $(DIST)/$(V).pdf
|
||||||
ifeq ($(VIEWER),)
|
$(if $(VIEWER),$(VIEWER) $(DIST)/$(V).pdf,@echo "No PDF viewer found. PDF is at $(DIST)/$(V).pdf.")
|
||||||
@echo "No PDF viewer found (install xdg-open or open). PDF is at $(PDF)."
|
|
||||||
else
|
|
||||||
$(VIEWER) $(PDF)
|
|
||||||
endif
|
|
||||||
|
|
||||||
## clean: remove LaTeX aux files but keep the PDF
|
## clean: remove LaTeX aux files, keep the PDFs
|
||||||
clean:
|
clean:
|
||||||
-$(LATEXMK) -c -output-directory=$(DIST) $(TEX)
|
-$(foreach v,$(VARIANTS),latexmk -c -output-directory=$(DIST) src/$(v).tex;)
|
||||||
|
|
||||||
## distclean: remove dist/ entirely
|
## distclean: remove dist/ entirely
|
||||||
distclean:
|
distclean:
|
||||||
rm -rf $(DIST)
|
rm -rf $(DIST)
|
||||||
|
|
||||||
## help: list available targets
|
## help: list available targets and variants
|
||||||
help:
|
help:
|
||||||
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## //'
|
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## //'
|
||||||
|
@echo "variants: $(VARIANTS)"
|
||||||
|
|||||||
Reference in New Issue
Block a user