Skip to content

Instantly share code, notes, and snippets.

@vermiculus
Last active January 3, 2016 08:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vermiculus/8437032 to your computer and use it in GitHub Desktop.
Save vermiculus/8437032 to your computer and use it in GitHub Desktop.
A logical format for resumes and curriculum vitae
/contact.tex
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\RequirePackage{expl3,l3keys2e}
\ProvidesExplClass
{bettercv}
{2013/12/23}
{1.0}
{A class for my resume/CV}
\keys_define:nn { resume / options } {
textout .tl_set:N = \l_resume_output_text_tl
}
\ProcessKeysOptions{resume/options}
\LoadClass{article}
\RequirePackage{fontspec}
\tl_if_empty:NF \l_resume_output_text_tl {
\iow_new:N \l_resume_output_text_iow
\iow_open:Nn \l_resume_output_text_iow { \l_resume_output_text_tl }
}
\cs_new:Nn \resume_maybe_write:n {
\tl_if_empty:NF \l_resume_output_text_tl {
\iow_now:Nx \l_resume_output_text_iow { #1 }
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Logical Declarations and Markup %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{xparse}
%% Date Range %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareDocumentCommand \daterange { s m m o }
{
\IfBooleanTF{#1}
{#2\thinspace\textendash\thinspace(#3)}
{#2\thinspace\textendash\thinspace#3}
\IfValueT { #4 } { \nobreakspace [#4] }
}
%% Address %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\keys_define:nn { resume/contact } {
street .tl_set:N = \l_resume_contact_street_tl,
city .tl_set:N = \l_resume_contact_city_tl,
state .tl_set:N = \l_resume_contact_state_tl,
zip .tl_set:N = \l_resume_contact_zip_tl,
name .tl_set:N = \l_resume_contact_name_tl,
phone .tl_set:N = \l_resume_contact_phone_tl,
email .tl_set:N = \l_resume_contact_email_tl,
}
\NewDocumentCommand \ContactInformation { m }
{
\keys_set:nn { resume / contact } { #1 }
\resume_maybe_write:n
{
\exp_not:V \l_resume_contact_name_tl \iow_newline:
\exp_not:V \l_resume_contact_email_tl \iow_newline:
\exp_not:V \l_resume_contact_phone_tl \iow_newline:
\iow_newline:
\exp_not:V \l_resume_contact_street_tl \iow_newline:
\exp_not:V \l_resume_contact_city_tl ,\c_space_tl
\exp_not:V \l_resume_contact_state_tl \iow_newline:
\exp_not:V \l_resume_contact_zip_tl \iow_newline:
}
}
% ensure that we don't have a HoeflerText situation again (as opposed
% to Hoefler Text)
\tl_new:N \l_resume_name_font_tl
\NewDocumentCommand \SetNameFont { m }
{
\tl_set:Nn \l_resume_name_font_tl { #1 }
}
% yes, i do mean \maketitle. Whoever heard of a two-column resume?
\RenewDocumentCommand \maketitle { }
{
\noindent
\begin{minipage}{.6\linewidth}
\tl_if_empty:NF \l_resume_name_font_tl
{ \fontspec[Path=fonts/]{\tl_use:N \l_resume_name_font_tl} }
{
\Huge
\l_resume_contact_name_tl
}
{
\normalsize \hspace{4em}
$\langle$\l_resume_contact_email_tl$\rangle$
}
\end{minipage}
\hfill
\begin{minipage}{.4\linewidth}
\begin{flushright}
\l_resume_contact_street_tl\\
\l_resume_contact_city_tl,~
\l_resume_contact_state_tl
\tl_if_empty:NTF \l_resume_contact_zip_tl
{ \\ }
{,~\l_resume_contact_zip_tl\\}
\l_resume_contact_phone_tl
\end{flushright}
\end{minipage}
}
%% Position %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\keys_define:nn { resume / position }
{
title .tl_set:N = \l_resume_position_title_tl,
date .tl_set:N = \l_resume_position_date_tl,
company .tl_set:N = \l_resume_position_company_tl,
state .tl_set:N = \l_resume_position_state_tl,
city .tl_set:N = \l_resume_position_city_tl,
companylink .tl_set:N = \l_resume_position_companylink_tl,
}
\NewDocumentEnvironment { position } { m }
{
\par\noindent
% \vfill
\minipage{\textwidth}
\par\vspace{2ex}\noindent
\group_begin:
\keys_set:nn { resume / position } { #1 }
\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}r@{}}
{\itshape \l_resume_position_title_tl}
&
\tl_if_empty:NF \l_resume_position_companylink_tl {\href{\l_resume_position_companylink_tl}}
{\l_resume_position_company_tl} \\[0.5ex]
{\l_resume_position_date_tl}
&
{\l_resume_position_city_tl}, ~ {\l_resume_position_state_tl}
\end{tabular*}
\hspace{-\textwidth}
\hspace{-2em}
\raisebox{.25ex}{\textreferencemark}
\vspace{2ex plus .2ex minus .2ex}
\resume_maybe_write:n {
Position:\c_space_tl \exp_not:V \l_resume_position_title_tl \iow_newline:
Company:\c_space_tl \exp_not:V \l_resume_position_company_tl \iow_newline:
Date:\c_space_tl \exp_not:V \l_resume_position_date_tl \iow_newline:
Location:\c_space_tl \exp_not:V \l_resume_position_city_tl, \c_space_tl \l_resume_position_state_tl \iow_newline:
}
\group_end:
}
{
\endminipage
\vspace{4ex plus 1ex minus 1ex}
}
\def\Dash{\unskip\thinspace\textemdash\thinspace\ignorespaces}
\pagestyle{empty}
% Local Variables:
% TeX-PDF-mode: t
% TeX-master: "example.tex"
% TeX-engine: xetex
% End:
John Doe
john@doe.com
+0 (123) 456 7890
123 Main St.
Mi\dh gar\dh r, Norge
Position: Source Code Manager \& Software Engineer
Company: Bank of America Merrill Lynch
Date: \daterange *{October, 2012}{Present}
Location: New York, NY
Position: Master of Business Administration
Company: University of West Florida
Date: August, 2010
Location: Pensacola, FL
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
\documentclass[textout=\jobname.cv.txt]{bettercv}
\usepackage{microtype}
\usepackage[margin=.75in]{geometry}
\usepackage{xcolor}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand \headrulewidth {0pt}
\renewcommand \footrulewidth {0pt}
\cfoot{\textcolor{gray}{This document last updated on \today}}
\usepackage{titlesec}
\titleformat {\section}
{\Large\scshape}
{}
{0pt}
{}
[\titlerule]
\titleformat {\subsection}
{\large\bfseries}
{}
{0pt}
{}
\usepackage[inline]{enumitem}
\setlist[itemize]{itemsep=0pt,topsep=1pt}
\setlist[description]{itemsep=0pt,topsep=1pt}
\ContactInformation{
name = John Doe,
email = john@doe.com,
phone = +0 (123) 456 7890,
street = 123 Main St.,
city = Mi\dh gar\dh r,
state = Norge,
zip = {},
}
%\input{contact}
\newcommand \software[1] {\textsl{#1}}
\newcommand \course[1] {#1}
\newcommand \CPP {{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\tiny\bf ++}}}
\newcommand \CSharp {{C\#}}
\newcommand \Lisp {{\textsc{Lisp}}}
\setcounter{secnumdepth}{0}
\begin{document}
\maketitle
\section{Relevant Domain Knowledge}
\subsection{Computer Languages}
\begin{description}
\item[Programming]
Python (Active Tutor and Speaker), Quartz, Ruby, Rails, SQL, JavaScript, CoffeeScript, and \textsc{Bash}
\item[Markup Packages]
reST (rst), Sphinx, HTML5, \LaTeX, HAML, CSS, SCSS, \software{Emacs} Org-mode
\item[Statistics]
R Statistics (on Linux) and SAS, SPSS, and Stata (Windows)
\end{description}
\subsection{Investments, Financial Products, and Accounting Knowledge}
\begin{itemize}
\item Securities Licensed on Packaged Products, Stocks \& Bonds, Options, and Investment Advisor Regulations
\item Passed State of Florida Insurance and Real Estate Licensure Courses and Tests
\item Answered over 150 Accounting and Tax Questions on Investments Pro-bono for All-Experts.com
\end{itemize}
\section{Professional Experience}
\begin{position}{
company = Bank of America Merrill Lynch,
title = Source Code Manager \& Software Engineer,
city = New York,
state = NY,
date = \daterange*{October, 2012}{Present}
}
\begin{itemize}
\item Developed portal for delivering documentation, information, statistics, and reports
\item Led team to use core technology, idiomatic Python, maintainable style, proper unittesting, and proper SDLC
\item Contributed to documentation and training On Quack, Sandra, Python, Qzdev, Sphinx, Bob And SpongeBob
\item Developed tool to document filesets, provide actionable statistics, push to environments, and raise review requests
\item Reviewed projects for best practices \& edited scripts for performance, maintainability, and readability
\item Instructed developers in best practices with weekly webinars and led code review
\end{itemize}
\end{position}
\section{Education}
\begin{position}{
company = University of West Florida,
title = Master of Business Administration,
city = Pensacola,
state = FL,
date = {August, 2010}
}
\begin{description}
\item[Honors] National Merit Scholar, Dean's List, and Graduated with 169 credit hours, 3.4~GPA, Served on Boards, Volunteered
\item[Real Estate Courses]
\begin{itemize*}
\item Real Estate
\item Real Estate Finance
\item Appraisal I \& II
\item Feasibility
\item Legal Environment
\end{itemize*}
\item[Relevant]
\begin{itemize*}
\item Game Theory
\item Financial Accounting
\item Managerial Accounting
\item Corporate Finance
\item Calculus
\item International Relations
\item Macroeconomics
\item Microeconomics
\item Comparative Government
\item Quantitative Methods
\item Research Methods
\end{itemize*}
\end{description}
\end{position}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment