Slate LaTeX Theme

Most LaTeX templates lean heavily on decoration: sidebars, profile photos, icons, colored-bands, and two-column splits. This theme keeps things clean and simple. It should be a professional document, not a brochure.

View source here: https://github.com/brycekwon/latex-slate/
View example(s) here: https://demo.brycekwon.com/latex-slate/

Requirements

Slate requires a LaTeX distribution with lualatex and latexmk installed. Some examples include TinyTex, TeX Live, and MiKTeX.

Additionally, slate also requires the tex-gyre font collection. This is preinstalled in TeX Live and MiKTeX, but can also be installed with tlmgr.

tlmgr install tex-gyre

Building

Run make init to scaffold main.tex from example.tex (or start with one of the prefilled documents in examples/), edit it, then build:

make init       # create main.tex from example.tex
make build      # build main.pdf from main.tex
make watch      # rebuild main.tex document on save
make clean      # remove build artifacts and generated PDFs

Run make (or make help) to list all targets, including make examples (build the documents in examples/) and make check / make release (validate and linearize main.pdf for distribution).

Usage

Every document loads the class and sets up a header. Use the plain class for a resume or CV, and the letter option for a cover letter:

\documentclass{slate}           % resume or CV
\documentclass[letter]{slate}   % cover letter

Options

OptionEffect
letterCover letter mode: 1in margins, prose spacing
nofontSkip loading TeX Gyre Termes/Heros/Cursor
nocolorlinksRender links in black with no border
a4paper, etc.Any standard article option is forwarded

Defaults are 12pt font, 0.5in margins, letterpaper, and no page numbers.

Headers

Two commands handle the top of every document:

\slateheader{John Doe}{(555) 123-4567, john@example.com, johndoe.dev}
\slatemeta{John Doe Resume}{John Doe}{Resume}

\slateheader prints the name and a row of contact details joined by bullets; wrap an email or website in \href to link it. \slatemeta fills in the PDF title, author, and subject, and shows nothing on the page.

Resumes and CVs

Group entries under a \section. Each entry is one layout command. The commands name a shape, not a category, so any section can use any of them:

CommandArguments
\entryheading, aside, detail
\entrylineheading, fields, aside
\entrylabellabel, content
\entrybibauthors, title, venue

\entry sets a bold heading with the aside pushed to the right margin and the detail in italic underneath. \entryline runs the heading and its fields across one line. \entrylabel is a bold label and its text. \entrybib is a hanging reference, handy for publications or talks.

\section{Experience}
\begin{entryblock}
    \entryline{Software Engineer}{Acme \sep Boston, MA}{2023 - Present}
    \begin{itemize}
        \item Cut API latency 40\% with a caching layer.
    \end{itemize}
\end{entryblock}

Inside \entryline, separate fields with \sep, the bullet from the header. Wrap entries in the entryblock environment so a heading is never stranded at the foot of a page, and add \entrygap between them for space. Any trailing argument can be left empty with {}.

Cover Letters

CommandArgument
\letterdatedate
\recipientname, title, org, location
\openingsalutation
\closingclosing phrase, name

Write the body as plain paragraphs between \opening and \closing.

Customization

Slate defines four colors in slate/slate-colors.sty, black out of the box. Redefine any of them in your preamble:

\definecolor{slatetext}{HTML}{1A1A1A}     % body text
\definecolor{slateheading}{HTML}{000000}  % name and section headings
\definecolor{slaterule}{HTML}{000000}     % rule under each section
\definecolor{slatelink}{HTML}{0066CC}     % links

A handful of hooks adjust the section heading, separator, and spacing. The defaults match the stock look, so set only what you want to change:

\renewcommand{\slatesectionfont}{\large\bfseries\color{slateheading}}
\renewcommand{\sepsymbol}{|}             % bullet between fields and links
\setlength{\slateruleweight}{0.4pt}      % section rule thickness
\setlength{\slateentrygap}{8pt}          % space added by \entrygap

In letter mode, \slatesignaturegap sets the gap left for a signature.

To swap the font, pass nofont and load your own:

\documentclass[nofont]{slate}
\usepackage{fontspec}
\setmainfont{Source Serif Pro}

To change the margins, set them after \documentclass:

\geometry{margin=0.75in}

License

This project is licensed under the MIT License.