-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
508 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,33 @@ | ||
# Resume-FontEnd | ||
20届硕士,web前端工程师简历(pdf,latex,react版本) | ||
# AltaCV, yet another LaTeX CV/Résumé class | ||
|
||
v1.1.4 (27 July 2018), by LianTze Lim ([email protected]) | ||
|
||
(Thanks to [Nur](https://github.com/nurh) for the name.) | ||
|
||
It all started with this: | ||
|
||
[<img src="tweet-that-started-this.png" width="500px">] | ||
(https://twitter.com/Leonduck/status/764281546408923136) | ||
|
||
Leonardo was talking about a [résumé of Marissa Mayer that Business Insider put together](http://www.businessinsider.my/a-sample-resume-for-marissa-mayer-2016-7/) using [enhancv.com](https://enhancv.com). | ||
I _knew_ I had to do something about it. And so AltaCV was born. | ||
|
||
## Samples | ||
|
||
This is how the re-created résumé looks like ([view/open on Overleaf](https://www.overleaf.com/read/gtqfpbwncfvp)): | ||
|
||
<img src="mmayer.png" alt="Marissa Mayer's résumé, re-created with AltaCV" width="600px"> | ||
|
||
Though if you're creating your own CV/résumé, you'd probably prefer using the basic template ([view/open on Overleaf](https://www.overleaf.com/read/trgqjpwnmtgv)): | ||
|
||
<img src="sample.png" alt="sample barebones AltaCV template" width="600px"> | ||
|
||
|
||
## Requirements and Compilation | ||
|
||
* pdflatex + biber + pdflatex | ||
* AltaCV uses [`fontawesome`](http://www.ctan.org/pkg/fontawesome) and [`academicons`](http://www.ctan.org/pkg/academicons); they're included in both TeX Live 2016 and MikTeX 2.9. | ||
* Loading `academicons` is optional: enable it by adding the `academicons` option to `\documentclass`. | ||
* Can now be compiled with pdflatex, XeLaTeX and LuaLaTeX! | ||
* However if you're using `academicons`, you _must_ use either XeLaTeX or LuaLaTeX. If the doc then compiles but the icons don't show up in the output PDF, try compiling with LuaLaTeX instead. | ||
* The samples here use the [Lato](http://www.latofonts.com/lato-free-fonts/) font. |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,252 @@ | ||
%%%%%%%%%%%%%%%%% | ||
% This is altacv.cls (v1.1.4, 27 July 2018) written by | ||
% LianTze Lim ([email protected]). | ||
% | ||
%% It may be distributed and/or modified under the | ||
%% conditions of the LaTeX Project Public License, either version 1.3 | ||
%% of this license or (at your option) any later version. | ||
%% The latest version of this license is in | ||
%% http://www.latex-project.org/lppl.txt | ||
%% and version 1.3 or later is part of all distributions of LaTeX | ||
%% version 2003/12/01 or later. | ||
%%%%%%%%%%%%%%%% | ||
\NeedsTeXFormat{LaTeX2e}[1995/12/01] | ||
%% v1.4: Detect TL2018 to handle accented characters in class information | ||
\@ifl@t@r\fmtversion{2018/04/01}{\UseRawInputEncoding}{} | ||
\ProvidesClass{altacv}[2018/07/27 AltaCV v1.1.4, yet another alternative class for a résumé/curriculum vitae.] | ||
|
||
%% v1.1: Optionally load academicons | ||
\newif\if@academicons | ||
\DeclareOption{academicons}{\@academiconstrue} | ||
%% v1.1.3: Choice of round/square photo | ||
\newif\if@normalphoto | ||
\DeclareOption{normalphoto}{\@normalphototrue} | ||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}} | ||
\ProcessOptions\relax | ||
|
||
\LoadClass{extarticle} | ||
|
||
\RequirePackage[margin=2cm]{geometry} | ||
\RequirePackage{fontawesome} | ||
|
||
%% v1.1: Optionally load academicons | ||
\if@academicons | ||
%% Patch to make academicons compilable with XeLaTeX | ||
\ExplSyntaxOn | ||
\msg_redirect_name:nnn { fontspec } { font-not-found } { none } | ||
\ExplSyntaxOff | ||
\RequirePackage{academicons} | ||
\newfontfamily{\AI}{academicons.ttf} | ||
\fi | ||
|
||
\RequirePackage{xcolor} | ||
|
||
\colorlet{accent}{blue!70!black} | ||
\colorlet{heading}{black} | ||
\colorlet{emphasis}{black} | ||
\colorlet{body}{black!80!white} | ||
\newcommand{\itemmarker}{{\small\textbullet}} | ||
\newcommand{\ratingmarker}{\faCircle} | ||
|
||
\RequirePackage{tikz} | ||
\usetikzlibrary{arrows} | ||
\RequirePackage[skins]{tcolorbox} | ||
\RequirePackage{enumitem} | ||
\setlist{leftmargin=*,labelsep=0.5em,nosep,itemsep=0.25\baselineskip,after=\vskip0.25\baselineskip} | ||
\setlist[itemize]{label=\itemmarker} | ||
\RequirePackage{graphicx} | ||
\RequirePackage{etoolbox} | ||
\RequirePackage{dashrule} | ||
\RequirePackage{multirow,tabularx} | ||
\RequirePackage{changepage} | ||
% \RequirePackage{marginfix} | ||
|
||
\setlength{\parindent}{0pt} | ||
\newcommand{\divider}{\textcolor{body!30}{\hdashrule{\linewidth}{0.6pt}{0.5ex}}\medskip} | ||
|
||
\newenvironment{fullwidth}{% | ||
\begin{adjustwidth}{}{\dimexpr-\marginparwidth-\marginparsep\relax}} | ||
{\end{adjustwidth}} | ||
|
||
\newcommand{\emailsymbol}{\faAt} | ||
\newcommand{\phonesymbol}{\faPhone} | ||
\newcommand{\homepagesymbol}{\faChain} | ||
\newcommand{\locationsymbol}{\faMapMarker} | ||
\newcommand{\linkedinsymbol}{\faLinkedin} | ||
\newcommand{\twittersymbol}{\faTwitter} | ||
\newcommand{\githubsymbol}{\faGithub} | ||
\newcommand{\orcidsymbol}{\aiOrcid} | ||
\newcommand{\mailsymbol}{\faEnvelope} | ||
|
||
\newcommand{\printinfo}[2]{\mbox{\textcolor{accent}{\normalfont #1}\hspace{0.5em}#2\hspace{2em}}} | ||
|
||
\newcommand{\name}[1]{\def\@name{#1}} | ||
\newcommand{\tagline}[1]{\def\@tagline{#1}} | ||
\newcommand{\photo}[2]{\def\@photo{#2}\def\@photodiameter{#1}} | ||
\newcommand{\email}[1]{\printinfo{\emailsymbol}{#1}} | ||
\newcommand{\mailaddress}[1]{\printinfo{\mailsymbol}{#1}} | ||
\newcommand{\phone}[1]{\printinfo{\phonesymbol}{#1}} | ||
\newcommand{\homepage}[1]{\printinfo{\homepagesymbol}{#1}} | ||
\newcommand{\twitter}[1]{\printinfo{\twittersymbol}{#1}} | ||
\newcommand{\linkedin}[1]{\printinfo{\linkedinsymbol}{#1}} | ||
\newcommand{\github}[1]{\printinfo{\githubsymbol}{#1}} | ||
\newcommand{\orcid}[1]{\printinfo{\orcidsymbol}{#1}} | ||
\newcommand{\location}[1]{\printinfo{\locationsymbol}{#1}} | ||
|
||
\newcommand{\personalinfo}[1]{\def\@personalinfo{#1}} | ||
|
||
\newcommand{\makecvheader}{% | ||
\begingroup | ||
\ifdef{\@photodiameter}{\begin{minipage}{\dimexpr\linewidth-\@photodiameter-2em}}{}% | ||
\raggedright\color{emphasis}% | ||
{\Huge\bfseries\MakeUppercase{\@name}\par} | ||
\medskip | ||
{\large\bfseries\color{accent}\@tagline\par} | ||
\medskip | ||
{\footnotesize\bfseries\@personalinfo\par} | ||
\ifdef{\@photodiameter}{% | ||
\end{minipage}\hfill% | ||
\begin{minipage}{\@photodiameter} | ||
\if@normalphoto | ||
\includegraphics[width=\linewidth]{\@photo} | ||
\else | ||
\tikz\path[fill overzoom image={\@photo}]circle[radius=0.5\linewidth]; | ||
\fi% | ||
\end{minipage}\par}{}% | ||
\endgroup\medskip | ||
} | ||
|
||
\renewenvironment{quote}{\color{accent}\itshape\large}{\par} | ||
|
||
\newcommand{\cvsection}[2][]{% | ||
\bigskip% | ||
\ifstrequal{#1}{}{}{\marginpar{\vspace*{\dimexpr1pt-\baselineskip}\raggedright\input{#1}}}% | ||
{\color{heading}\LARGE\bfseries\MakeUppercase{#2}}\\[-1ex]% | ||
{\color{heading}\rule{\linewidth}{2pt}\par}\medskip | ||
} | ||
|
||
\newcommand{\cvsubsection}[1]{% | ||
\smallskip% | ||
{\color{emphasis}\large\bfseries{#1}\par}\medskip | ||
} | ||
|
||
% v1.1.4: fixes inconsistent font size | ||
\newcommand{\cvevent}[4]{% | ||
{\large\color{emphasis}#1\par} | ||
\smallskip\normalsize | ||
\ifstrequal{#2}{}{}{ | ||
\textbf{\color{accent}#2}\par | ||
\smallskip} | ||
\ifstrequal{#3}{}{}{{\small\makebox[0.6\linewidth][l]{\faCalendar\hspace{0.5em}#3}}}% | ||
\ifstrequal{#4}{}{}{{\small\makebox[0.4\linewidth][l]{\faMapMarker\hspace{0.5em}#4}}}\par | ||
\medskip | ||
} | ||
|
||
\newcommand{\cvachievement}[3]{% | ||
\begin{tabularx}{\linewidth}{@{}p{2em} @{\hspace{1ex}} >{\raggedright\arraybackslash}X@{}} | ||
\multirow{2}{*}{\Large\color{accent}#1} & \bfseries\textcolor{emphasis}{#2}\\ | ||
& #3 | ||
\end{tabularx}% | ||
\smallskip | ||
} | ||
|
||
\newcommand{\cvtag}[1]{% | ||
\tikz[baseline]\node[anchor=base,draw=body!30,rounded corners,inner xsep=0.9ex,inner ysep =0.65ex,text height=1.6ex,text depth=.25ex]{#1}; | ||
} | ||
|
||
\newcommand{\cvskill}[2]{% | ||
\textcolor{emphasis}{\textbf{#1}}\hfill | ||
\foreach \x in {1,...,5}{% | ||
\space{\ifnumgreater{\x}{#2}{\color{body!30}}{\color{accent}}\ratingmarker}}\par% | ||
} | ||
|
||
% Adapted from @Jake's answer at http://tex.stackexchange.com/a/82729/226 | ||
\newcommand{\wheelchart}[4][0]{% | ||
\begingroup\centering | ||
\def\innerradius{#3}% | ||
\def\outerradius{#2}% | ||
% Calculate total | ||
\pgfmathsetmacro{\totalnum}{0}% | ||
\foreach \value/\colour/\name in {#4} {% | ||
\pgfmathparse{\value+\totalnum}% | ||
\global\let\totalnum=\pgfmathresult% | ||
}% | ||
\begin{tikzpicture} | ||
|
||
% Calculate the thickness and the middle line of the wheel | ||
\pgfmathsetmacro{\wheelwidth}{\outerradius-\innerradius} | ||
\pgfmathsetmacro{\midradius}{(\outerradius+\innerradius)/2} | ||
\pgfmathsetmacro{\totalrot}{-90 + #1} | ||
|
||
% Rotate so we start from the top | ||
\begin{scope}[rotate=\totalrot] | ||
|
||
% Loop through each value set. \cumnum keeps track of where we are in the wheel | ||
\pgfmathsetmacro{\cumnum}{0} | ||
\foreach \value/\width/\colour/\name in {#4} { | ||
\pgfmathsetmacro{\newcumnum}{\cumnum + \value/\totalnum*360} | ||
|
||
% Calculate the percent value | ||
\pgfmathsetmacro{\percentage}{\value/\totalnum*100} | ||
% Calculate the mid angle of the colour segments to place the labels | ||
\pgfmathsetmacro{\midangle}{-(\cumnum+\newcumnum)/2} | ||
|
||
% This is necessary for the labels to align nicely | ||
\pgfmathparse{ | ||
(-\midangle>180?"west":"east") | ||
} \edef\textanchor{\pgfmathresult} | ||
\pgfmathparse{ | ||
(-\midangle>180?"flush left":"flush right") | ||
} \edef\textalign{\pgfmathresult} | ||
\pgfmathsetmacro\labelshiftdir{1-2*(-\midangle<180)} | ||
|
||
% Draw the color segments. Somehow, the \midrow units got lost, so we add 'pt' at the end. Not nice... | ||
\filldraw[draw=white,fill=\colour] (-\cumnum:\outerradius) arc (-\cumnum:-(\newcumnum):\outerradius) -- | ||
(-\newcumnum:\innerradius) arc (-\newcumnum:-(\cumnum):\innerradius) -- cycle; | ||
|
||
% Draw the data labels | ||
\draw [*-,thin,emphasis] node [append after command={(\midangle:\midradius pt) -- (\midangle:\outerradius + 1ex) -- (\tikzlastnode)}] at (\midangle:\outerradius + 1ex) [xshift=\labelshiftdir*0.5cm,inner sep=1ex, outer sep=0pt, text width=\width,anchor=\textanchor,align=\textalign,font=\small,text=body]{\name}; | ||
% Set the old cumulated angle to the new value | ||
\global\let\cumnum=\newcumnum | ||
} | ||
\end{scope} | ||
% \draw[gray] (0,0) circle (\outerradius) circle (\innerradius); | ||
\end{tikzpicture}\par | ||
\endgroup | ||
} | ||
|
||
\newcommand{\cvref}[3]{% | ||
\smallskip | ||
\textcolor{emphasis}{\textbf{#1}}\par | ||
\begin{description}[font=\color{accent},style=multiline,leftmargin=1.25em] | ||
\item[\normalfont\emailsymbol] #2 | ||
\item[\small\normalfont\mailsymbol] #3 | ||
\end{description} | ||
% \medskip | ||
} | ||
|
||
\newenvironment{cvcolumn}[1]{\begin{minipage}[t]{#1}\raggedright}{\end{minipage}} | ||
|
||
\RequirePackage[backend=biber,style=authoryear,sorting=ydnt]{biblatex} | ||
%% For removing numbering entirely when using a numeric style | ||
% \setlength{\bibhang}{1em} | ||
% \DeclareFieldFormat{labelnumberwidth}{\makebox[\bibhang][l]{\itemmarker}} | ||
% \setlength{\biblabelsep}{0pt} | ||
\defbibheading{pubtype}{\cvsubsection{#1}} | ||
\renewcommand{\bibsetup}{\vspace*{-\baselineskip}} | ||
\AtEveryBibitem{\makebox[\bibhang][l]{\itemmarker}} | ||
\setlength{\bibitemsep}{0.25\baselineskip} | ||
|
||
% v1.1.2: make it easier to add a sidebar aligned with top of next page | ||
\RequirePackage{afterpage} | ||
\newcommand{\addsidebar}[2][]{\marginpar{% | ||
\ifstrequal{#1}{}{}{\vspace*{#1}}% | ||
\input{#2}}% | ||
} | ||
\newcommand{\addnextpagesidebar}[2][]{\afterpage{\addsidebar[#1]{#2}}} | ||
|
||
\AtBeginDocument{% | ||
\pagestyle{empty} | ||
\color{body} | ||
\raggedright | ||
} |
Oops, something went wrong.