Automate document builds

The rendering functions make document builds explicit and repeatable. A small Makefile can express the same commands used interactively while rebuilding an output only after its source changes:

.PHONY: all clean

all: resume.html resume.pdf cover-letter.html cover-letter.pdf

resume.html resume.pdf: resume.Rmd
	Rscript -e 'liteformats::resume("$<", "$@")'

cover-letter.html cover-letter.pdf: cover-letter.Rmd
	Rscript -e 'liteformats::cover_letter("$<", "$@")'

clean:
	$(RM) resume.html resume.pdf cover-letter.html cover-letter.pdf

Run make to build every target, or name one target such as make cover-letter.pdf. Each recipe exposes the underlying R command, so it can include project-specific options, preprocessing, postprocessing, or other dependencies.

Rendering model

Each render has two stages. First, litedown::fuse(..., "markdown") evaluates R code and YAML. Then litedown::mark() applies the format’s HTML template. This order means inline R values work in metadata as well as in the document body.

PDF uses that self-contained HTML as its input and prints it with xfun::browser_print(). As a result, the source and R dependencies are the same for HTML and PDF; PDF additionally requires a local Chromium-based browser. Vignette and automated check workflows can build HTML without adding that browser requirement.

For render time overrides, pass the matching options helper in the recipe as shown in vignette("config").