engineeringresumes: improve templates and use charter font

This commit is contained in:
Sina Atalay 2024-04-07 17:40:35 +00:00 committed by GitHub
parent 150135cc83
commit 98280c05f3
10 changed files with 234 additions and 83 deletions

View File

@ -1,2 +1,7 @@
$\vcenter{\hbox{\small$\bullet$}}$ <<entry.bullet>>
((* if not is_first_entry *))
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\begin{onecolentry}
\textbullet \hspace{3pt} <<entry.bullet>>
\end{onecolentry}

View File

@ -1,9 +1,15 @@
((* if not is_first_entry *))
\vspace{8pt}
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\textbf{<<entry.institution>>}, ((* if entry.degree *))<<entry.degree>> in ((* endif *))<<entry.area>>((* if entry.location *)) -- <<entry.location>>((* endif *)) \hfill <<entry.date_string>>
((* if entry.date_string == "" *))
\begin{onecolentry}
((* else *))
\begin{twocolentry}{
<<entry.date_string>>
}
((* endif *))
\textbf{<<entry.institution>>}, ((* if entry.degree *))<<entry.degree>> in ((* endif *))<<entry.area>>((* if entry.location *)) -- <<entry.location>>((* endif *))
((* for item in entry.highlights *))
((* if loop.first *))
\begin{highlights}
@ -13,3 +19,8 @@
\end{highlights}
((* endif *))
((* endfor *))
((* if entry.date_string == "" *))
\end{onecolentry}
((* else *))
\end{twocolentry}
((* endif *))

View File

@ -1,9 +1,15 @@
((* if not is_first_entry *))
\vspace{8pt}
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\textbf{<<entry.position>>}, <<entry.company>>((* if entry.location*)) -- <<entry.location>>((* endif *)) \hfill <<entry.date_string>>
((* if entry.date_string == "" *))
\begin{onecolentry}
((* else *))
\begin{twocolentry}{
<<entry.date_string>>
}
((* endif *))
\textbf{<<entry.position>>}, <<entry.company>>((* if entry.location *)) -- <<entry.location>>((* endif *))
((* for item in entry.highlights *))
((* if loop.first *))
\begin{highlights}
@ -13,3 +19,8 @@
\end{highlights}
((* endif *))
((* endfor *))
((* if entry.date_string == "" *))
\end{onecolentry}
((* else *))
\end{twocolentry}
((* endif *))

View File

@ -18,7 +18,7 @@
\hspace*{<<design.margins.header.horizontal_between_connections>>}
((* endif *))
((* if cv.location *))
\mbox{{\small\faMapMarker*}\hspace*{0.13cm}<<cv.location>>}
\mbox{\color{black}{\small\faMapMarker*}\hspace*{0.13cm}<<cv.location>>}
\hspace*{<<design.margins.header.horizontal_between_connections>>}
((* endif *))
((* if cv.website *))

View File

@ -1,9 +1,15 @@
((* if not is_first_entry *))
\vspace{8pt}
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\textbf{<<entry.name>>}((* if entry.location *)) -- <<entry.location>>((* endif *)) \hfill <<entry.date_string>>
((* if entry.date_string == "" *))
\begin{onecolentry}
((* else *))
\begin{twocolentry}{
<<entry.date_string>>
}
((* endif *))
\textbf{<<entry.name>>}((* if entry.location *)) -- <<entry.location>>((* endif *))
((* for item in entry.highlights *))
((* if loop.first *))
\begin{highlights}
@ -13,3 +19,8 @@
\end{highlights}
((* endif *))
((* endfor *))
((* if entry.date_string == "" *))
\end{onecolentry}
((* else *))
\end{twocolentry}
((* endif *))

View File

@ -1,3 +1,7 @@
((* if not is_first_entry *))
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\begin{onecolentry}
\textbf{<<entry.label>>:} <<entry.details>>
\end{onecolentry}

View File

@ -11,6 +11,8 @@
% showframe % for debugging
]{geometry} % for adjusting page geometry
\usepackage{titlesec} % for customizing section titles
\usepackage{tabularx} % for making tables with fixed width columns
\usepackage{array} % tabularx requires this
\usepackage[dvipsnames]{xcolor} % for coloring text
\definecolor{primaryColor}{RGB}{<<design.color.as_rgb_tuple()|join(", ")>>} % define primary color
\usepackage{enumitem} % for customizing lists
@ -26,8 +28,17 @@
\usepackage{calc} % for calculating lengths
\usepackage{bookmark} % for bookmarks
\usepackage{lastpage} % for getting the total number of pages
% \usepackage{charter} % for using charter font
\usepackage{ifthen}
\usepackage{changepage} % for one column entries (adjustwidth environment)
\usepackage{paracol} % for two and three column entries
\usepackage{ifthen} % for conditional statements
\usepackage{needspace} % for avoiding page brake right after the section title
\usepackage{charter} % for using charter font
% Ensure that generate pdf is machine readable/ATS parsable:
\ifpdf
\input{glyphtounicode}
\pdfgentounicode=1
\fi
% Some settings:
\pagestyle{empty} % no header or footer
@ -42,6 +53,8 @@
"PAGE_NUMBER": "\\thepage{}",
"TOTAL_PAGES": "\pageref*{LastPage}"
} *))
\setlength{\columnsep}{0.15cm} % set column seperation
\makeatletter
\let\ps@customFooterStyle\ps@plain % Copy the plain style to customFooterStyle
\patchcmd{\ps@customFooterStyle}{\thepage}{
@ -51,7 +64,7 @@
\pagestyle{customFooterStyle}
((* endif *))
\titleformat{\section}{\bfseries\large}{}{0pt}{}[\vspace{1pt}\titlerule]
\titleformat{\section}{\needspace{4\baselineskip}\bfseries\large}{}{0pt}{}[\vspace{1pt}\titlerule]
\titlespacing{\section}{
% left space:
@ -67,16 +80,50 @@
\renewcommand\labelitemi{$\vcenter{\hbox{\small$\bullet$}}$}
\newenvironment{highlights}{
\begin{itemize}[
topsep=0pt,
topsep=<<design.margins.highlights_area.top>>,
parsep=<<design.margins.highlights_area.vertical_between_bullet_points>>,
partopsep=0pt,
itemsep=0pt,
% after=\vspace{-1\baselineskip},
leftmargin=10pt
leftmargin=<<design.margins.highlights_area.left>> + 10pt
]
}{
\end{itemize}
} % new environment for highlights
\newenvironment{onecolentry}{
\begin{adjustwidth}{
<<design.margins.entry_area.left_and_right>> + 0.00001 cm
}{
<<design.margins.entry_area.left_and_right>> + 0.00001 cm
}
}{
\end{adjustwidth}
} % new environment for one column entries
\newenvironment{twocolentry}[2][]{
\onecolentry
\def\secondColumn{#2}
\setcolumnwidth{\fill, 4.2cm}
\begin{paracol}{2}
}{
\switchcolumn \raggedleft \secondColumn
\end{paracol}
\endonecolentry
} % new environment for two column entries
\newenvironment{threecolentry}[3][]{
\onecolentry
\def\thirdColumn{#3}
\setcolumnwidth{1cm, \fill, 4.2cm}
\begin{paracol}{3}
\raggedright #2 \switchcolumn
}{
\switchcolumn \raggedleft \thirdColumn
\end{paracol}
\endonecolentry
} % new environment for three column entries
\newenvironment{header}{
\setlength{\topsep}{0pt}\par\kern\topsep\centering\linespread{1.5}
}{
@ -86,7 +133,7 @@
\newcommand{\placelastupdatedtext}{% \placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}
\AddToShipoutPictureFG*{% Add <stuff> to current page foreground
\put(
\LenToUnit{\paperwidth-<<design.margins.page.right>>+0.05cm},
\LenToUnit{\paperwidth-<<design.margins.page.right>>-<<design.margins.entry_area.left_and_right>>+0.05cm},
\LenToUnit{\paperheight-<<design.margins.page.top|divide_length_by(2)>>}
){\vtop{{\null}\makebox[0pt][c]{
\small\color{gray}\textit{Last updated in <<today>>}\hspace{\widthof{Last updated in <<today>>}}
@ -98,7 +145,3 @@
\let\hrefWithoutArrow\href
% new command for external links:
\renewcommand{\href}[2]{\hrefWithoutArrow{#1}{\mbox{\ifthenelse{\equal{#2}{}}{ }{#2 }\raisebox{.15ex}{\footnotesize \faExternalLink*}}}}
% Ensure that generate pdf is machine readable/ATS parsable
\input{glyphtounicode}
\pdfgentounicode=1

View File

@ -1,12 +1,20 @@
((* if not is_first_entry *))
\vspace{8pt}
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
\textbf{<<entry.title>>} -- <<entry.date_string>>
\begin{highlights}
\item <<entry.authors|map("make_it_nolinebreak")|join(", ")>>
((*- if entry.doi or entry.journal *)) \item ((* endif -*))
((*- if entry.doi -*))
\begin{twocolentry}{
<<entry.date_string>>
}
\textbf{<<entry.title>>}
\vspace{<<design.margins.highlights_area.vertical_between_bullet_points>>}
<<entry.authors|map("make_it_nolinebreak")|join(", ")>>
((* if entry.doi or entry.journal *))
\vspace{<<design.margins.highlights_area.vertical_between_bullet_points>>}
((* endif *))
((* if entry.doi -*))
\href{<<entry.doi_url>>}{<<entry.doi>>}
((*- endif -*))
((*- if entry.doi and entry.journal *)) (((* endif -*))
@ -14,4 +22,5 @@
<<entry.journal>>
((*- endif -*))
((*- if entry.doi and entry.journal *)))((* endif -*))
\end{highlights}
\end{twocolentry}

View File

@ -1,6 +1,7 @@
((* if not is_first_entry *))
\vspace{8pt}
\vspace{<<design.margins.entry_area.vertical_between>>}
((* endif *))
<<entry>>
\begin{onecolentry}
This is an example resume to showcase the capabilities of the open-source LaTeX CV generator, \href{https://github.com/sinaatalay/rendercv}{RenderCV}. A substantial part of the content is taken from \href{https://www.careercup.com/resume}{here}, where a \textit{clean and tidy CV} pattern is proposed by \textbf{Gayle L. McDowell}.
\end{onecolentry}

View File

@ -2,20 +2,76 @@ from typing import Literal
from typing import ClassVar as NotUsedInput
import pydantic
import pydantic_extra_types.color as pydantic_color
from .. import ThemeOptions, LaTeXDimension
from .. import Margins as MarginsBase
from .. import (
ThemeOptions,
EntryAreaMargins,
HighlightsAreaMargins,
Margins,
LaTeXDimension,
)
class Margins(MarginsBase):
class EntryAreaMarginsForEngineeringresumes(EntryAreaMargins):
"""This class is a data model for the entry area margins."""
left_and_right: LaTeXDimension = pydantic.Field(
default="0 cm",
title="Left Margin",
description="The left margin of entry areas. The default value is 0 cm.",
)
vertical_between: LaTeXDimension = pydantic.Field(
default="0.1 cm",
title="Vertical Margin Between Entry Areas",
description=(
"The vertical margin between entry areas. The default value is 0.1 cm."
),
)
date_and_location_width: NotUsedInput
class HighlightsAreaMarginsForEngineeringresumes(HighlightsAreaMargins):
"""This class is a data model for the highlights area margins."""
top: LaTeXDimension = pydantic.Field(
default="0.10 cm",
title="Top Margin",
description="The top margin of highlights areas. The default value is 0.10 cm.",
)
left: LaTeXDimension = pydantic.Field(
default="0 cm",
title="Left Margin",
description="The left margin of highlights areas. The default value is 0 cm.",
)
vertical_between_bullet_points: LaTeXDimension = pydantic.Field(
default="0.10 cm",
title="Vertical Margin Between Bullet Points",
description=(
"The vertical margin between bullet points. The default value is 0.10 cm."
),
)
class MarginsForEngineeringresumes(Margins):
"""This class is a data model for the margins."""
entry_area: NotUsedInput
highlights_area: NotUsedInput
entry_area: EntryAreaMarginsForEngineeringresumes = pydantic.Field(
default=EntryAreaMarginsForEngineeringresumes(),
title="Entry Area Margins",
description="Entry area margins.",
)
highlights_area: HighlightsAreaMarginsForEngineeringresumes = pydantic.Field(
default=HighlightsAreaMarginsForEngineeringresumes(),
title="Highlights Area Margins",
description="Highlights area margins.",
)
class EngineeringresumesThemeOptions(ThemeOptions):
"""This class is the data model of the theme options for the engineeringresumes
"""This class is the data model of the theme options for the `engineeringresumes`
theme.
"""
@ -28,8 +84,8 @@ class EngineeringresumesThemeOptions(ThemeOptions):
" 25 pt."
),
)
margins: Margins = pydantic.Field(
default=Margins(),
margins: MarginsForEngineeringresumes = pydantic.Field(
default=MarginsForEngineeringresumes(),
title="Margins",
description="Page, section title, entry field, and highlights field margins.",
)