Initial commit
This commit is contained in:
commit
f51310c7ac
10 changed files with 4655 additions and 0 deletions
97
README.md
Normal file
97
README.md
Normal file
|
@ -0,0 +1,97 @@
|
|||
# AltaCV, yet another LaTeX CV/Résumé class
|
||||
|
||||
v1.3.2 (17 May 2020), by LianTze Lim (liantze@gmail.com)
|
||||
|
||||
_Sample file with new paracol layout added on 2 February 2020_
|
||||
|
||||
(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/latex/examples/recreating-business-insiders-cv-of-marissa-mayer-using-altacv/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/latex/templates/altacv-template/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`.
|
||||
* Use the `normalphoto` option to get normal (i.e. non-circular) photos.
|
||||
* As of v1.2 you can add multiple photos on the left or right: `\photoL{2cm}{logo1}` and `\photoR{2.5cm}{logo2,photo}`. (`\photo` will work like `\photoR`.) Separate your image filenames with commas _without_ spaces.
|
||||
* Use the `ragged2d` option to activate hyphenations while keeping text left-justified; line endings will thus be less jagged and more aesthetically pleasing.
|
||||
* 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. Feel free to use a different typeface package instead—often a different typeface will change the entire CV's feel.
|
||||
|
||||
|
||||
## Example Files
|
||||
|
||||
### `sample.tex`
|
||||
|
||||
(You may prefer to use `sample-alt.tex` instead; please read both sections before proceeding.)
|
||||
|
||||
This is the original sample template file. The right sidebar is actually a _marginpar_, so it doesn't support footnote and cannot automatically break across pages if it's too long. You would need to split your right sidebar contents into separate files e.g. `p1sidebar.tex` and `p2sidebar.tex`, and insert them as the optional argument of the `\cvsection{...}` that you want to align them with:
|
||||
|
||||
```latex
|
||||
\cvsection[p1sidebar]{Experience}
|
||||
...
|
||||
... END OF FIRST PAGE OF YOUR CV ...
|
||||
\cvsection[page2sidebar]{Publications}
|
||||
...
|
||||
```
|
||||
|
||||
This assumes that the next page's main column would start immediately with a `\cvsection`, so that the top of your right sidebar contents also appear at the top of the page. Now if the _next_ page doesn't start with a `\cvsection` but you'd still like to add a sidebar, then use this command on the _current_ page to add it. The optional argument lets you pull up the sidebar a bit so that it looks aligned with the top of the main column:
|
||||
|
||||
```latex
|
||||
\addnextpagesidebar[-1ex]{page3sidebar}
|
||||
```
|
||||
|
||||
If you want to change the left and right columns' widths, you'll need to tinker with the `right` (distance from paper's right edge until the main column's right edge) and `marginparwidth` (width of the right sidebar) options in the `\geometry` line. For example, to make the right sidebar wider by 2cm, you could use
|
||||
|
||||
```latex
|
||||
%% original was right=9cm, marginparwidth=6.8cm
|
||||
\geometry{left=1cm,right=11cm,marginparwidth=8.8cm,marginparsep=1.2cm,top=1cm,bottom=1cm}
|
||||
```
|
||||
as well as doing a bit of arithmetic when you're making the header to get it full-width, i.e. reducing the sidebar by 2cm and extending the main column by 2cm.
|
||||
|
||||
```latex
|
||||
\begin{adjustwidth}{}{-10cm} %% original was -8cm
|
||||
\makecvheader
|
||||
\end{adjustwidth}
|
||||
```
|
||||
|
||||
### `sample-alt.tex` [ADDED 2 FEBRUARY 2020]
|
||||
Many users have overlooked the optional argument of `\cvsection` to insert the right sidebar contents, and often confused that the right sidebar doesn't automatically break across pages. This new layout uses the `paracol` package for typesetting the left and right columns that _can_ break across pages. It also makes changing the column widths easier:
|
||||
|
||||
```latex
|
||||
%% Set the left/right column width ratio to 6:4.
|
||||
\columnratio{0.6}
|
||||
|
||||
% Start a 2-column paracol. Both the left and right columns will automatically
|
||||
% break across pages if things get too long.
|
||||
\begin{paracol}{2}
|
||||
\cvsection{Experience}
|
||||
...
|
||||
... END OF LEFT COLUMN CONTENTS ...
|
||||
|
||||
% Now switch to the right column.
|
||||
\switchcolumn
|
||||
\cvsection{Education}
|
||||
...
|
||||
...END OF RIGHT COLUMN CONTENTS ...
|
||||
\end{paracol}
|
||||
```
|
||||
You can also use `\swithcolumn*` for "synchronising" the columns, as well as other commands from the `paracol` package. See the [`paracol` package documentation](http://texdoc.net/pkg/paracol) for further details.
|
418
altacv.cls
Normal file
418
altacv.cls
Normal file
|
@ -0,0 +1,418 @@
|
|||
%%%%%%%%%%%%%%%%%
|
||||
% This is altacv.cls (v1.3.2, 17 May 2020) written by
|
||||
% LianTze Lim (liantze@gmail.com).
|
||||
%
|
||||
%% 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.
|
||||
%%
|
||||
%%
|
||||
% Contributions:
|
||||
% - https://github.com/akreuzer Added ragged2e option (5 Nov 2018)
|
||||
% - https://github.com/stefanogermano Fixed bad boxes and undefined font shape (July 2018)
|
||||
% - https://github.com/foohyfooh Fixed blank spaces in \cvevent and bad link in README.md (June 2018)
|
||||
|
||||
%%%%%%%%%%%%%%%%
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesClass{altacv}[2020/05/17 AltaCV v1.3.2, yet another alternative class for a resume/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}}
|
||||
\newif\if@raggedtwoe
|
||||
\DeclareOption{ragged2e}{\@raggedtwoetrue}
|
||||
%% v1.3: load hyperref for clickable hyperlinks
|
||||
\newif\if@withhyper
|
||||
\DeclareOption{withhyper}{\@withhypertrue}
|
||||
\ProcessOptions\relax
|
||||
|
||||
\LoadClass{article}
|
||||
%% v1.3.2 Hopefully this helps make the PDF
|
||||
%% file more 'friendly' with copy-paste etc
|
||||
\RequirePackage[a-1b]{pdfx}
|
||||
\RequirePackage[margin=2cm]{geometry}
|
||||
\RequirePackage[fixed]{fontawesome5}
|
||||
\RequirePackage{ifxetex,ifluatex}
|
||||
\RequirePackage{scrlfile}
|
||||
\RequirePackage{xparse}
|
||||
|
||||
%% v1.1.5: added for convenience
|
||||
\newif\ifxetexorluatex
|
||||
\ifxetex
|
||||
\xetexorluatextrue
|
||||
\else
|
||||
\ifluatex
|
||||
\xetexorluatextrue
|
||||
\else
|
||||
\xetexorluatexfalse
|
||||
\fi
|
||||
\fi
|
||||
|
||||
\ifxetexorluatex
|
||||
\RequirePackage{fontspec}
|
||||
\else
|
||||
%% v1.3.2 attempts to make ligatures
|
||||
%% copy-paste as normal characters
|
||||
\RequirePackage{cmap}
|
||||
\RequirePackage[utf8]{inputenc}
|
||||
\RequirePackage[T1]{fontenc}
|
||||
\input{glyphtounicode}
|
||||
\pdfglyphtounicode{f_f}{FB00}
|
||||
\pdfglyphtounicode{f_f_i}{FB03}
|
||||
\pdfglyphtounicode{f_f_l}{FB04}
|
||||
\pdfglyphtounicode{f_i}{FB01}
|
||||
\pdfgentounicode=1
|
||||
\fi
|
||||
|
||||
%% v1.1: Optionally load academicons
|
||||
%% v1.1.5: Handle different versions of academicons
|
||||
\if@academicons
|
||||
\ifxetexorluatex
|
||||
\RequirePackage{fontspec}
|
||||
%% academicons in TL2018 doesn't require
|
||||
%% Academicons to be installed in OS fonts
|
||||
%% so can be loaded directly
|
||||
\@ifl@t@r\fmtversion{2018/04/01}{%
|
||||
\RequirePackage{academicons}
|
||||
}{%
|
||||
% TL2017
|
||||
\@ifl@t@r\fmtversion{2017/04/01}{%
|
||||
\@ifpackagelater{academicons}{2018/03/01}{%
|
||||
\RequirePackage{academicons}
|
||||
}{%
|
||||
\let\ori@newfontfamily\newfontfamily%
|
||||
\renewcommand{\newfontfamily}[2]{}
|
||||
\RequirePackage{academicons}
|
||||
\let\newfontfamily\ori@newfontfamily
|
||||
\newfontfamily{\AI}{academicons.ttf}
|
||||
}
|
||||
}{% TL2016 requires the package to be loaded before
|
||||
% the version can be checked. Only added because
|
||||
% Overleaf v1 still runs TL2016; will be removed
|
||||
% when v1 is completely retired.
|
||||
\let\ori@newfontfamily\newfontfamily%
|
||||
\renewcommand{\newfontfamily}[2]{}
|
||||
\RequirePackage{academicons}
|
||||
\let\newfontfamily\ori@newfontfamily
|
||||
\newfontfamily{\AI}{academicons.ttf}
|
||||
}
|
||||
}
|
||||
\else
|
||||
\ClassError{AltaCV}{academicons unsupported by latex or pdflatex. Please compile with xelatex or lualatex}{Please compile with xelatex or lualatex to use the academicons option}
|
||||
\fi
|
||||
\fi
|
||||
|
||||
\if@raggedtwoe
|
||||
\RequirePackage[newcommands]{ragged2e}
|
||||
\fi
|
||||
|
||||
\if@withhyper
|
||||
\AtBeginDocument{%
|
||||
\RequirePackage{hyperref}
|
||||
\hypersetup{hidelinks}
|
||||
\urlstyle{same}
|
||||
}
|
||||
\fi
|
||||
|
||||
\RequirePackage{xcolor}
|
||||
|
||||
\colorlet{accent}{blue!70!black}
|
||||
\colorlet{emphasis}{black}
|
||||
\colorlet{heading}{black}
|
||||
\colorlet{headingrule}{black}
|
||||
\colorlet{subheading}{emphasis}
|
||||
\colorlet{body}{black!80!white}
|
||||
\colorlet{name}{heading}
|
||||
\colorlet{tagline}{accent}
|
||||
\newcommand{\itemmarker}{{\small\textbullet}}
|
||||
\newcommand{\ratingmarker}{\faCircle}
|
||||
|
||||
\RequirePackage{tikz}
|
||||
\usetikzlibrary{arrows}
|
||||
\RequirePackage[skins]{tcolorbox}
|
||||
\RequirePackage[inline]{enumitem}
|
||||
\setlist{leftmargin=*,labelsep=0.5em,nosep,itemsep=0.25\baselineskip,after=\vspace{0.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}}
|
||||
|
||||
%% v1.3.1 \detokenize will break UTF-8 in pdflatex
|
||||
%% Using alternative from https://tex.stackexchange.com/a/530911/226
|
||||
\newcommand{\utffriendlydetokenize}[1]{%
|
||||
\scantokens{%
|
||||
\catcode`\_=12%
|
||||
% \catcode`\^=12%
|
||||
% \catcode`\{=12%
|
||||
% \catcode`\}=12%
|
||||
\catcode`\&=12%
|
||||
\catcode`\$=12%
|
||||
\catcode`\#=12%
|
||||
\catcode`\~=12%
|
||||
% \catcode`\\=12%
|
||||
{#1}%
|
||||
}%
|
||||
}
|
||||
%% v1.3: Incorporating hyperlinks
|
||||
%% v1.3.1: using \unfriendlydetokenize to avoid
|
||||
%% breaking unicode
|
||||
\ExplSyntaxOn
|
||||
\NewDocumentCommand{\printinfo}{m m o}{%
|
||||
\IfNoValueTF{#3}{%
|
||||
\mbox{\textcolor{accent}{\normalfont #1}~\utffriendlydetokenize{#2}\hspace{2em}}%
|
||||
}{%
|
||||
\if@withhyper%
|
||||
\mbox{\textcolor{accent}{\normalfont #1}~
|
||||
\href{#3}{\utffriendlydetokenize{#2}}\hspace{2em}}
|
||||
\else%
|
||||
\ClassWarning{Please specify [withhyper] option to enable hyperlinks. Printing out full hyperlink prefix #1 for now.}%
|
||||
\mbox{\textcolor{accent}{\normalfont #1}~{\utffriendlydetokenize{#3#2}}\hspace{2em}}%
|
||||
\fi%
|
||||
}%
|
||||
}%
|
||||
|
||||
%% v1.3: Exploring convenient creation of fields
|
||||
\NewDocumentCommand{\NewInfoField}{m m o}{%
|
||||
\IfNoValueF{#3}{\csdef{#1 hyperprefix}{#3}}%
|
||||
\csdef{#1 symbol}{#2}%
|
||||
\csdef{#1}##1{%
|
||||
\if@withhyper
|
||||
\IfNoValueTF {#3}
|
||||
{\printinfo{\csuse{#1 symbol}}{##1}}%
|
||||
{\printinfo{\csuse{#1 symbol}}{##1}[\csuse{#1 hyperprefix}##1]}%
|
||||
\else
|
||||
\printinfo{\csuse{#1 symbol}}{##1}%
|
||||
\fi%
|
||||
}
|
||||
}
|
||||
\ExplSyntaxOff
|
||||
|
||||
\newcommand{\name}[1]{\def\@name{#1}}
|
||||
\newcommand{\tagline}[1]{\def\@tagline{#1}}
|
||||
\newcommand{\personalinfo}[1]{\def\@personalinfo{#1}}
|
||||
\NewInfoField{email}{\faAt}[mailto:]
|
||||
\NewInfoField{mailaddress}{\faEnvelope}
|
||||
\NewInfoField{phone}{\faPhone}
|
||||
\NewInfoField{homepage}{\faGlobe}[https://]
|
||||
\NewInfoField{twitter}{\faTwitter}[https://twitter.com/]
|
||||
\NewInfoField{youtube}{\faYoutube}[https://youtube.com/c/]
|
||||
\NewInfoField{linkedin}{\faLinkedin}[https://linkedin.com/in/]
|
||||
\NewInfoField{github}{\faGithub}[https://github.com/]
|
||||
\NewInfoField{orcid}{\aiOrcid}[https://orcid.com/]
|
||||
\NewInfoField{itch}{\faItchIo}[https://]
|
||||
\NewInfoField{location}{\faMapMarker}
|
||||
|
||||
% v1.2: Support for multiple photos
|
||||
\newlength{\altacv@photos@width}
|
||||
\newlength{\altacv@photo@diam@left}
|
||||
\newlength{\altacv@photo@diam@right}
|
||||
\def\altacv@left@photos{}
|
||||
\def\altacv@right@photos{}
|
||||
|
||||
\newcommand{\@makeaphoto}[2]{%
|
||||
\begin{minipage}{#1}%
|
||||
\if@normalphoto
|
||||
\includegraphics[width=\linewidth]{#2}
|
||||
\else
|
||||
\tikz\path[fill overzoom image={#2}]circle[radius=0.5\linewidth];
|
||||
\fi%
|
||||
\end{minipage}%
|
||||
}
|
||||
|
||||
\newcommand{\altacv@add@photo@left}[1]{%
|
||||
\appto{\altacv@left@photos}{%
|
||||
\@makeaphoto{\altacv@photo@diam@left}{#1}\hspace{1ex}%
|
||||
}%
|
||||
\addtolength{\altacv@photos@width}{\altacv@photo@diam@left}%
|
||||
\addtolength{\altacv@photos@width}{1ex}%
|
||||
}
|
||||
\newcommand{\altacv@add@photo@right}[1]{%
|
||||
\appto{\altacv@right@photos}{%
|
||||
\@makeaphoto{\altacv@photo@diam@right}{#1}\hspace{1ex}%
|
||||
}%
|
||||
\addtolength{\altacv@photos@width}{\altacv@photo@diam@right}%
|
||||
\addtolength{\altacv@photos@width}{1ex}%
|
||||
}
|
||||
\newcommand{\photoL}[2]{%
|
||||
\setlength{\altacv@photo@diam@left}{#1}%
|
||||
\forcsvlist{\altacv@add@photo@left}{#2}%
|
||||
}
|
||||
\newcommand{\photoR}[2]{%
|
||||
\setlength{\altacv@photo@diam@right}{#1}%
|
||||
\forcsvlist{\altacv@add@photo@right}{#2}%
|
||||
}
|
||||
\let\photo\photoR
|
||||
|
||||
\newcommand{\namefont}{\Huge\bfseries}
|
||||
\newcommand{\taglinefont}{\large\bfseries}
|
||||
\newcommand{\personalinfofont}{\footnotesize\bfseries}
|
||||
\newcommand{\cvsectionfont}{\LARGE\bfseries}
|
||||
\newcommand{\cvsubsectionfont}{\large\bfseries}
|
||||
|
||||
\newcommand{\makecvheader}{%
|
||||
\begingroup
|
||||
\altacv@left@photos\hfill%
|
||||
\begin{minipage}{\dimexpr\linewidth-\altacv@photos@width}%
|
||||
\raggedright%
|
||||
{\namefont\color{name}\MakeUppercase{\@name}\par}
|
||||
\medskip
|
||||
{\taglinefont\color{tagline}\@tagline\par}
|
||||
\medskip
|
||||
{\personalinfofont\@personalinfo\par}
|
||||
\end{minipage}\hfill%
|
||||
\altacv@right@photos\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}\cvsectionfont\MakeUppercase{#2}}\\[-1ex]%
|
||||
{\color{headingrule}\rule{\linewidth}{2pt}\par}\medskip
|
||||
}
|
||||
|
||||
\newcommand{\cvsubsection}[1]{%
|
||||
\smallskip%
|
||||
{\color{subheading}\cvsubsectionfont{#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.5\linewidth][l]{\faCalendar~#3}}}%
|
||||
\ifstrequal{#4}{}{}{{\small\makebox[0.5\linewidth][l]{\faMapMarker~#4}}}\par
|
||||
\medskip\normalsize
|
||||
}
|
||||
|
||||
\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=1ex,inner ysep =0.75ex,text height=1.5ex,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.35em,align=left]
|
||||
\item[\small\normalfont\emailsymbol] #2
|
||||
\item[\small\normalfont\mailaddresssymbol] #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
|
||||
}
|
22
main.aux
Normal file
22
main.aux
Normal file
|
@ -0,0 +1,22 @@
|
|||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\abx@aux@refcontext{ydnt/global//global/global}
|
||||
\@writefile{toc}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||
\@writefile{lof}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
||||
\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
|
0
main.out
Normal file
0
main.out
Normal file
BIN
main.pdf
Normal file
BIN
main.pdf
Normal file
Binary file not shown.
85
main.run.xml
Normal file
85
main.run.xml
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" standalone="yes"?>
|
||||
<!-- logreq request file -->
|
||||
<!-- logreq version 1.0 / dtd version 1.0 -->
|
||||
<!-- Do not edit this file! -->
|
||||
<!DOCTYPE requests [
|
||||
<!ELEMENT requests (internal | external)*>
|
||||
<!ELEMENT internal (generic, (provides | requires)*)>
|
||||
<!ELEMENT external (generic, cmdline?, input?, output?, (provides | requires)*)>
|
||||
<!ELEMENT cmdline (binary, (option | infile | outfile)*)>
|
||||
<!ELEMENT input (file)+>
|
||||
<!ELEMENT output (file)+>
|
||||
<!ELEMENT provides (file)+>
|
||||
<!ELEMENT requires (file)+>
|
||||
<!ELEMENT generic (#PCDATA)>
|
||||
<!ELEMENT binary (#PCDATA)>
|
||||
<!ELEMENT option (#PCDATA)>
|
||||
<!ELEMENT infile (#PCDATA)>
|
||||
<!ELEMENT outfile (#PCDATA)>
|
||||
<!ELEMENT file (#PCDATA)>
|
||||
<!ATTLIST requests
|
||||
version CDATA #REQUIRED
|
||||
>
|
||||
<!ATTLIST internal
|
||||
package CDATA #REQUIRED
|
||||
priority (9) #REQUIRED
|
||||
active (0 | 1) #REQUIRED
|
||||
>
|
||||
<!ATTLIST external
|
||||
package CDATA #REQUIRED
|
||||
priority (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8) #REQUIRED
|
||||
active (0 | 1) #REQUIRED
|
||||
>
|
||||
<!ATTLIST provides
|
||||
type (static | dynamic | editable) #REQUIRED
|
||||
>
|
||||
<!ATTLIST requires
|
||||
type (static | dynamic | editable) #REQUIRED
|
||||
>
|
||||
<!ATTLIST file
|
||||
type CDATA #IMPLIED
|
||||
>
|
||||
]>
|
||||
<requests version="1.0">
|
||||
<internal package="biblatex" priority="9" active="1">
|
||||
<generic>latex</generic>
|
||||
<provides type="dynamic">
|
||||
<file>main.bcf</file>
|
||||
</provides>
|
||||
<requires type="dynamic">
|
||||
<file>main.bbl</file>
|
||||
</requires>
|
||||
<requires type="static">
|
||||
<file>blx-dm.def</file>
|
||||
<file>blx-compat.def</file>
|
||||
<file>biblatex.def</file>
|
||||
<file>standard.bbx</file>
|
||||
<file>authoryear.bbx</file>
|
||||
<file>authoryear.cbx</file>
|
||||
<file>biblatex.cfg</file>
|
||||
<file>english.lbx</file>
|
||||
</requires>
|
||||
</internal>
|
||||
<external package="biblatex" priority="5" active="1">
|
||||
<generic>biber</generic>
|
||||
<cmdline>
|
||||
<binary>biber</binary>
|
||||
<infile>main</infile>
|
||||
</cmdline>
|
||||
<input>
|
||||
<file>main.bcf</file>
|
||||
</input>
|
||||
<output>
|
||||
<file>main.bbl</file>
|
||||
</output>
|
||||
<provides type="dynamic">
|
||||
<file>main.bbl</file>
|
||||
</provides>
|
||||
<requires type="dynamic">
|
||||
<file>main.bcf</file>
|
||||
</requires>
|
||||
<requires type="editable">
|
||||
<file>sample.bib</file>
|
||||
</requires>
|
||||
</external>
|
||||
</requests>
|
381
main.tex
Normal file
381
main.tex
Normal file
|
@ -0,0 +1,381 @@
|
|||
%%%%%%%%%%%%%%%%%
|
||||
% This is an sample CV template created using altacv.cls
|
||||
% (v1.3, 10 May 2020) written by LianTze Lim (liantze@gmail.com). Now compiles with pdfLaTeX, XeLaTeX and LuaLaTeX.
|
||||
%
|
||||
%% 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.
|
||||
%%%%%%%%%%%%%%%%
|
||||
|
||||
%% If you need to pass whatever options to xcolor
|
||||
\PassOptionsToPackage{dvipsnames}{xcolor}
|
||||
|
||||
%% If you are using \orcid or academicons
|
||||
%% icons, make sure you have the academicons
|
||||
%% option here, and compile with XeLaTeX
|
||||
%% or LuaLaTeX.
|
||||
% \documentclass[10pt,a4paper,academicons]{altacv}
|
||||
|
||||
%% Use the "normalphoto" option if you want a normal photo instead of cropped to a circle
|
||||
% \documentclass[10pt,a4paper,normalphoto]{altacv}
|
||||
|
||||
\documentclass[10pt,a4paper,ragged2e,withhyper]{altacv}
|
||||
|
||||
%% AltaCV uses the fontawesome5 and academicons fonts
|
||||
%% and packages.
|
||||
%% See http://texdoc.net/pkg/fontawesome5 and http://texdoc.net/pkg/academicons for full list of symbols. You MUST compile with XeLaTeX or LuaLaTeX if you want to use academicons.
|
||||
|
||||
% Change the page layout if you need to
|
||||
\geometry{left=1.25cm,right=1.25cm,top=1.5cm,bottom=1.5cm,columnsep=1.2cm}
|
||||
|
||||
% The paracol package lets you typeset columns of text in parallel
|
||||
\usepackage{paracol}
|
||||
\usepackage{graphicx,wrapfig}
|
||||
|
||||
% Change the font if you want to, depending on whether
|
||||
% you're using pdflatex or xelatex/lualatex
|
||||
\ifxetexorluatex
|
||||
% If using xelatex or lualatex:
|
||||
\setmainfont{Roboto Slab}
|
||||
\setsansfont{Lato}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
\else
|
||||
% If using pdflatex:
|
||||
\usepackage[rm]{roboto}
|
||||
\usepackage[defaultsans]{lato}
|
||||
% \usepackage{sourcesanspro}
|
||||
\renewcommand{\familydefault}{\sfdefault}
|
||||
\fi
|
||||
|
||||
% Change the colours if you want to
|
||||
\definecolor{Black}{HTML}{000000}
|
||||
% \definecolor{SlateGrey}{HTML}{2E2E2E}
|
||||
% \definecolor{LightGrey}{HTML}{666666}
|
||||
% \definecolor{DarkPastelRed}{HTML}{450808}
|
||||
% \definecolor{PastelRed}{HTML}{8F0D0D}
|
||||
% \definecolor{GoldenEarth}{HTML}{E7D192}
|
||||
\colorlet{name}{black}
|
||||
\colorlet{tagline}{Black}
|
||||
\colorlet{heading}{Black}
|
||||
\colorlet{headingrule}{Black}
|
||||
\colorlet{subheading}{Black}
|
||||
\colorlet{accent}{Black}
|
||||
\colorlet{emphasis}{Black}
|
||||
\colorlet{body}{Black}
|
||||
|
||||
% Change some fonts, if necessary
|
||||
\renewcommand{\namefont}{\Huge\rmfamily\bfseries}
|
||||
\renewcommand{\personalinfofont}{\footnotesize}
|
||||
\renewcommand{\cvsectionfont}{\LARGE\rmfamily\bfseries}
|
||||
\renewcommand{\cvsubsectionfont}{\large\bfseries}
|
||||
|
||||
|
||||
% Change the bullets for itemize and rating marker
|
||||
% for \cvskill if you want to
|
||||
\renewcommand{\itemmarker}{{\small\textbullet}}
|
||||
\renewcommand{\ratingmarker}{\faCircle}
|
||||
|
||||
%% sample.bib contains your publications
|
||||
\addbibresource{sample.bib}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%% Depending on your tastes, you may want to make fonts of itemize environments slightly smaller
|
||||
\AtBeginEnvironment{itemize}{\small}
|
||||
|
||||
%% Set the left/right column width ratio to 6:4.
|
||||
\columnratio{0.6}
|
||||
|
||||
% Start a 2-column paracol. Both the left and right columns will automatically
|
||||
% break across pages if things get too long.
|
||||
\begin{paracol}{2}
|
||||
|
||||
\name{Kevin Cui}
|
||||
\tagline{}
|
||||
%% You can add multiple photos on the left or right
|
||||
% \photoR{2.8cm}{Globe_High}
|
||||
% \photoL{2.5cm}{Yacht_High,Suitcase_High}
|
||||
|
||||
\personalinfo{%
|
||||
% Not all of these are required!
|
||||
\email{kevinjycui@protonmail.com}
|
||||
\homepage{www.kevincui.dev}
|
||||
|
||||
\linkedin{kevinjycui}
|
||||
\github{kevinjycui}
|
||||
\itch{junferno.itch.io}
|
||||
\youtube{Junferno}
|
||||
%% You MUST add the academicons option to \documentclass, then compile with LuaLaTeX or XeLaTeX, if you want to use \orcid or other academicons commands.
|
||||
% \orcid{0000-0000-0000-0000}
|
||||
%% You can add your own arbtrary detail with
|
||||
%% \printinfo{symbol}{detail}[optional hyperlink prefix]
|
||||
% \printinfo{\faPaw}{Hey ho!}[https://example.com/]
|
||||
%% Or you can declare your own field with
|
||||
%% \NewInfoFiled{fieldname}{symbol}[optional hyperlink prefix] and use it:
|
||||
% \NewInfoField{gitlab}{\faGitlab}[https://gitlab.com/]
|
||||
% \gitlab{your_id}
|
||||
}
|
||||
|
||||
\makecvheader
|
||||
|
||||
\cvsection{Experience}
|
||||
|
||||
\cvevent{Data Engineer Intern, Technology \& Operations}{RBC Royal Bank of Canada}{Jul 2021 -- Aug 2021}{Toronto, ON}
|
||||
\begin{itemize}
|
||||
\item Data provisioning in Hadoop, data pipeline automation with Python and Java, full-stack application development for database web portal in Express, documentation generation using SQL and JDBC
|
||||
|
||||
\item Worked in an Agile team of 6, collaborating and communicating with other teams in different disciplines
|
||||
|
||||
\end{itemize}
|
||||
\cvtag{Hadoop}
|
||||
\cvtag{HDFS}
|
||||
\cvtag{Java}
|
||||
\cvtag{Maven}
|
||||
\cvtag{Python}
|
||||
\cvtag{SQL}
|
||||
\cvtag{JDBC}
|
||||
\cvtag{Node.js}
|
||||
\cvtag{JavaScript}
|
||||
\cvtag{Express}
|
||||
\cvtag{Git}
|
||||
\cvtag{Jenkins}
|
||||
\cvtag{Windows}
|
||||
|
||||
\divider
|
||||
|
||||
\cvevent{Innovation Developer Intern, Technology \& Operations}{RBC Royal Bank of Canada}{Jul 2020 -- Aug 2020}{Toronto, ON}
|
||||
\begin{itemize}
|
||||
\item Full stack software development building internal applications: retrospectives web application with React front-end and Express back-end
|
||||
|
||||
\item Led an Agile team of 4 as a returning intern, helping new developers get setup, moderated and managed changes from team
|
||||
|
||||
\item Moderated source control, reviewed, tested, and debugged changes from all other development teams to new releases
|
||||
|
||||
\item Conducted usability testing, moderated test sessions with design teams, presented and demonstrated solutions to senior executives
|
||||
\end{itemize}
|
||||
\cvtag{React}
|
||||
\cvtag{Node.js}
|
||||
\cvtag{TypeScript}
|
||||
\cvtag{Express}
|
||||
\cvtag{Git}
|
||||
\cvtag{Windows}
|
||||
|
||||
\divider
|
||||
|
||||
\cvevent{Innovation Developer Intern, Technology \& Operations}{RBC Royal Bank of Canada}{Jul 2019 -- Aug 2019}{Toronto, ON}
|
||||
\cvtag{Node.js}
|
||||
\cvtag{TypeScript}
|
||||
\cvtag{Java}
|
||||
\cvtag{Git}
|
||||
\cvtag{Angular}
|
||||
\cvtag{Spring}
|
||||
\cvtag{SQL}
|
||||
|
||||
\cvsection{Projects}
|
||||
|
||||
% \begin{wrapfigure}[1]{r}[-25pt]{1.5cm}
|
||||
% \vspace{-15pt}
|
||||
% \includegraphics[width=1.5cm]{icon_transparent.png}
|
||||
% \end{wrapfigure}
|
||||
|
||||
\cvevent{LUSK}{3D wall-crawling game (McGameJam '23)}{January 2023 \github{kevinjycui/LUSK}}{}
|
||||
\begin{itemize}
|
||||
|
||||
\item Programmed movement, environment, and animation
|
||||
|
||||
\end{itemize}
|
||||
\cvtag{C\#}
|
||||
\cvtag{Unity}
|
||||
\cvtag{Blender}
|
||||
\cvtag{.NET}
|
||||
\cvtag{Visual Studio}
|
||||
\cvtag{Git}
|
||||
|
||||
\divider
|
||||
|
||||
\cvevent{Wayward Bones}{2D digging + platformer game (McGameJam '22 Audio Winner)}{May 2022 \github{kevinjycui/WaywardBones}}{}
|
||||
\begin{itemize}
|
||||
|
||||
\item Programmed entity movement, player controls/attack system, in-game enemy boss animation cycles and particles fitted to attack patterns
|
||||
|
||||
\item Fixed bugs in other stages, moderated source control, collaborating with artists and sound designers
|
||||
|
||||
\end{itemize}
|
||||
\cvtag{C\#}
|
||||
\cvtag{Unity}
|
||||
\cvtag{.NET}
|
||||
\cvtag{Visual Studio}
|
||||
\cvtag{Git}
|
||||
|
||||
% \cvsection{A Day of My Life}
|
||||
|
||||
% % Adapted from @Jake's answer from http://tex.stackexchange.com/a/82729/226
|
||||
% % \wheelchart{outer radius}{inner radius}{
|
||||
% % comma-separated list of value/text width/color/detail}
|
||||
% \wheelchart{1.5cm}{0.5cm}{%
|
||||
% 6/8em/accent!30/{Sleep,\\beautiful sleep},
|
||||
% 3/8em/accent!40/Hopeful novelist by night,
|
||||
% 8/8em/accent!60/Daytime job,
|
||||
% 2/10em/accent/Sports and relaxation,
|
||||
% 5/6em/accent!20/Spending time with family
|
||||
% }
|
||||
|
||||
% use ONLY \newpage if you want to force a page break for
|
||||
% ONLY the current column
|
||||
\newpage
|
||||
|
||||
% \cvsection{Publications}
|
||||
|
||||
% \nocite{*}
|
||||
|
||||
% \printbibliography[heading=pubtype,title={\printinfo{\faBook}{Books}},type=book]
|
||||
|
||||
% \divider
|
||||
|
||||
% \printbibliography[heading=pubtype,title={\printinfo{\faFile*[regular]}{Journal Articles}},type=article]
|
||||
|
||||
% \divider
|
||||
|
||||
% \printbibliography[heading=pubtype,title={\printinfo{\faUsers}{Conference Proceedings}},type=inproceedings]
|
||||
|
||||
%% Switch to the right column. This will now automatically move to the second
|
||||
%% page if the content is too long.
|
||||
\switchcolumn
|
||||
|
||||
% \cvsection{My Life Philosophy}
|
||||
|
||||
% \begin{quote}
|
||||
% ``Something smart or heartfelt, preferably in one sentence.''
|
||||
% \end{quote}
|
||||
|
||||
|
||||
\cvevent{Donkey Kong Bongo to Key}{Keyboard \& mouse interface for the DK Bongos for GameCube}{Sept 2021 \github{kevinjycui/DKBongoToKey}}{}
|
||||
\cvtag{C++}
|
||||
\cvtag{SDL}
|
||||
\cvtag{DirectX (DirectInput)}
|
||||
|
||||
\divider
|
||||
|
||||
\cvevent{Desmos Renderer}{Fun graphing calculator art tool}{Apr 2021 \github{kevinjycui/DesmosBezierRenderer}}{}
|
||||
\cvtag{Python}
|
||||
\cvtag{OpenCV}
|
||||
\cvtag{Flask}
|
||||
\cvtag{HTML}
|
||||
\cvtag{JavaScript}
|
||||
\cvtag{FFmpeg}
|
||||
|
||||
\divider
|
||||
|
||||
\cvevent{Practice Bot}{Competitive programming utility bot}{Mar 2020 -- Jul 2021 \github{kevinjycui/Practice-Bot}}{}
|
||||
\cvtag{Python}
|
||||
\cvtag{MariaDB}
|
||||
\cvtag{discord.py}
|
||||
\cvtag{AWS}
|
||||
|
||||
\cvsection{Education}
|
||||
|
||||
\cvevent{McGill University}{Candidate for B.Sc.\ in Computer Science}{2020 -- 2024}{Montreal, QC}
|
||||
CGPA: 3.8/4.0
|
||||
|
||||
VP Finance, Game Dev Student's Society
|
||||
|
||||
\cvtag{Java}
|
||||
\cvtag{C}
|
||||
\cvtag{C++}
|
||||
\cvtag{Python}
|
||||
\cvtag{Maven}
|
||||
\cvtag{Unity}
|
||||
\cvtag{Docker}
|
||||
\cvtag{Spring}
|
||||
\cvtag{x86 Assembly}
|
||||
|
||||
\cvsection{Skills}
|
||||
|
||||
\cvevent{Programming \& Other Languages}{}{}{}
|
||||
\cvtag{C++}
|
||||
\cvtag{C}
|
||||
\cvtag{Python}
|
||||
\cvtag{C\#}
|
||||
\cvtag{Java}
|
||||
\cvtag{JavaScript}
|
||||
\cvtag{Bash}
|
||||
\cvtag{Go}
|
||||
\cvtag{GLSL}
|
||||
\cvtag{TypeScript}
|
||||
\cvtag{Lua}
|
||||
\cvtag{Scala}
|
||||
\cvtag{SQL}
|
||||
\cvtag{HTML+CSS}
|
||||
\cvtag{Arduino}
|
||||
\cvtag{x86 Assembly}
|
||||
\cvtag{MIPS Assembly}
|
||||
|
||||
\cvevent{Frameworks, Libs, \& Databases}{}{}{}
|
||||
\cvtag{OpenGL}
|
||||
\cvtag{SDL}
|
||||
\cvtag{.NET}
|
||||
\cvtag{Node.js}
|
||||
\cvtag{Maven}
|
||||
\cvtag{Spring}
|
||||
\cvtag{React}
|
||||
\cvtag{NumPy}
|
||||
\cvtag{Django}
|
||||
\cvtag{Hadoop}
|
||||
\cvtag{MariaDB}
|
||||
\cvtag{OpenCV}
|
||||
|
||||
\cvevent{Development Tools \& Environment}{}{}{}
|
||||
\cvtag{Git}
|
||||
\cvtag{Docker}
|
||||
\cvtag{Linux}
|
||||
\cvtag{Unity}
|
||||
\cvtag{GNU}
|
||||
\cvtag{Jenkins}
|
||||
\cvtag{Visual Studio}
|
||||
\cvtag{Vim}
|
||||
|
||||
\cvsection{Others}
|
||||
|
||||
\cvachievement{\faIcon{youtube}}{Silver Play Button}{I run a YouTube channel with >150K subscribers as of 2022 covering topics in niche software, game development, mathematics, audio processing, etc.
|
||||
|
||||
\homepage{youtube.com/c/Junferno}}
|
||||
|
||||
\medskip
|
||||
|
||||
% \cvsection{Languages}
|
||||
|
||||
% \cvskill{English}{5}
|
||||
% \divider
|
||||
|
||||
% \cvskill{Spanish}{4}
|
||||
% \divider
|
||||
|
||||
% \cvskill{German}{3}
|
||||
|
||||
% %% Yeah I didn't spend too much time making all the
|
||||
% %% spacing consistent... sorry. Use \smallskip, \medskip,
|
||||
% %% \bigskip, \vpsace etc to make ajustments.
|
||||
% \medskip
|
||||
|
||||
% \divider
|
||||
|
||||
% \cvsection{Referees}
|
||||
|
||||
% % \cvref{name}{email}{mailing address}
|
||||
% \cvref{Prof.\ Alpha Beta}{Institute}{a.beta@university.edu}
|
||||
% {Address Line 1\\Address line 2}
|
||||
|
||||
% \divider
|
||||
|
||||
% \cvref{Prof.\ Gamma Delta}{Institute}{g.delta@university.edu}
|
||||
% {Address Line 1\\Address line 2}
|
||||
|
||||
|
||||
\end{paracol}
|
||||
|
||||
|
||||
\end{document}
|
92
pdfa.xmpi
Normal file
92
pdfa.xmpi
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' ?>
|
||||
|
||||
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description rdf:about=""
|
||||
xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
|
||||
xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
|
||||
xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#"
|
||||
>
|
||||
<pdfaExtension:schemas>
|
||||
<rdf:Bag>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaSchema:namespaceURI>http://ns.adobe.com/pdfx/1.3/</pdfaSchema:namespaceURI>
|
||||
<pdfaSchema:prefix>pdfx</pdfaSchema:prefix>
|
||||
<pdfaSchema:schema>PDF/X Schema</pdfaSchema:schema>
|
||||
<pdfaSchema:property><rdf:Seq>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaProperty:category>external</pdfaProperty:category>
|
||||
<pdfaProperty:description>URL to an online version or preprint</pdfaProperty:description>
|
||||
<pdfaProperty:name>AuthoritativeDomain</pdfaProperty:name>
|
||||
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
|
||||
</rdf:li></rdf:Seq>
|
||||
</pdfaSchema:property>
|
||||
</rdf:li>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaSchema:namespaceURI>http://www.aiim.org/pdfua/ns/id/</pdfaSchema:namespaceURI>
|
||||
<pdfaSchema:prefix>pdfuaid</pdfaSchema:prefix>
|
||||
<pdfaSchema:schema>PDF/UA ID Schema</pdfaSchema:schema>
|
||||
<pdfaSchema:property><rdf:Seq>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaProperty:category>internal</pdfaProperty:category>
|
||||
<pdfaProperty:description>Part of PDF/UA standard</pdfaProperty:description>
|
||||
<pdfaProperty:name>part</pdfaProperty:name>
|
||||
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
|
||||
</rdf:li></rdf:Seq>
|
||||
</pdfaSchema:property>
|
||||
</rdf:li>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaSchema:schema>PRISM metadata</pdfaSchema:schema>
|
||||
<pdfaSchema:namespaceURI>http://prismstandard.org/namespaces/basic/2.2/</pdfaSchema:namespaceURI>
|
||||
<pdfaSchema:prefix>prism</pdfaSchema:prefix>
|
||||
<pdfaSchema:property><rdf:Seq>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaProperty:name>aggregationType</pdfaProperty:name>
|
||||
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
|
||||
<pdfaProperty:category>external</pdfaProperty:category>
|
||||
<pdfaProperty:description>The type of publication. If defined, must be one of book, catalog, feed, journal, magazine, manual, newsletter, pamphlet.</pdfaProperty:description>
|
||||
</rdf:li>
|
||||
<rdf:li rdf:parseType="Resource">
|
||||
<pdfaProperty:name>url</pdfaProperty:name>
|
||||
<pdfaProperty:valueType>URL</pdfaProperty:valueType>
|
||||
<pdfaProperty:category>external</pdfaProperty:category>
|
||||
<pdfaProperty:description>URL for the article or unit of content</pdfaProperty:description>
|
||||
</rdf:li>
|
||||
</rdf:Seq></pdfaSchema:property>
|
||||
</rdf:li>
|
||||
</rdf:Bag>
|
||||
</pdfaExtension:schemas>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
|
||||
<pdf:Producer>pdfTeX</pdf:Producer>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<dc:format>application/pdf</dc:format>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:prism="http://prismstandard.org/namespaces/basic/2.2/">
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">
|
||||
<pdfaid:part>1</pdfaid:part>
|
||||
<pdfaid:conformance>B</pdfaid:conformance>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
|
||||
<xmp:CreatorTool>LaTeX with hyperref</xmp:CreatorTool>
|
||||
<xmp:ModifyDate>2023-01-15T18:18:48+00:00</xmp:ModifyDate>
|
||||
<xmp:CreateDate>2023-01-15T18:18:48+00:00</xmp:CreateDate>
|
||||
<xmp:MetadataDate>2023-01-15T18:18:48+00:00</xmp:MetadataDate>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:xmpRights = "http://ns.adobe.com/xap/1.0/rights/">
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
|
||||
<xmpMM:DocumentID>uuid:DF005B57-2A06-8753-7167-92D8CE935460</xmpMM:DocumentID>
|
||||
<xmpMM:InstanceID>uuid:9DDDC2A3-D4C6-C214-F639-D52589B01863</xmpMM:InstanceID>
|
||||
</rdf:Description>
|
||||
</rdf:RDF>
|
||||
</x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end='w'?>
|
Loading…
Reference in a new issue