Obsidian/Writing/CV/dane_cv.cls
Dane Sabo e332a46f01 Auto sync: 2025-10-10 16:47:01 (20 files changed)
A  Writing/CV/cv.aux

A  Writing/CV/cv.fdb_latexmk

A  Writing/CV/cv.fls

A  Writing/CV/cv.log

A  Writing/CV/cv.pdf

A  Writing/CV/cv.synctex.gz

A  Writing/CV/cv.tex

A  Writing/CV/dane_cv.cls
2025-10-10 16:47:01 -04:00

195 lines
3.9 KiB
TeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{dane_cv}[2025/10/10 Dane's CV Class]
% Base class
\LoadClass[10pt, letterpaper]{article}
% Packages
\RequirePackage[
ignoreheadfoot,
top=2cm,
bottom=2cm,
left=2cm,
right=2cm,
footskip=1.0cm,
]{geometry}
\RequirePackage[explicit]{titlesec}
\RequirePackage{tabularx}
\RequirePackage{array}
\RequirePackage[dvipsnames]{xcolor}
\RequirePackage{enumitem}
\RequirePackage{fontawesome5}
\RequirePackage{amsmath}
\RequirePackage[
pdftitle={Dane Sabo's CV},
pdfauthor={Dane Sabo},
pdfcreator={LaTeX},
colorlinks=true,
urlcolor=primaryColor
]{hyperref}
\RequirePackage[pscoord]{eso-pic}
\RequirePackage{calc}
\RequirePackage{bookmark}
\RequirePackage{lastpage}
\RequirePackage{changepage}
\RequirePackage{paracol}
\RequirePackage{ifthen}
\RequirePackage{needspace}
\RequirePackage{iftex}
% Ensure PDF is machine readable/ATS parsable
\ifPDFTeX
\input{glyphtounicode}
\pdfgentounicode=1
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage{lmodern}
\fi
\RequirePackage[default, type1]{sourcesanspro}
% Color definitions
\definecolor{primaryColor}{RGB}{0, 79, 144}
% Settings
\AtBeginEnvironment{adjustwidth}{\partopsep0pt}
\pagestyle{empty}
\setcounter{secnumdepth}{0}
\setlength{\parindent}{0pt}
\setlength{\topskip}{0pt}
\setlength{\columnsep}{0.15cm}
% Footer style
\makeatletter
\let\ps@customFooterStyle\ps@plain
\patchcmd{\ps@customFooterStyle}{\thepage}{
\color{gray}\textit{\small Dane Sabo - Page \thepage{} of \pageref*{LastPage}}
}{}{}
\makeatother
\pagestyle{customFooterStyle}
% Section formatting
\titleformat{\section}{
\needspace{4\baselineskip}
\Large\color{primaryColor}
}{
}{
}{
\textbf{#1}\hspace{0.15cm}\titlerule[0.8pt]\hspace{-0.1cm}
}[]
\titlespacing{\section}{
-1pt
}{
0.3cm
}{
0.2cm
}
% Subsection formatting
\titleformat{\subsection}{
\large\color{primaryColor}
}{
}{
}{
\textbf{#1}
}[]
\titlespacing{\subsection}{
0pt
}{
0.2cm
}{
0.1cm
}
% Environments
\newenvironment{highlights}{
\begin{itemize}[
topsep=0.10cm,
parsep=0.10cm,
partopsep=0pt,
itemsep=0pt,
leftmargin=0.4cm + 10pt
]
}{
\end{itemize}
}
\newenvironment{highlightsforbulletentries}{
\begin{itemize}[
topsep=0.10cm,
parsep=0.10cm,
partopsep=0pt,
itemsep=0pt,
leftmargin=10pt
]
}{
\end{itemize}
}
\newenvironment{onecolentry}{
\begin{adjustwidth}{
0.2cm + 0.00001cm
}{
0.2cm + 0.00001cm
}
}{
\end{adjustwidth}
}
\newenvironment{twocolentry}[2][]{
\onecolentry
\def\secondColumn{#2}
\setcolumnwidth{\fill, 4.5cm}
\begin{paracol}{2}
}{
\switchcolumn \raggedleft \secondColumn
\end{paracol}
\endonecolentry
}
\newenvironment{threecolentry}[3][]{
\onecolentry
\def\thirdColumn{#3}
\setcolumnwidth{1cm, \fill, 4.5cm}
\begin{paracol}{3}
{\raggedright #2} \switchcolumn
}{
\switchcolumn \raggedleft \thirdColumn
\end{paracol}
\endonecolentry
}
\newenvironment{header}{
\setlength{\topsep}{0pt}\par\kern\topsep\centering\color{primaryColor}\linespread{1.5}
}{
\par\kern\topsep
}
% Commands
\newcommand{\placelastupdatedtext}{%
\AddToShipoutPictureFG*{%
\put(
\LenToUnit{\paperwidth-2cm-0.2cm+0.05cm},
\LenToUnit{\paperheight-1.0cm}
){\vtop{{\null}\makebox[0pt][c]{
\small\color{gray}\textit{Last Updated in October 2025}\hspace{\widthof{Last updated in October 2025}}
}}}%
}%
}
% Save original href
\let\hrefWithoutArrow\href
% Custom href with external link icon
\renewcommand{\href}[2]{\hrefWithoutArrow{#1}{\ifthenelse{\equal{#2}{}}{ }{#2 }\raisebox{.15ex}{\footnotesize \faExternalLink*}}}
% AND command for header
\newcommand{\AND}{\unskip
\cleaders\copy\ANDbox\hskip\wd\ANDbox
\ignorespaces
}
\newsavebox\ANDbox
\sbox\ANDbox{}