mirror of https://github.com/eyhc1/rendercv.git
add sb2nov theme
This commit is contained in:
parent
60ef29e59c
commit
0a4583dce0
|
@ -0,0 +1,22 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Sourabh Bajaj
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
%-------------------------
|
||||
% Resume in Latex
|
||||
% Author : Sourabh Bajaj
|
||||
% License : MIT
|
||||
%------------------------
|
||||
|
||||
\documentclass[letterpaper,11pt]{article}
|
||||
|
||||
\usepackage{latexsym}
|
||||
\usepackage[empty]{fullpage}
|
||||
\usepackage{titlesec}
|
||||
\usepackage{marvosym}
|
||||
\usepackage[usenames,dvipsnames]{color}
|
||||
\usepackage{verbatim}
|
||||
\usepackage{enumitem}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage[english]{babel}
|
||||
\usepackage{tabularx}
|
||||
\input{glyphtounicode}
|
||||
|
||||
\pagestyle{fancy}
|
||||
\fancyhf{} % clear all header and footer fields
|
||||
\fancyfoot{}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
|
||||
% Adjust margins
|
||||
\addtolength{\oddsidemargin}{-0.5in}
|
||||
\addtolength{\evensidemargin}{-0.5in}
|
||||
\addtolength{\textwidth}{1in}
|
||||
\addtolength{\topmargin}{-.5in}
|
||||
\addtolength{\textheight}{1.0in}
|
||||
|
||||
\urlstyle{same}
|
||||
|
||||
\raggedbottom
|
||||
\raggedright
|
||||
\setlength{\tabcolsep}{0in}
|
||||
|
||||
% Sections formatting
|
||||
\titleformat{\section}{
|
||||
\vspace{-4pt}\scshape\raggedright\large
|
||||
}{}{0em}{}[\color{black}\titlerule \vspace{-5pt}]
|
||||
|
||||
% Ensure that generate pdf is machine readable/ATS parsable
|
||||
\pdfgentounicode=1
|
||||
|
||||
%-------------------------
|
||||
% Custom commands
|
||||
\newcommand{\resumeItem}[2]{
|
||||
\item\small{
|
||||
\textbf{#1}{: #2 \vspace{-2pt}}
|
||||
}
|
||||
}
|
||||
|
||||
% Just in case someone needs a heading that does not need to be in a list
|
||||
\newcommand{\resumeHeading}[4]{
|
||||
\begin{tabular*}{0.99\textwidth}[t]{l@{\extracolsep{\fill}}r}
|
||||
\textbf{#1} & #2 \\
|
||||
\textit{\small#3} & \textit{\small #4} \\
|
||||
\end{tabular*}\vspace{-5pt}
|
||||
}
|
||||
|
||||
\newcommand{\resumeSubheading}[4]{
|
||||
\vspace{-1pt}\item
|
||||
\begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r}
|
||||
\textbf{#1} & #2 \\
|
||||
\textit{\small#3} & \textit{\small #4} \\
|
||||
\end{tabular*}\vspace{-5pt}
|
||||
}
|
||||
|
||||
\newcommand{\resumeSubSubheading}[2]{
|
||||
\begin{tabular*}{0.97\textwidth}{l@{\extracolsep{\fill}}r}
|
||||
\textit{\small#1} & \textit{\small #2} \\
|
||||
\end{tabular*}\vspace{-5pt}
|
||||
}
|
||||
|
||||
\newcommand{\resumeSubItem}[2]{\resumeItem{#1}{#2}\vspace{-4pt}}
|
||||
|
||||
\renewcommand{\labelitemii}{$\circ$}
|
||||
|
||||
\newcommand{\resumeSubHeadingListStart}{\begin{itemize}[leftmargin=*]}
|
||||
\newcommand{\resumeSubHeadingListEnd}{\end{itemize}}
|
||||
\newcommand{\resumeItemListStart}{\begin{itemize}}
|
||||
\newcommand{\resumeItemListEnd}{\end{itemize}\vspace{-5pt}}
|
|
@ -0,0 +1,86 @@
|
|||
from typing import Literal, Annotated
|
||||
|
||||
import pydantic
|
||||
|
||||
|
||||
LaTeXDimension = Annotated[
|
||||
str,
|
||||
pydantic.Field(
|
||||
pattern=r"\d+\.?\d* *(cm|in|pt|mm|ex|em)",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
class Sb2novThemeOptions(pydantic.BaseModel):
|
||||
""" """
|
||||
|
||||
model_config = pydantic.ConfigDict(extra="forbid")
|
||||
|
||||
theme: Literal["sb2nov"]
|
||||
font_size: Literal["10pt", "11pt", "12pt"] = pydantic.Field(
|
||||
default="10pt",
|
||||
title="Font Size",
|
||||
description='The font size of the CV. The default value is "10pt".',
|
||||
examples=["10pt", "11pt", "12pt"],
|
||||
)
|
||||
page_size: Literal["a4paper", "letterpaper"] = pydantic.Field(
|
||||
default="a4paper",
|
||||
title="Page Size",
|
||||
description='The page size of the CV. The default value is "a4paper".',
|
||||
examples=["a4paper", "letterpaper"],
|
||||
)
|
||||
color: (
|
||||
Literal["blue"]
|
||||
| Literal["black"]
|
||||
| Literal["burgundy"]
|
||||
| Literal["green"]
|
||||
| Literal["grey"]
|
||||
| Literal["orange"]
|
||||
| Literal["purple"]
|
||||
| Literal["red"]
|
||||
) = pydantic.Field(
|
||||
default="blue",
|
||||
validate_default=True,
|
||||
title="Primary Color",
|
||||
description='The primary color of the CV. The default value is "blue".',
|
||||
examples=[
|
||||
"blue",
|
||||
"black",
|
||||
"burgundy",
|
||||
"green",
|
||||
"grey",
|
||||
"orange",
|
||||
"purple",
|
||||
"red",
|
||||
],
|
||||
)
|
||||
date_width: LaTeXDimension = pydantic.Field(
|
||||
default="3.8 cm",
|
||||
validate_default=True,
|
||||
title="Date and Location Column Width",
|
||||
description='The width of the date column. The default value is "3.8 cm".',
|
||||
)
|
||||
content_scale: float = pydantic.Field(
|
||||
default=0.75,
|
||||
title="Content Scale",
|
||||
description=(
|
||||
"The scale of the content with respect to the page size. The default value"
|
||||
' is "0.75".'
|
||||
),
|
||||
)
|
||||
show_only_years: bool = pydantic.Field(
|
||||
default=False,
|
||||
title="Show Only Years",
|
||||
description=(
|
||||
'If "True", only the years will be shown in the date column. The default'
|
||||
' value is "False".'
|
||||
),
|
||||
)
|
||||
disable_page_numbers: bool = pydantic.Field(
|
||||
default=False,
|
||||
title="Disable Page Numbers",
|
||||
description=(
|
||||
'If "True", the page numbers will be disabled. The default value is'
|
||||
' "False".'
|
||||
),
|
||||
)
|
Loading…
Reference in New Issue