% ============================================================= % Civilytics — LaTeX preamble for Quarto PDF % Usage in YAML: % format: % pdf: % include-in-header: quarto/latex/civilytics.tex % include-before-body: quarto/latex/civilytics-title.tex % Requires: xelatex or lualatex (for system fonts). % ============================================================= \usepackage{xcolor} \usepackage{fontspec} \usepackage{titlesec} \usepackage{titling} \usepackage{fancyhdr} \usepackage{enumitem} \usepackage{booktabs} \usepackage{caption} \usepackage[hidelinks]{hyperref} \usepackage{microtype} \usepackage{tcolorbox} \tcbuselibrary{skins,breakable} % --- Civilytics palette --- \definecolor{paper}{HTML}{FAF7F2} \definecolor{paper2}{HTML}{F2EDE4} \definecolor{ink}{HTML}{0E1A2B} \definecolor{ink2}{HTML}{2B3A52} \definecolor{ink3}{HTML}{5A6A82} \definecolor{rule}{HTML}{D6CEBD} \definecolor{ruleStrong}{HTML}{B8AE97} \definecolor{navy}{HTML}{22406A} \definecolor{ember}{HTML}{C25311} \definecolor{emberDark}{HTML}{923D00} \definecolor{teal}{HTML}{1F6F70} \definecolor{plum}{HTML}{6B3A5E} % --- Page color --- \pagecolor{paper} \color{ink} % --- Fonts (require local install or fontspec lookup) --- % Bold uses the family's native Bold weight (present in every Source Serif 4 % install). Do NOT hard-require a "SemiBold" face: the package installs no % system fonts for the PDF path, and standard Source Serif 4 ships only % Regular/Bold/Italic/BoldItalic. See civilyticsR issue #14. \setmainfont{Source Serif 4}[ UprightFont = *, ItalicFont = * Italic, Ligatures = TeX, ] \setsansfont{Inter}[Ligatures = TeX] \setmonofont{JetBrains Mono}[Scale = 0.92] \newfontfamily\displayfont{Libre Franklin}[Ligatures = TeX] % --- Subtitle capture --- % Quarto/pandoc defines \subtitle (which appends to \@title) but never % \thesubtitle, which the title page uses. This preamble is emitted before % pandoc's \providecommand{\subtitle}, so our definition wins: capture the % subtitle into \thesubtitle instead. See civilyticsR issue #13. \makeatletter \providecommand{\thesubtitle}{} \def\subtitle#1{\renewcommand{\thesubtitle}{#1}} \makeatother % --- Use the Civilytics title page, not pandoc's default --- % civilytics-title.tex (include-before-body) IS the title page. Quarto emits % its default \maketitle + abstract *before* include-before-body, which would % print a second, unstyled title. Neutralise both here, in the preamble % (runs at \begin{document}, before the default title). The branded title page % does not display the abstract. See civilyticsR issue #13. \AtBeginDocument{% \renewcommand{\maketitle}{}% \renewenvironment{abstract}{\setbox0=\vbox\bgroup}{\egroup}% } % --- Hyperlinks --- \hypersetup{ colorlinks = true, linkcolor = navy, urlcolor = navy, citecolor = navy, filecolor = navy, } % --- Section headings --- \titleformat{\section}[block] {\bfseries\Large\displayfont\color{ink}} {}{0pt} {\titlerule[0.4pt]\vspace{4pt}}[\vspace{-6pt}] \titleformat{\subsection}[block] {\bfseries\large\displayfont\color{ink}}{}{0pt}{} \titleformat{\subsubsection}[block] {\bfseries\normalsize\displayfont\color{ink}}{}{0pt}{} % --- Page header / footer --- \pagestyle{fancy} \fancyhf{} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} \fancyhead[L]{\sffamily\scriptsize\color{ink3}\MakeUppercase{Civilytics Consulting}} \fancyhead[R]{\sffamily\scriptsize\color{ink3}\thetitle} \fancyfoot[L]{\sffamily\scriptsize\color{ink3}civilytics.com} \fancyfoot[C]{\sffamily\scriptsize\color{ink3}\thepage} \fancyfoot[R]{\sffamily\scriptsize\color{ink3}\textcopyright\ 2026} % --- Captions --- \captionsetup{ font={sf,small,color=ink3}, labelfont={sf,bf,color=ink3}, labelsep=period, justification=raggedright, singlelinecheck=false, } % --- Pullquote --- \newtcolorbox{pullquote}{ enhanced, breakable, frame hidden, colback=paper, borderline west = {2pt}{0pt}{ember}, left=14pt, right=4pt, top=4pt, bottom=4pt, fontupper={\itshape\rmfamily\large\color{ink}}, } % --- Code blocks (Pandoc + listings or minted both inherit colors below) --- \definecolor{codebg}{HTML}{0E1A2B} \definecolor{codefg}{HTML}{FAF7F2} % --- Lists tighter --- \setlist{itemsep=2pt, topsep=4pt} % --- Tabular numerals --- \newcommand{\tnum}[1]{{\addfontfeature{Numbers={Tabular,Lining}}#1}} % --- Ember accent rule above section starts --- \newcommand{\emberrule}{{\color{ember}\rule{60pt}{3pt}}\par\vspace{4pt}}