mirror of https://github.com/eyhc1/rendercv.git
engineeringresumes: improve templates and use charter font
This commit is contained in:
parent
150135cc83
commit
98280c05f3
|
@ -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}
|
||||
|
|
|
@ -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 *))
|
|
@ -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 *))
|
|
@ -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 *))
|
||||
|
|
|
@ -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 *))
|
|
@ -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}
|
||||
|
|
|
@ -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
|
|
@ -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}
|
||||
|
|
|
@ -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}
|
|
@ -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.",
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue