# Resumes and cover letters

# Start from Markdown

The resume and cover letter starters keep content in ordinary Markdown. Copy one into a project, edit its YAML and prose, and render it:

    liteformats::use_resume("resume.Rmd")
    liteformats::resume("resume.Rmd", "resume.html")
    liteformats::resume("resume.Rmd", "resume.pdf")

For a cover letter, use the cover letter starter and its matching renderer:

    liteformats::use_cover_letter("cover-letter.Rmd")
    liteformats::cover_letter("cover-letter.Rmd", "cover-letter.html")
    liteformats::cover_letter("cover-letter.Rmd", "cover-letter.pdf")

The PDF path uses `xfun::browser_print()` and therefore needs a local Chromium-based browser. The HTML renderer does not.

# Automate builds with Make

Calling the renderer is more explicit than clicking a Knit button, which makes it straightforward to add project-specific options and other build steps. A small `Makefile` turns those commands into a repeatable, one-command workflow:

    .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 everything, or name one target such as `make cover-letter.pdf`. Make rebuilds a target only when its `.Rmd` source has changed. The recipes can also include preprocessing, postprocessing, or any other commands needed for a specific design.

# Typography and fitting

The main controls can be set under the `liteformats` YAML key:

    liteformats:
      margins: ["0.65in", "0.8in"]
      font-family: "Charter, Georgia, serif"
      font-size: 11pt
      font-scale: 0.94
      ligatures: false
      line-height: 1.15
      paragraph-spacing: 0.05em
      section-spacing: 1em
      link-color: "#385898"

Renderer arguments override YAML. A local font family can provide regular, italic, bold, and bold-italic files. These files are embedded into the output, which keeps HTML portable and lets PDF rendering work offline.

    liteformats::resume(
      "resume.Rmd",
      font_files = c(
        regular = "fonts/MySerif-Regular.otf",
        italic = "fonts/MySerif-Italic.otf",
        bold = "fonts/MySerif-Bold.otf"
      ),
      font_scale = 0.9,
      ligatures = FALSE
    )

Alternatively, `google_font = "Source Serif 4"` adds a Google Fonts stylesheet. This option is deliberately opt-in because it requires internet access when the document is rendered. A full Google Fonts CSS URL can select explicit weights or variable-font axes; also set `font_family` to the matching family name.

Disabling ligatures prevents a common text-extraction problem, but an embedded font’s own tables can also affect PDF extraction. For ATS-sensitive documents, check the final result with a tool such as `pdftotext resume.pdf -`.

# Semantic resume entries

The starter uses fenced divisions and inline spans to align dates and locations without LaTeX:

    ::: resume-entry
    **Example Corporation** [Seattle, WA · 2022--Present](){.resume-meta}

    **Principal Data Scientist** [Evidence Systems](){.resume-meta}

    - Led a cross-functional analytical program.
    - Built reusable, documented research software.
    :::

The cover letter starter needs no layout markup. Its author, address, contact details, date, and greeting come from YAML, while the letter itself remains plain Markdown. The template keeps the letterhead and body in two columns, including in narrow browser or IDE preview panes. Use a YAML list for a multiline address, for example `address: ["123 Example Street", "Example City, EX 00000"]`; litedown’s intentionally small YAML parser does not implement block scalars.