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-gyreBuilding
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 PDFsRun 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 letterOptions
| Option | Effect |
|---|---|
letter | Cover letter mode: 1in margins, prose spacing |
nofont | Skip loading TeX Gyre Termes/Heros/Cursor |
nocolorlinks | Render 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:
| Command | Arguments |
|---|---|
\entry | heading, aside, detail |
\entryline | heading, fields, aside |
\entrylabel | label, content |
\entrybib | authors, 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
| Command | Argument |
|---|---|
\letterdate | date |
\recipient | name, title, org, location |
\opening | salutation |
\closing | closing 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} % linksA 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 \entrygapIn 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.