diff --git a/.github/workflows/github_action_build.yml b/.github/workflows/github_action_build.yml new file mode 100644 index 0000000..4d67811 --- /dev/null +++ b/.github/workflows/github_action_build.yml @@ -0,0 +1,52 @@ +name: LaTeX Build and Upload + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker Image + run: | + docker buildx build \ + --load \ + --cache-from=type=local,src=/tmp/.buildx-cache \ + --cache-to=type=local,dest=/tmp/.buildx-cache \ + -t latex-build . + + - name: Run Docker Container + run: docker run -v $(pwd):/latex_content --name latex-container latex-build /bin/sh -c "make pdf" + + - name: Copy PDF from Docker Container + run: docker cp latex-container:/latex_content/rendered.pdf output.pdf + + - name: Upload PDF as Artifact + uses: actions/upload-artifact@v4 + with: + name: compiled-pdf + path: output.pdf + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + if: ${{ contains(github.ref, 'tags') }} + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: output.pdf + asset_name: esteban_martinena_cv.pdf + tag: ${{ github.ref }} + overwrite: true + body: "Latest version of my CV." diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cc7ec26 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ + +# Use an official Ubuntu base image +FROM ubuntu:22.04 + +# Avoid prompts from apt +ENV DEBIAN_FRONTEND=noninteractive + +# Install LaTeX packages +RUN apt-get update && apt-get install -y \ + make \ + pandoc \ + texlive \ + texlive-bibtex-extra \ + texlive-fonts-extra \ + texlive-latex-base \ + texlive-latex-extra \ + texlive-luatex \ + texlive-pstricks \ + texlive-xetex \ + wget + +RUN wget --output-document=/usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && \ + chmod +x /usr/local/bin/yq && \ + yq --version + +# Set working directory +WORKDIR /latex_content + +# Note: For Font Awesome support, compile with LuaLaTeX instead of XeLaTeX +# Default command to compile the LaTeX document using XeLaTeX +# This command can be overridden when running the container +CMD ["make", "pdf"] diff --git a/Makefile b/Makefile index 4abd7ce..9f6bb26 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,29 @@ SHELL = /bin/sh -FILE0 = cv-piotr-kowalski +FILE0 = main +TEX_TEMPLATE = $(FILE0).template.tex TEX = $(FILE0).tex -XDV = $(FILE0).xdv PDF = $(FILE0).pdf -PDFOUT = $(FILE0)-encrypted.pdf +all: pdf -all: - make tex +pdf: + mkdir -p build/pdf/ + cp latex/* build/pdf/ + cp data.md build/pdf/ + wget --output-document=build/pdf/img.jpg $$(yq e '.image' data.md | grep https) -tex: - xelatex -no-pdf $(TEX) - xelatex -no-pdf $(TEX) - #xdvipdfmx.exe $(XDV) - xelatex $(TEX) - make clean -pw: - pdftk $(PDF) output $(PDFOUT) owner_pw ownerpasswd user_pw userpasswd compress encrypt_128bit + cd build/pdf/; \ + pandoc data.md --pdf-engine xelatex --template page1sidebar.template.tex -o page1sidebar.tex ; \ + pandoc data.md --pdf-engine xelatex --template page2sidebar.template.tex -o page2sidebar.tex ; \ + pandoc data.md --pdf-engine xelatex --template $(TEX_TEMPLATE) -o $(TEX) ; \ + xelatex -shell-escape -output-driver="xdvipdfmx -z 0" $(TEX) -help: - echo "USAGE: make [all/tex/handout/pw/clean]" + cp build/pdf/$(PDF) ./rendered.pdf + +clean-pdf: + rm -rf build/pdf/ clean: - rm -f *.aux *.dvi *.idx *.ilg *.ind *.log *.nav *.out *.snm *.xdv *.toc *.synctex.gz *~ + rm -rf build/ diff --git a/README.md b/README.md index 2751f0f..1df41a9 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,15 @@ This template I use for my own resume/CV. +```shell +docker build -t latex-cv . +docker run -v $(pwd):/latex_content latex-cv /bin/sh -c "make pdf" +#docker run -v $(pwd):/latex_content --name latex-container latex-cv /bin/sh -c "make pdf" +#docker cp latex-container:/latex_content/cv-piotr-kowalski.pdf output.pdf +#docker remove /latex-container +``` + -![CV Screenshot](cv-piotr-kowalski.png) ## Install pre-requisites (Windows) @@ -63,7 +70,7 @@ The elements comes from several templates, including: > MIT License -> Copyright (c) 2019 Piotr Kowalski +> Copyright (c) 2019 Esteban Martinena > Permission is hereby granted, free of charge, to any person obtaining a copy > of this software and associated documentation files (the "Software"), to deal diff --git a/cv-piotr-kowalski.pdf b/cv-piotr-kowalski.pdf deleted file mode 100644 index d5c52d8..0000000 Binary files a/cv-piotr-kowalski.pdf and /dev/null differ diff --git a/cv-piotr-kowalski.png b/cv-piotr-kowalski.png deleted file mode 100644 index ca5e68f..0000000 Binary files a/cv-piotr-kowalski.png and /dev/null differ diff --git a/data.md b/data.md new file mode 100644 index 0000000..a1cefe3 --- /dev/null +++ b/data.md @@ -0,0 +1,163 @@ +--- +personal_info: + name: Esteban Martinena + job_title: "Senior DevOps Engineer" +# job_title: "DevOps - SRE - Python & QT Developer" + email: info@emartinena.es + phone: + - +34 656 88 05 93 + location: "Cáceres, Spain" + linkedin: "linkedin.com/in/esteban-martinena/" + github: "github.com/orensbruli" +image: "https://lh3.googleusercontent.com/fife/AGXqzDlaHnxKLj6w_srgGzToVTjjfNuOhVOexF7vruAOJ2_UWwAJDtQCkQyNdOUgZPF3s2Hh88jx8Y272MxVZhFAHgafyyzeUoahCJ0ZYnpMsD099oT7QEl2gBIeOSrbsbZabkLeMo7jnqUKGW8VyIuBI1UwiEz1ycjekPxY7oujNE6DOF4_YQ0rGfHONAqu4cVg5Mp-C020Em72y2JxAvHPKQaoqYIWOhLYEdfpDSxd7bDmx5KdyJxUTdd8gqMMCdB6a8Wu1dgvQw8btgQdH6m2NlXyhDEhbkT6vQILlQy28yBpBoNbtuY4DtiBNmSjPx2w_1eIqS5fL--HXjko-fFV583WEjtS_OM1mNTfsWT7pElfabAZ6oYUKvrZSBOqzTKCfABWjtnZQhykxO6UTI27z3SPmsOMwQV8iU8ojRhg1JXH5n7JtlhYDFK5WSAufgH6b7Fk0F9Bg13LhQFtmaYTY4wVYPp7Rx1iLOZJy84PXeZdnGY7uNbVSBx9J-jGj05tFv2ZqoEu_B7EpGxZRoSXC4d-MGnUJeKj-fLDfCZz9GSGD4R3rQm8x7s1sFWzBLiHM5k3StsdM0pFLDCO95AZoXnN3dl3VG06wLfeTL9HqgNtDxZiH2cLrkyU5kV7MjB-0x044CrGbA4FzPDVePUIwQWhmTHF6_3VC8A8q3LFLYGXLIwIAFfb4tWau7wgsKCJbOYcpT-RX0YO2yEJanI005Uh-dbyU2pQ0Cf3tgAbIHlnxAy3qJAWAIuSIPsYrDazXOeEKLLy8-preGvVxgvIDQ7yx-pT-KGyKKU5A_TNd8_HVq8TxZfqNcjY9iA6ZndkNBHwxoh7Ur9u9HBV0Q5wGqXdwiVW9dHbEMZ_lpsjrYXwrG6uH-GKPlyx9QrfD5fS1MrcnS8vlk8tqSTzjfdNHt9fJd_t-WIpGdxoasacE8fAcpN7gK5WOdYoH4xMuuT-KDTlYfd7bdx4YSRqRq27_z06ukYkpnPrrBxUp1Lugbm1lSqc6lNwPml-Z2WQ5uC25f_RoXMJ_S57Zu3Z-_sN3qJNK2hSO8AFkg2bcX7EeVCyT4cuSDmSjnLHScLEeyDINe1t8E0HH9xI0cjzU0ziBrgNCwua6pREUhiYIT8hPzydUKcSpbX80S5CX-KgLpVy0gzX2XtrZqmCTSYwfJPrAo8k_DDq6eAQ66kEr8lQ6KiBikcDeTZeCThCbNq4IL-_87bhYyevSn35dqhwcfG2Efuyc4x3caPEcnAbF_iHeWnEcNpB8YRtyYuA9ChkL5r6n-me5wo1I2CCty78HaadndvVPw4Aju-ha-YHcvOQjr9w2O8c7yJ9ugMOyUDD5R8NO_kKqBA8OaR_wBPC29hnJqMJNC4l6pUJrro3CFXBD4HDaQQRegVr9Ez0pKF5F0E5JXmBgZVHO-tkKlHPdGNQTXAnj9L9dxEqTew46i7jsixpR5GbZMxsmHYU52JhxglEKleodNIc4fQSeEZzVXiE58PdIXvoirwoaEb75qlKdJGS_HNYJKPouLmrMQ=w996-h916" +education: + - degree: "BSc Computer Engineering" + institution: "Extremadura University" + duration: "06/2005 - 07/2007" + location: "Cáceres, Spain" + - degree: "MSc Computer Engineering" + institution: "Extremadura University" + duration: "06/2001 - 07/2007" + location: "Cáceres, Spain" +experiences: + - role: "DevOps" + company: "Open Robotics - RMF (Contractor)" + duration: "01/08/2022 - 14" + location: "Singapore (Remote)" + responsibilities: + - "DevOps for Open-RMF team" + - "Docker, Docker Swarm, Kubernetes" + - "Chef, Ansible, Argo CD" + - "Python3, Shell Script" + - "Debian Packaging" + - "Unit testing & Mock" + - "CI/CD, GitHub Actions, GitLab Pipelines" + - role: "Python Dev/DevOps" + company: "Univention (Contractor)" + duration: "01/09/2021 - 31/07/2022" + location: "Bremen, Germany (Remote)" + responsibilities: + - "Software developer for the core packages in Corporate Server Debian based distribution" + - "Develop of Azure MS connector with the LDAP background system" + - "Build and deploy Debian packages" + - "Python3, Shell Script" + - "Debian Packaging" + - "Unit testing & Mock" + - "Integration tests" + - "Docker, Docker Swarm" + - "GitHub Actions, GitLab Pipelines, CI/CD, Ansible" + - role: "Python Dev/DevOps" + company: "Gamma Solutions (Diggia)" + duration: "01/12/2020 - 31/08/2021" + location: "Cáceres, Spain (Remote)" + responsibilities: + - "DevOps for the project AUTONOMOUS DRIVING OF ELECTRIC VEHICLE FLEET within the 5G PILOT PROJECT: CITY OF CÁCERES" + - "Python developer for DSR architecture (Robocomp)" + - "Skills in Python3, C++, Qt, Shell Script" + - "Experience with CMake, make" + - "DSL" + - "Unit testing & Mock" + - "Docker, Docker Swarm" + - "GitHub Actions, CI/CD, Ansible" + + - role: "DevOps" + company: "Robotics and Computer Vision Lab (UEX)" + duration: "11/02/2020 - 30/11/2020" + location: "Cáceres, Spain" + responsibilities: + - "DevOp tasks for the Robocomp framework (unit testing, continuous integration, architecture refactoring for plugin support)" + - "Analyst-Developer on Robocomp DSR architecture" + - "Skills in Python3, C++, Qt, Shell Script" + - "Experience with CMake, make" + - "Linux Sys. Admin" + - "DSL" + - "Unit testing & Mock" + - "Docker" +#projects: +# - icon: "\\faMedkit" +# title: "Policy Insurance Portal Solution" +# description: "It's actually a well-known company insurance portal. All the policyholders buy or renew policies, as well as provide a claim facility too for instant resolution." +# - icon: "\\faConnectdevelop" +# title: "Survey Tracking App." +# description: "A US-based client survey tracking app through which clients make a survey for an individual vehicle as per requirement." +# - icon: "\\faNewspaperO" +# title: "Insurance Policy Claim Management App." +# description: "Related to customer claim management system, through which agents report a claim related to policy along with the insurance paradigms." +# - icon: "\\faOutdent" +# title: "Game Development" +# description: "Individual game developer using hybrid and react native platforms. Currently, a total of 3 mobile games deployed on the play store." + +references: + - name: "Steven! RAGNARÖK / Infrastructure Technical Lead" + email: "steven+proref@nuclearsandwich.com" + affiliation: "Open Robotics" + - name: "Matthew Festo / General Manager" + email: "matthew@operobotics.org" + affiliation: "Open Robotics" +content: + life_quote: "\"Empower the person next to you, and you'll find paths where once there were only walls. In the world of development, collaboration is not just a skill, it's our most powerful tool.\"" + #life_quote: "\"Empowering each other in the DevOps community, we bridge ideas and code, embodying the open source spirit to transform challenges into progress\"" +skills: + - name: "Github Actions" + level: 5 + - name: "Gitlab CI/CD" + level: 4 + - name: "Ros 2" + level: 4 + - name: "Docker" + level: 5 + - name: "Kubernetes" + level: 3 + - name: "Ansible" + level: 4 + - name: "Python" + level: 5 + - name: "C++" + level: 4 +language: + - name: "Spanish" + level: 5 + - name: "English" + level: 4 +tags: + - Hard-working + - Persuasive + - Team player + - Problem solver + - Self-motivated + - Fast learner +#achievements: +# - title: "Best Mobile App Developer" +# icon: "\\faTrophy" +# description: "Individual working on various mobile apps and sink to deliver before time" +# - title: "Deliver application on Time" +# icon: "\\faLineChart" +# description: "Continuously work on various platform and expand learning capability in terms of quality" +hobbies: + - title: "Photography" + icon: "\\faCamera" + description: | + I love to capture the moment and make it memorable. + Indeed, I worked as a freelance photographer for 10 years. + - title: "Roller Derby" + icon: "\\faBicycle" + description: "Have you heard about the Roller Derby? You should try it!" +colors: + - name: VividPurple + code: "008080" + - name: SlateGrey + code: "2E2E2E" + - name: LightGrey + code: "666666" +color_scheme: + - name: "heading" + color: "VividPurple" + - name: "accent" + color: "VividPurple" + - name: "emphasis" + color: "SlateGrey" + - name: "body" + color: "LightGrey" + - name: "tagline" + color: "VividPurple" +--- diff --git a/latex/altacv.cls b/latex/altacv.cls new file mode 100644 index 0000000..38a9786 --- /dev/null +++ b/latex/altacv.cls @@ -0,0 +1,431 @@ +%%%%%%%%%%%%%%%%% +% This is altacv.cls (v1.6.5, 3 Nov 2022) 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) +% - https://github.com/logological Remove redundant hyperref and typos (Apr 2021) + +%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{altacv}[2022/11/03 AltaCV v1.6.5, yet another alternative class for a resume/curriculum vitae.] + +%% v1.1: Optionally load academicons +%% v1.4: Nope, academicons is unnecessary; fontawesome5 has \faOrcid. +\DeclareOption{academicons}{\ClassWarning{altacv}{academicons option is now obsolete and unnecessary.}} +%% 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{extarticle} +%% v1.3.2 Hopefully this helps make the PDF +%% file more 'friendly' with copy-paste etc +\RequirePackage{etoolbox} +\RequirePackage[a-1b]{pdfx} +\RequirePackage{accsupp} +\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 + +\if@raggedtwoe + \RequirePackage[newcommands]{ragged2e} +\fi + +\if@withhyper + \AtBeginDocument{% + \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{trimclip} +\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 +%% v1.6: Use accsupp so that when copying/pasting the icon from PDF to a text +%% file, the icon name is pasted +\ExplSyntaxOn +\NewDocumentCommand{\printinfo}{m m o}{% + \BeginAccSupp{method=escape,ActualText={#1:~#2}} + \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% + }% + \EndAccSupp{} +}% + + +%% v1.3: Exploring convenient creation of fields +%% v1.6: Add starred mode to create \printinfo with full URL +\NewDocumentCommand{\NewInfoField}{s m m o}{% + \IfBooleanF{#1}{ + \IfNoValueF{#4}{\csdef{#2 hyperprefix}{#4}}% + } + \csdef{#2 symbol}{#3}% + \IfBooleanTF{#1} + { \csdef{#2}##1##2{% + \if@withhyper + \IfNoValueTF {##2} + {\printinfo{\csuse{#2 symbol}}{##1}}% + {\printinfo{\csuse{#2 symbol}}{##1}[##2]}% + \else + \printinfo{\csuse{#2 symbol}}{##1}% + \fi% + }% + } + { \csdef{#2}##1{% + \if@withhyper + \IfNoValueTF {#4} + {\printinfo{\csuse{#2 symbol}}{##1}}% + {\printinfo{\csuse{#2 symbol}}{##1}[\csuse{#2 hyperprefix}##1]}% + \else + \printinfo{\csuse{#2 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}[tel:] +\NewInfoField{homepage}{\faGlobe}[https://] +\NewInfoField{twitter}{\faTwitter}[https://twitter.com/] +\NewInfoField{linkedin}{\faLinkedin}[https://linkedin.com/in/] +\NewInfoField{github}{\faGithub}[https://github.com/] +% v1.?? Use fontawesome5 for Orcid symbol +\NewInfoField{orcid}{\faOrcid}[https://orcid.org/] +\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][]{% + \nointerlineskip\bigskip% %% bugfix in v1.6.2 + \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}; +} + +% v1.6: Use accsupp so that the actual numeric value is copied/pasted +% and also support 0.5, 1.5, 2.5, 3.5, 4.5 +\newcommand{\cvskill}[2]{% + \textcolor{emphasis}{\textbf{#1}}\hfill + \BeginAccSupp{method=plain,ActualText={#2}} + \foreach \x in {1,...,5}{% + \ifdimequal{\x pt - #2 pt}{0.5pt}% + {\clipbox*{0pt -0.25ex {.5\width} {\totalheight}}{\color{accent}\ratingmarker}% + \clipbox*{{.5\width} -0.25ex {\width} {\totalheight}}{\color{body!30}\ratingmarker}} + {\ifdimgreater{\x bp}{#2 bp}{\color{body!30}}{\color{accent}}\ratingmarker}% + }\EndAccSupp{}\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 + % v1.6: Use accsupp so that the numeric number is copied/pasted too + \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]{\BeginAccSupp{method=pdfstringdef,ActualText={\name: \value}}\name\EndAccSupp{}}; + % 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}} + +% v1.5 Move biblatex-related code to separate .cfg file +% so that it's easier to change and customise the style for +% publication lists + +% 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}}} + +% v1.6.5 But provide for ability to highlight names in publication list +\RequirePackage{pgffor} +\def\my@namelist{} +\newcommand{\mynames}[1]{\def\my@namelist{#1}} +\newtoggle{boldname} +\AddToHook{package/biblatex/after}{ +\renewcommand*{\mkbibnamefamily}[1]{% + \global\togglefalse{boldname}% + \foreach \my@fname / \my@gname in \my@namelist {% + \ifboolexpr{ test {\ifdefstrequal{\namepartfamily}{\my@fname}} + and + test {\ifdefstrequal{\namepartgiven}{\my@gname}}} + {\global\toggletrue{boldname}}{}% + }% + \iftoggle{boldname}{\textbf{#1}}{#1}% +} + +\renewcommand*{\mkbibnamegiven}[1]{% + \global\togglefalse{boldname}% + \foreach \my@fname / \my@gname in \my@namelist{% + \ifboolexpr{ test {\ifdefstrequal{\namepartfamily}{\my@fname}} + and + test {\ifdefstrequal{\namepartgiven}{\my@gname}}} + {\global\toggletrue{boldname}\breakforeach}{}% + }% + \iftoggle{boldname}{\textbf{#1}}{#1}% +} +} + +\AddToHook{begindocument/before}{% + \pagestyle{empty} + \color{body} + \raggedright +} diff --git a/latex/main.template.tex b/latex/main.template.tex new file mode 100644 index 0000000..51afc21 --- /dev/null +++ b/latex/main.template.tex @@ -0,0 +1,121 @@ +%%%%%%%%%%%%%%%%% +% This is an example CV created using altacv.cls (v1.1.4, 27 July 2018) written by +% LianTze Lim (liantze@gmail.com), based on the +% Cv created by BusinessInsider at http://www.businessinsider.my/a-sample-resume-for-marissa-mayer-2016-7/?r=US&IR=T +% +%% 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 want to use \orcid or the +%% academicons icons, add "academicons" +%% to the \documentclass options. +%% Then 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]{altacv} + +%% AltaCV uses the fontawesome and academicon fonts +%% and packages. +%% See texdoc.net/pkg/fontawecome and http://texdoc.net/pkg/academicons for full list of symbols. +%% When using the "academicons" option, +%% Compile with LuaLaTeX for best results. If you +%% want to use XeLaTeX, you may need to install +%% Academicons.ttf in your operating system's font %% folder. + + +% Change the page layout if you need to +\geometry{left=1cm,right=9cm,marginparwidth=6.8cm,marginparsep=1.2cm,top=1cm,bottom=1cm} + +% Change the font if you want to. + +% If using pdflatex: +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[default]{lato} + +% If using xelatex or lualatex: +% \setmainfont{Lato} + +% Change the colours if you want to +$for(colors)$ +\definecolor{$colors.name$}{HTML}{$colors.code$} +$endfor$ +$for(color_scheme)$ +\colorlet{$color_scheme.name$}{$color_scheme.color$} +$endfor$ + +% 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} +\name{$personal_info.name$} +\tagline{$personal_info.job_title$} +\photo{2.5cm}{img.jpg} +\personalinfo{% + % Not all of these are required! + % You can add your own with \printinfo{symbol}{detail} + \email{$personal_info.name$} + \phone{$for(personal_info.phone)$$personal_info.phone$$sep$ / $endfor$} + \location{$personal_info.location$} + \linkedin{$personal_info.linkedin$} + \github{$personal_info.github$} +} + +%% Make the header extend all the way to the right, if you want. +\begin{fullwidth} +\makecvheader +\end{fullwidth} + +%% Depending on your tastes, you may want to make fonts of itemize environments slightly smaller +\AtBeginEnvironment{itemize}{\small} + +%% Provide the file name containing the sidebar contents as an optional parameter to \cvsection. +%% You can always just use \marginpar{...} if you do +%% not need to align the top of the contents to any +%% \cvsection title in the "main" bar. +\cvsection[page1sidebar]{Experience} +$for(experiences)$ +\cvevent{$experiences.role$}{$experiences.company$}{$experiences.duration$}{$experiences.location$} +\begin{itemize} +$for(experiences.responsibilities)$ + \item $experiences.responsibilities$ +$endfor$ +\end{itemize} +$endfor$ + + + +\cvsection[page2sidebar]{So far Project Experience } +$for(projects)$ +\cvachievement{$projects.icon$}{$projects.title$}{$projects.description$} +\divider +$endfor$ + + + + + +\cvsection{Hobbies} +$for(hobbies)$ +\cvachievement{$hobbies.icon$}{$hobbies.title$}{$hobbies.description$} +\divider +$endfor$ + +\clearpage + + +\end{document} diff --git a/latex/page1sidebar.template.tex b/latex/page1sidebar.template.tex new file mode 100644 index 0000000..fb0f80d --- /dev/null +++ b/latex/page1sidebar.template.tex @@ -0,0 +1,38 @@ + +\cvsection{Life Philosophy} +\begin{quote} +$content.life_quote$ +\end{quote} +\cvsection{Education} +$for(education)$ +\cvevent{$education.degree$}{$education.institution$}{$education.duration$}{$education.location$} +$endfor$ + +\cvsection{Technical Strength} +$for(skills)$ +\cvskill{$skills.name$}{$skills.level$} +% \divider +$endfor$ + +\cvsection{Most Proud of} +$for(achievements)$ +\cvachievement{$achievements.icon$}{$achievements.title$}{$achievements.description$} +\divider +$endfor$ + +\cvsection{Strengths} +$for(tags)$ +\cvtag{$tags$} +$endfor$ + +\cvsection{Languages} +$for(language)$ +\cvskill{$language.name$}{$language.level$} +% \divider +$endfor$ + + + + + + diff --git a/latex/page2sidebar.template.tex b/latex/page2sidebar.template.tex new file mode 100644 index 0000000..6095497 --- /dev/null +++ b/latex/page2sidebar.template.tex @@ -0,0 +1,12 @@ + +\cvsection{Referees} +$for(references)$ +\cvref{$references.name$}{$references.email$}{$references.affiliation$} +\divider +$endfor$ + +%\cvsection{Apps. on Store} +%\cvevent{Gold Guide of Dragon City Gems} {Dharmsinh Desai University}{} {} +%\cvevent{Hetrix} {Dharmsinh Desai University}{}{} +%\cvevent{Parity Game } {Gujarat Technical University}{} {} + diff --git a/latex/sample.bib b/latex/sample.bib new file mode 100644 index 0000000..1b60d45 --- /dev/null +++ b/latex/sample.bib @@ -0,0 +1,47 @@ +@ARTICLE{Meyer2000, +AUTHOR={Bernd Meyer}, +TITLE={A constraint-based framework for diagrammatic reasoning}, +JOURNAL={Applied Artificial Intelligence}, +VOLUME= {14}, +ISSUE = {4}, +PAGES= {327--344}, +YEAR={2000} +} + +@ARTICLE{Codishetal2000, +AUTHOR={M. Codish and K. Marriott and C.K. Taboch}, +TITLE={Improving program analyses by structure untupling}, +JOURNAL={Journal of Logic Programming}, +VOLUME= {43}, +ISSUE = {3}, +PAGES= {251--263}, +YEAR={2000} +} + +@inproceedings{Huetal2000, +author = {J. Hu and H.R. Wu and A. Jennings and X. Wang}, +title = {Fast and robust equalization: A case study}, +booktitle = {Proceedings of the World Multiconference on Systemics, Cybernetics and Informatics, (SCI 2000), Florida, USA, 23-26 July 2000}, +publisher = {International Institute of Informatics and Systemics}, +address = {FL, USA}, +pages = {398--403}, +year = {2000} +} + +@Book{Huetal2000, +author = {J. Hu and H.R. Wu and A. Jennings and X. Wang}, +title = {Fast and robust equalization: A case study}, +booktitle = {Proceedings of the World Multiconference on Systemics, Cybernetics and Informatics, (SCI 2000), Florida, USA, 23-26 July 2000}, +publisher = {International Institute of Informatics and Systemics}, +address = {FL, USA}, +pages = {398--403}, +year = {2000} +} + +@inproceedings{zou2013bilingual, + title={Bilingual Word Embeddings for Phrase-Based Machine Translation.}, + author={Zou, Will Y and Socher, Richard and Cer, Daniel M and Manning, Christopher D}, + booktitle={EMNLP}, + pages={1393--1398}, + year={2013} +}