switch to typst

This commit is contained in:
Laureηt 2023-11-24 22:58:56 +01:00
parent 49750e243d
commit 1b8e81ec5b
Signed by: Laurent
SSH key fingerprint: SHA256:kZEpW8cMJ54PDeCvOhzreNr4FSh6R13CMGH/POoO8DI
37 changed files with 555 additions and 952 deletions

1
.gitattributes vendored
View file

@ -1 +0,0 @@
src/fonts/** filter=lfs diff=lfs merge=lfs -text

305
.gitignore vendored
View file

@ -1,305 +1,4 @@
.direnv .direnv
result
*.pdf *.pdf
# https://github.com/github/gitignore/blob/main/TeX.gitignore
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplot
*.gnuplot
*.table
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.glog
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# newpax
*.newpax
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# svg
svg-inkscape/
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# titletoc
*.ptc
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# xwatermark package
*.xwm
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib

View file

@ -1,5 +0,0 @@
{
"recommendations": [
"james-yu.latex-workshop"
]
}

48
.vscode/settings.json vendored
View file

@ -1,48 +1,6 @@
{ {
"latex-workshop.latex.recipe.default": "latexmk (lualatex)", "typst-lsp.experimentalFormatterMode": "on",
"latex-workshop.latex.tools": [ "[typst]": {
{ "editor.defaultFormatter": "nvarner.typst-lsp"
"name": "lualatexmk",
"command": "latexmk",
"args": [
"-shell-escape",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-lualatex",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {},
}
],
"gitlens.codeLens.authors.enabled": false,
"gitlens.codeLens.recentChange.enabled": false,
"files.exclude": {
// defaults
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/Thumbs.db": true,
// latex stuff
"**/*.aux": true,
"**/*.lof": true,
"**/*.log": true,
"**/*.lot": true,
"**/*.fls": true,
"**/*.out": true,
"**/*.toc": true,
"**/*.fmt": true,
"**/*.fot": true,
"**/*.cb": true,
"**/*.cb2": true,
"**/.*.lb": true,
"**/*.bbl": true,
"**/*.blg": true,
"**/*.fdb_latexmk": true,
"**/*.synctex.gz": true,
"**/*.synctex(busy)": true,
} }
} }

View file

@ -1,12 +1,53 @@
{ {
"nodes": { "nodes": {
"flake-utils": { "crane": {
"inputs": {
"nixpkgs": [
"typst",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1667395993, "lastModified": 1698166613,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "narHash": "sha256-y4rdN4flxRiROqNi1waMYIZj/Fs7L2OrszFk/1ry9vU=",
"owner": "ipetkov",
"repo": "crane",
"rev": "b7db46f0f1751f7b1d1911f6be7daf568ad5bc65",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1696343447,
"narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
"type": "github"
},
"original": {
"id": "flake-parts",
"type": "indirect"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -17,11 +58,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1673796341, "lastModified": 1700612854,
"narHash": "sha256-1kZi9OkukpNmOaPY7S5/+SlCDOuYnP3HkXHvNDyLQcc=", "narHash": "sha256-yrQ8osMD+vDLGFX7pcwsY/Qr5PUd6OmDMYJZzZi0+zc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6dccdc458512abce8d19f74195bb20fdb067df50", "rev": "19cbff58383a4ae384dea4d1d0c823d72b49d614",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -31,10 +72,96 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1696019113,
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1698318101,
"narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "63678e9f3d3afecfeafa0acead6239cdb447574c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"typst": "typst"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"typst": {
"inputs": {
"crane": "crane",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2",
"systems": "systems_2"
},
"locked": {
"lastModified": 1700840283,
"narHash": "sha256-ZueG6hz0W92izpJUkLcNQP+s06hGpHp9r/zx7nweYMc=",
"owner": "typst",
"repo": "typst",
"rev": "2f795b5c07171affa0709195a9dae3ed5c0afbeb",
"type": "github"
},
"original": {
"owner": "typst",
"repo": "typst",
"type": "github"
} }
} }
}, },

View file

@ -1,15 +1,65 @@
{ {
inputs = { inputs = {
typst.url = "github:typst/typst";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
}; };
outputs = { self, nixpkgs, flake-utils }: outputs = { self, nixpkgs, typst, flake-utils }:
flake-utils.lib.eachDefaultSystem (system: flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system}; let
pkgs = import nixpkgs {
inherit system;
overlays = [ typst.overlays.default ];
};
fonts_path = with pkgs;
lib.concatStringsSep ":" [ lato font-awesome raleway ];
in { in {
devShell = pkgs.mkShell { devShell = pkgs.mkShell {
buildInputs = with pkgs; [ texlive.combined.scheme-full inkscape ]; packages = with pkgs; [
typst-dev
typstfmt
typst-lsp
typst-live
typst-preview
];
TYPST_FONT_PATHS = fonts_path;
};
packages.default = pkgs.stdenvNoCC.mkDerivation {
name = "resume";
dontUnpack = true;
buildInputs = with pkgs; [ typst-dev ];
TYPST_FONT_PATHS = fonts_path;
src = ./.;
fontawesome = pkgs.fetchFromGitHub {
owner = "duskmoon314";
repo = "typst-fontawesome";
rev = "1a0fcdca90ee07f297294c9c56fbcf3114340a47";
hash = "sha256-h9LZum2f9+rZ4l4hjcmE49gDLVlbJUkRi1xSbJLVAGg=";
};
buildPhase = ''
# copy sources
cp -r $src/src .
chmod -R +w src
# replace fontawesome remote import with local import
cp $fontawesome/lib.typ src/fontawesome.typ
sed -i 's/#import "@preview\/fontawesome:0\.1\.0": \*/#import "fontawesome.typ": */g' src/resume.typ
# compile typst to pdf
typst compile src/resume.typ resume.pdf
'';
installPhase = ''
mkdir -p $out
cp resume.pdf $out/resume.pdf
'';
}; };
}); });
} }

View file

@ -1,111 +0,0 @@
% Intro Options
\ProvidesClass{cover}[2014/04/30 CV class]
\NeedsTeXFormat{LaTeX2e}
\DeclareOption{print}{\def\@cv@print{}}
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}
}
\ProcessOptions\relax
\LoadClass{article}
% Package Imports
\usepackage[hmargin=2.55cm, vmargin=2.55cm]{geometry}
\usepackage[colorlinks = true,
linkcolor = blue,
urlcolor = blue,
citecolor = blue,
anchorcolor = blue]{hyperref}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{titlesec}
\usepackage[absolute]{textpos}
\usepackage{fontspec,xltxtra,xunicode}
\usepackage{ragged2e}
% Publications
\usepackage{cite}
\renewcommand\refname{\vskip -1.5cm}
% Color definitions
\usepackage[usenames,dvipsnames]{xcolor}
\definecolor{date}{HTML}{666666}
\definecolor{primary}{HTML}{2b2b2b}
\definecolor{headings}{HTML}{6A6A6A}
\definecolor{subheadings}{HTML}{333333}
% Set main fonts
\usepackage{fontspec}
\setmainfont[Color=primary, Path = ../fonts/lato/,BoldItalicFont=Lato-RegIta,BoldFont=Lato-Reg,ItalicFont=Lato-LigIta]{Lato-Lig}
\setsansfont[Scale=MatchLowercase,Mapping=tex-text, Path = ../fonts/raleway/]{Raleway-ExtraLight}
% Date command
\usepackage[absolute]{textpos}
% \usepackage[UKenglish]{isodate}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
\newcommand{\lastupdated}{\begin{textblock}{60}(155,5)
\color{date}\fontspec[Path = ../fonts/raleway/]{Raleway-ExtraLight}\fontsize{8pt}{10pt}\selectfont
Last Updated on \today
\end{textblock}}
% Name command
\newcommand{\namesection}[3]{
\centering{
\fontsize{40pt}{60pt}
\fontspec[Path = ../fonts/lato/]{Lato-Hai}\selectfont #1
\fontspec[Path = ../fonts/lato/]{Lato-Lig}\selectfont #2
} \\[5pt]
\centering{
\color{headings}
\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{14pt}\selectfont #3}
\noindent\makebox[\linewidth]{\color{headings}\rule{\paperwidth}{0.0pt}}
\vspace{0pt}
}
% Section seperators
\usepackage{titlesec}
\titlespacing{\section}{0pt}{0pt}{0pt}
\titlespacing{\subsection}{0pt}{0pt}{0pt}
\newcommand{\sectionsep}{\vspace{8pt}}
% Headings command
\titleformat{\section}{\color{headings}
\scshape\fontspec[Path = ../fonts/lato/]{Lato-Lig}\fontsize{16pt}{24pt}\selectfont \raggedright\uppercase}{}{0em}{}
% Subeadings command
\titleformat{\subsection}{
\color{subheadings}\fontspec[Path = ../fonts/lato/]{Lato-Bol}\fontsize{12pt}{12pt}\selectfont\bfseries\uppercase}{}{0em}{}
\newcommand{\runsubsection}[1]{
\color{subheadings}\fontspec[Path = ../fonts/lato/]{Lato-Bol}\fontsize{12pt}{12pt}\selectfont\bfseries\uppercase {#1} \normalfont}
% Descriptors command
\newcommand{\descript}[1]{
\color{subheadings}\raggedright\scshape\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\} \normalfont}
% Location command
\newcommand{\location}[1]{
\color{headings}\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{10pt}{12pt}\selectfont {#1\\} \normalfont}
% Bullet Lists with fewer gaps command
\newenvironment{tightemize}{
\vspace{-\topsep}\begin{itemize}\itemsep1pt \parskip0pt \parsep0pt}
{\end{itemize}\vspace{-\topsep}}
% Cover Letter
\newcommand{\companyname}[1]{\raggedright\fontspec[Path = ../fonts/lato/]{Lato-Bol}\fontsize{12pt}{14pt}\selectfont {#1 \\} \normalfont}
\newcommand{\companyaddress}[1]{\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\}\mbox{}\\\mbox{}\\ \normalfont}
\newcommand{\currentdate}[1]{\raggedleft\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\} \normalfont}
% Letter content command
\newcommand{\lettercontent}[1]{\justifying\noindent\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\}\mbox{} \normalfont}
% \newcommand{\lettercontent}[1]{\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\}\mbox{}\\ \normalfont}
\newcommand{\closing}[1]{\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\}\mbox{}\\\mbox{}\\ \normalfont}
\newcommand{\signature}[1]{\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\} \normalfont}
\newcommand{\inlinebold}[1]{\fontspec[Path = ../fonts/raleway/]{Raleway-Bold}\fontsize{11pt}{13pt}\selectfont\bfseries {#1} \fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont}

View file

@ -1,68 +0,0 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deedy - Cover Letter Template
% LaTeX Template
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[]{cover}
\usepackage{fancyhdr}
\usepackage{fontawesome}
\pagestyle{fancy}
\fancyhf{}
\rfoot{Page \thepage \hspace{1pt}}
\thispagestyle{empty}
\renewcommand{\headrulewidth}{0pt}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% TITLE NAME
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\namesection{Laurent}{Fainsin}{
\faGithub \ \href{https://laurent.fainsin.bzh/}{https://laurent.fainsin.bzh}
\quad
\faEnvelopeO \ \href{mailto:laurent@fainsin.bzh}{laurent@fainsin.bzh}
\quad
\faPhone \ \href{tel:+33781492838}{0781492838}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% MAIN COVER LETTER CONTENT
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\hfill
\begin{minipage}[t]{0.5\textwidth}
\companyname{Company Recruitment Team}
\companyaddress{
Hugging Face \\
Paris, France
}
\end{minipage}
\begin{minipage}[t]{0.49\textwidth}
\currentdate{\today}
\end{minipage}
\lettercontent{Dear Sir or Madam,}
\lettercontent{I am a second year \inlinebold{Master's student in Computer Science} at ENSSEIHT. I am writing to express interest in taking part in Julia Computing as an \inlinebold{Intern in Machine Learning Engineering} starting in \inlinebold{March 2023}. I am aware of Hugging Face's role in the future of machine learning, and I would be thrilled to contribute.}
\lettercontent{As a master student, I have worked on Machine Learning through \inlinebold{practicums}. I have experience in using and writing simple algorithms such as K-Means, K-NN, Regressions or more advanced architectures such as GANs, VAEs, Classifiers... I also have good knowledge of Probability, Statistics, Optimization and Partial Differential Equations.}
\lettercontent{I have worked for 3 months as a \inlinebold{Research Assistant} in Computer Vision for the REVA team of the Research Institute in Computer Science of Toulouse. We studied, implemented and deployed to production a fine-tuned Mask-RCNN Neural Network to detect spherical markers in photographs for photometric stereo lightning calibration.}
\lettercontent{In addition to this, I have taken the initiative to learn more about Machine Learning on my personal time, by reading books on the fundamentals of Neural Networks, by listening to lectures, by reading blog posts and threads on specific subjects. For example, I have recently taken the initiative to learn new models of image generation with diffusion, by reading and trying to implement by myself the paper "Denoising Diffusion Probabilistic Models" by Jonathan Ho et al. from NeurIPS 2020. You may find all my projects on my personal website.}
\lettercontent{I define myself as someone humble but ambitious with good communication and social skills. I have a strong appetite for facing and overcoming difficulties therefore I am thrilled to have the possibility to work for your teams at the very top of innovation.}
\lettercontent{Thank you for your time and consideration. I am eager to discuss my qualifications further at an \inlinebold{interview}. Please feel free to \inlinebold{contact me} to set up a time to chat. I look forward to hearing from you.}
\closing{Yours faithfully, \vspace{-0.88cm}}
\signature{Laurent Fainsin.}
\end{document}
\documentclass[]{article}

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8b32bc539ca95dda2d2206a43234b5f3b0fe964bd25966c860bc80ec7f06d702
size 114588

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:09660c19f1773a761b2e56a05b666813dfd6e6196b4ad9d85ff881f29a30e839
size 111616

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:14f7de6b616950395062902eb8f70f01c0a901223db5d40f2a05728ac4a830f6
size 121788

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2101c00b9c973a666bf128b3a776a45df7107bd29116079ee00541a8863d50ce
size 120312

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:01ef8d755f412a945aa0b1221bfe98852200b549c4f16aad377e49937a30bd2f
size 115316

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:95a84782e0797d27d079d9cc6ab9bb24ea67558953099bf4481c08e95b2ae70a
size 91460

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:05903540a0675491fda9015a78c05bb589769951befab12a58a5568175566b49
size 122524

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1af3a551a7e2d9fb640773197a00f6970a2b9c6699b0c786059a37453d5d12c
size 91600

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7ae714b63c2c8b940bdd211a0cc678f01168a34eea8aa13c0df25364f29238a7
size 120196

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1a63dda1d2f019336e934e41d7ffa8f3e5f4cee0eb6a0c4734827dbe09ce5015
size 118352

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7004222230d77e6b59d8312c8d7decbcc080e67c3821f1cd7b7e3f34f41a69fb
size 66088

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b6e82870aba6a9089d341e67d7a7edacec2733ef0dab23e01d9d6c826cc6f52
size 66336

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a9b4536b59d8e041280b7c03ad3a182046a87ef6eb8a5f8879a7abc5615783da
size 63364

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8a131abb3239b5cf7dcb3d500b16dc33cd0c66d423737be6a88cd3e3c00ea867
size 70484

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3554e667904ae6eba906af71da95ceac81f4610c18560d71b549ffe9f8f2f48b
size 64488

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:31f892971f709c5e5d5a19b0a2445d3f90a9de42f2395a0ac113c4d7d933de06
size 64776

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a1321362dc043b61962d04485022ce923d0a1c926c4dbf59ee6ea9ce6e520c4d
size 64368

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6d75566fed3b03036afe4f81a2d38ed1dfa3100a5c2e840abe4f8a875c73ee39
size 65696

View file

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f2e1069b99f50e3c1d3b3c2aa54aebbd5d8eca97787df477a40389f7e2982efa
size 64256

View file

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

11
src/references.bib Normal file
View file

@ -0,0 +1,11 @@
@article{ml,
author = {Laurent Fainsin and Jean Mélou and Lilian Calvet and Antoine Laurent and Axel Carlier and Jean-Denis Durou},
title = {Neural sphere detection in images for lighting calibration},
journal = {QCAV},
year = {2023}
}
@patent{safran,
author = {Laurent Fainsin and Xavier Roynard and Michele Alessandro Bucci and Brian Staber},
title = {Latent Generative Models for Conditional 3D Unstructured Mesh Blade Design},
year = {2023}
}

177
src/resume.typ Normal file
View file

@ -0,0 +1,177 @@
#import "utils.typ": *
#import "@preview/fontawesome:0.1.0": *
#set par(leading: 0.5em)
#main(
name: "Laurent Fainsin",
lastupdated: "true",
date: "2023-11-23",
bibfile: [bib.json],
contacts: (
(
text: "laurent.fainsin.bzh",
link: "https://laurent.fainsin.bzh/",
icon: { fa-globe() + h(3pt) },
),
(
text: "laurent@fainsin.bzh",
link: "mailto:laurent@fainsin.bzh",
icon: { fa-envelope() + h(3pt) },
),
(
text: "0781492838",
link: "tel:+33781492838",
icon: { fa-phone() + h(3pt) },
),
(
text: "laurent-fainsin",
link: "https://www.linkedin.com/in/laurent-fainsin/",
icon: { fa-linkedin() + h(3pt) },
),
(
text: "Laurent2916",
link: "https://www.github.com/Laurent2916/",
icon: { fa-github() + h(3pt) },
),
(
text: "1aurent",
link: "https://huggingface.co/1aurent?sort_datasets=downloads&sort_models=downloads",
icon: { box(image("hf-logo.svg", height: 12pt), baseline: 2pt) + h(2pt) },
),
),
[
#set text(
10pt,
font: "lato",
fill: primary_colour,
weight: "light",
baseline: 0em,
)
#section("Education")
#subsection[ENSEEIHT INP-Toulouse]
#descript[Master in Perf. Computing]
#descript[focused on Academic Research]
#term[2022 — 2023][Toulouse, France]
#subsection[ENSEEIHT INP-Toulouse]
#descript[MEng in Computer Science]
#descript[specialty in ML and CG]
#term[2020 — 2023][Toulouse, France]
#subsection[LA PÉROUSE-KERICHEN]
#descript[Preparatory class (CPGE)]
#descript[PCSI, PSI]
#term[2018 — 2020][Brest, France]
#section("Skills")
#subsection[Programming]
#info[Python, Julia, Shell, Java]
#info[C++, CUDA, SQL, LaTeX]
#subsection[Languages]
#info[Fluent: English, French]
#info[Elementary: Japanese, Spanish]
#subsection[Certificates]
French driver's license \
Cambridge Linguaskill C1+ \
AI for Medical Diagnosis \
HuggingFace courses
#section[About]
#subsection[Personal projects]
Reproducible Nix Infrastructure \
Handwriting Denoising Diffusion \
GBA Collaborative Emulator \
SSL on Histology Datasets \
"AI or NOT" Hackathon \
Diffusers.jl
#subsection[School projects]
JPEG & MPEG Compression \
Distributed Data Tuple Space \
3D Inverse Problem Solver \
Graph Machine Learning \
OpenGL Mesh Renderer
#subsection[OSS Contributor]
NixOS, HuggingFace \
LightningAI, AliceVision
#subsection[Hobbies]
Aquariums, OSS \
Slacklining, Padel
],
[
#section("Professional Experience")
#jobtitle[Safran][Machine Learning Engineer Intern]
#term[March 2023 — September 2023][Paris, France]
#jobdetail[
- Studied state of the art generative models for 3D data, such as PointNet++,
Graph U-Net, PointFlow, Point Voxel Diffusion and LION.
- Implemented a dozen architectures using libraries such as PyTorch Geometric,
PyTorch Lightning, HuggingFace Diffusers, HuggingFace Datasets, etc. Settled on
Latent Diffusion Models and classic model reduction methods.
- Trained models on specific aircraft industrial parts, conditioned on performance
metrics, such as drag coefficients, lift coefficients, etc. Evaluated the models
using Gaussian Processes and geometrical metrics.
- Released internally the models and code, enabling Safran engineers to generate
new parts with specific performance metrics and to easily reuse the code for
other applications. Submitted a patent.
]
#jobtitle[REVA — IRIT][Machine Learning Scientist Intern]
#term[June 2022 — September 2022][Toulouse, France]
#jobdetail[
- Fine-tuned a state of the art deep learning model (DETR) to detect spherical
markers in images for photometric stereophography calibration.
- Collaborated with 3 engineers from MIKROS and Technicolor as part of the
ALICIA-Vision Labcom european project.
- Monitored hundreds of trainings using the MLOps platform Weights & Biases.
Achieved 90% GIoU on test data, providing fast and accurate segmentation.
- Built using the Pytorch Lightning framework, exported to ONNX format, deployed
to production in AliceVision with ONNXRuntime.
]
#section("Volunteer Experience")
#jobtitle[net7 / INP-net][Treasurer #text(
12pt,
font: "Lato",
fill: subheadings_colour,
weight: "medium",
baseline: 0.03em,
)[/] President]
#term[September 2021 — September 2022][Toulouse, France]
#jobdetail[
- Led and managed the association and its financing for a term of one year.
- Contributed to and developed the codebase used by 5000+ students per year.
Provided technical micro-trainings to hundreds of students.
- Planned and started the migration of our server room to an
_infrastructure as code_ Proxmox + Kubernetes virtual cluster.
- Acquired solid skills in system administration and its tools: Docker, Git,
Kubernetes, NixOS, NGINX, Apache, Redis, LDAP/CAS, CI/CD, etc.
]
#jobtitle[Toulouse Hacking convention][Volunteer]
#term[April 2022][Toulouse, France]
#jobdetail[
- Helped set up and tear down the equipment for the 2 day event.
- Assisted in the hardware CTF organization after the event.
]
#jobtitle[Capitole du Libre][Volunteer]
#term[November 2022][Toulouse, France]
#jobdetail[
- Helped with the "nix install party" of the 2 day event.
- Promoted free software and introduced attendees to GNU+Linux.
]
#section("Publications & Patents")
#{
set text(10pt, font: "Lato", fill: primary_colour, weight: "light")
bibliography("references.bib", full: true, title: none)
}
],
)

View file

@ -1,5 +0,0 @@
@patent{safran,
author = {Laurent Fainsin and Xavier Roynard and Michele Alessandro Bucci and Brian Staber},
title = {Latent Generative Models for Conditional 3D Unstructured Mesh Blade Design (patent pending)},
year = {2023}
}

View file

@ -1,7 +0,0 @@
@article{ml,
author = {Laurent Fainsin and Jean Mélou and Lilian Calvet and Antoine Laurent and Axel Carlier and Jean-Denis Durou},
title = {Neural sphere detection in images for lighting calibration},
journal = {QCAV},
year = {2023},
url = {https://hal.science/hal-04160733}
}

View file

@ -1,92 +0,0 @@
% Intro Options
\ProvidesClass{resume}[2014/04/30 CV class]
\NeedsTeXFormat{LaTeX2e}
\DeclareOption{print}{\def\@cv@print{}}
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}
}
\ProcessOptions\relax
\LoadClass{article}
% Package Imports
\usepackage[a4paper, hmargin=1cm, vmargin=0.7cm, bottom=1.5cm]{geometry}
\usepackage[colorlinks = true,
linkcolor = blue,
urlcolor = blue,
citecolor = blue,
anchorcolor = blue]{hyperref}
% Publications
\usepackage{cite}
\renewcommand\refname{\vskip -1.5cm}
% Color definitions
\usepackage[usenames,dvipsnames]{xcolor}
\definecolor{date}{HTML}{666666}
\definecolor{primary}{HTML}{2b2b2b}
\definecolor{headings}{HTML}{6A6A6A}
\definecolor{subheadings}{HTML}{333333}
% Set main fonts
\usepackage{fontspec}
\setmainfont[Color=primary, Path = ../fonts/lato/,BoldItalicFont=Lato-RegIta,BoldFont=Lato-Reg,ItalicFont=Lato-LigIta]{Lato-Lig}
\setsansfont[Scale=MatchLowercase,Mapping=tex-text, Path = ../fonts/raleway/]{Raleway-ExtraLight}
% Date command
\usepackage[absolute]{textpos}
\usepackage[UKenglish]{isodate}
\setlength{\TPHorizModule}{1mm}
\setlength{\TPVertModule}{1mm}
\newcommand{\lastupdated}{\begin{textblock}{60}(155,5)
\color{date}\fontspec[Path = ../fonts/raleway/]{Raleway-ExtraLight}\fontsize{8pt}{10pt}\selectfont
Last Updated on \today
\end{textblock}}
% Name command
\newcommand{\namesection}[3]{
\centering{
\fontsize{50pt}{60pt}
\fontspec[Path = ../fonts/lato/]{Lato-Hai}\selectfont #1
\fontspec[Path = ../fonts/lato/]{Lato-Lig}\selectfont #2
} \\[5pt]
\centering{
\color{headings}
\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{14pt}\selectfont #3}
\noindent\makebox[\linewidth]{\color{headings}\rule{\paperwidth}{0.4pt}}
\vspace{-15pt}
}
% Section seperators
\usepackage{titlesec}
\titlespacing{\section}{0pt}{0pt}{0pt}
\titlespacing{\subsection}{0pt}{0pt}{0pt}
\newcommand{\sectionsep}{\vspace{7pt}}
% Headings command
\titleformat{\section}{\color{headings}
\scshape\fontspec[Path = ../fonts/lato/]{Lato-Lig}\fontsize{16pt}{24pt}\selectfont \raggedright\uppercase}{}{0em}{}
% Subeadings command
\titleformat{\subsection}{
\color{subheadings}\fontspec[Path = ../fonts/lato/]{Lato-Bol}\fontsize{12pt}{12pt}\selectfont\bfseries\uppercase}{}{0em}{}
\newcommand{\runsubsection}[1]{
\color{subheadings}\fontspec[Path = ../fonts/lato/]{Lato-Bol}\fontsize{12pt}{12pt}\selectfont\bfseries\uppercase {#1} \normalfont}
% Descriptors command
\newcommand{\descript}[1]{
\color{subheadings}\raggedright\scshape\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1 \\} \normalfont}
% Descriptors command
\newcommand{\descriptnonewline}[1]{
\color{subheadings}\raggedright\scshape\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{11pt}{13pt}\selectfont {#1} \normalfont}
% Location command
\newcommand{\location}[1]{
\color{headings}\raggedright\fontspec[Path = ../fonts/raleway/]{Raleway-Medium}\fontsize{10pt}{12pt}\selectfont {#1\\} \normalfont}
% Bullet Lists with fewer gaps command
\newenvironment{tightemize}{
\vspace{-\topsep}\begin{itemize}\itemsep1pt \parskip0pt \parsep0pt}
{\end{itemize}\vspace{-\topsep}}

View file

@ -1,246 +0,0 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Deedy - One Page Two Column Resume
% LaTeX Template
% Version 1.2 (16/9/2014)
%
% Original author:
% Debarghya Das (http://debarghyadas.com)
%
% Original repository:
% https://github.com/deedydas/Deedy-Resume
%
% IMPORTANT: THIS TEMPLATE NEEDS TO BE COMPILED WITH XeLaTeX
%
% This template uses several fonts not included with Windows/Linux by
% default. If you get compilation errors saying a font is missing, find the line
% on which the font is used and either change it to a font included with your
% operating system or comment the line out to use the default font.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% TODO:
% 1. Integrate biber/bibtex for article citation under publications.
% 2. Figure out a smoother way for the document to flow onto the next page.
% 3. Add styling information for a "Projects/Hacks" section.
% 4. Add location/address information
% 5. Merge OpenFont and MacFonts as a single sty with options.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CHANGELOG:
% v1.1:
% 1. Fixed several compilation bugs with \renewcommand
% 2. Got Open-source fonts (Windows/Linux support)
% 3. Added Last Updated
% 4. Move Title styling into .sty
% 5. Commented .sty file.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Known Issues:
% 1. Overflows onto second page if any column's contents are more than the
% vertical limit
% 2. Hacky space on the first bullet point on the second column.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[]{resume}
\usepackage{fancyhdr}
\usepackage{fontawesome}
\usepackage{svg}
\pagestyle{fancy}
\fancyhf{}
\rfoot{\bf{For additional resources (projects, code, PDFs, etc.) refer to personal website}}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% TITLE NAME
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\namesection{Laurent}{Fainsin}{
\faGlobe \ \href{https://laurent.fainsin.bzh/}{laurent.fainsin.bzh}
\quad
\faEnvelopeO \ \href{mailto:laurent@fainsin.bzh}{laurent@fainsin.bzh}
\quad
\faPhone \ \href{tel:+33781492838}{0781492838}
\\ \vspace*{2pt}
\faLinkedin \ \href{https://www.linkedin.com/in/laurent-fainsin/}{laurent-fainsin}
\quad
\faGithub \ \href{https://www.github.com/Laurent2916/}{Laurent2916}
\quad
\raisebox{-2pt}{\includesvg[height=11pt]{hf-logo.svg}} \href{https://huggingface.co/1aurent?sort_datasets=downloads&sort_models=downloads}{1aurent}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% COLUMN ONE
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{minipage}[t]{0.33\textwidth}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% EDUCATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Education}
\subsection{ENSEEIHT INP-Toulouse}
\descript{Master in Perf. Computing}
\descript{focused on Academic Research}
\location{2022 — 2023 | Toulouse, France}
\sectionsep
\subsection{ENSEEIHT INP-Toulouse}
\descript{MEng in Computer Science}
\descript{specialty in ML and CG}
\location{2020 — 2023 | Toulouse, France}
\sectionsep
\subsection{LA PÉROUSE-KERICHEN}
\descript{Preparatory class (CPGE)}
\descript{PCSI, PSI}
\location{2018 — 2020 | Brest, France}
\sectionsep
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SKILLS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Skills}
\subsection{Programming}
Python \textbullet{} Julia \textbullet{} Shell \textbullet{} Java \\
C++ \textbullet{} CUDA \textbullet{} SQL \textbullet{} \LaTeX\
\sectionsep
\subsection{Languages}
\descriptnonewline{Fluent} \ French \textbullet{} English \\
\descriptnonewline{Elementary} \ Japanese \textbullet{} Spanish
\sectionsep
\subsection{Certificates}
French driver's license \\
Cambridge Linguaskill C1+ \\
AI for Medical Diagnosis \\
HuggingFace courses
\sectionsep
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ABOUT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{About}
\subsection{Personal projects}
Reproducible Nix Infrastructure \\
Handwriting Denoising Diffusion \\
GBA Collaborative Emulator \\
SSL on Histology Datasets \\
``AI or NOT" Hackathon \\
Diffusers.jl
\sectionsep
\subsection{School projects}
JPEG \& MPEG Compression \\
Distributed Data Tuple Space \\
3D Inverse Problem Solver \\
Graph Machine Learning \\
OpenGL Mesh Renderer
\sectionsep
\subsection{OSS Contributor}
NixOS \textbullet{} HuggingFace \\
LightningAI \textbullet{} AliceVision
\sectionsep
\subsection{Hobbies}
Aquariums \textbullet{} OSS \\
Slacklining \textbullet{} Padel
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% COLUMN TWO
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{minipage}
\hfill
\begin{minipage}[t]{0.66\textwidth}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% EXPERIENCE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Professional Experience}
\runsubsection{Safran} | \descript{Machine Learning Engineer Intern}
\location{March 2023 — September 2023 | Paris, France}
\vspace{10pt} % Hacky fix for awkward extra vertical space
\begin{tightemize}
\item Studied state of the art generative models for 3D data, such as PointNet++, Graph U-Net, PointFlow, Point Voxel Diffusion and LION.
\item Implemented a dozen architectures using libraries such as PyTorch Geometric, PyTorch Lightning, HuggingFace Diffusers, HuggingFace Datasets, etc. Settled on Latent Diffusion Models and classic model reduction methods.
\item Trained models on specific aircraft industrial parts, conditioned on performance metrics, such as drag coefficients, lift coefficients, etc. Evaluated the models using Gaussian Processes and geometrical metrics.
\item Released internally the models and code, enabling Safran engineers to generate new parts with specific performance metrics and to easily reuse the code for other applications. Submitted a patent.
\end{tightemize}
\sectionsep
\runsubsection{REVA — IRIT} | \descript{Machine Learning Scientist Intern}
\location{June 2022 — September 2022 | Toulouse, France}
\begin{tightemize}
\item Fine-tuned a state of the art deep learning model (DETR) to detect spherical markers in images for photometric stereophography calibration.
\item Collaborated with 3 engineers from MIKROS and Technicolor as part of the ALICIA-Vision Labcom european project.
\item Monitored hundreds of trainings using the MLOps platform Weights \& Biases. Achieved 90\% GIoU on test data, providing fast and accurate segmentation.
\item Built using the Pytorch Lightning framework, exported to ONNX format, deployed to production in AliceVision with ONNXRuntime.
\end{tightemize}
\sectionsep
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% VOLUNTEER EXPERIENCE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Volunteer Experience}
\runsubsection{net7 / INP-net} | \descript{Treasurer / President}
\location{September 2021 — September 2022 | Toulouse, France}
\begin{tightemize}
\item Led and managed the association and its financing for a term of one year.
\item Contributed to and developed the codebase used by 5000+ students per year. \\ Provided technical micro-trainings to hundreds of students.
\item Planned and started the migration of our server room to an \textit{infrastructure as code} Proxmox + Kubernetes virtual cluster.
\item Acquired solid skills in system administration and its tools: \\ Docker, Git, Kubernetes, NixOS, NGINX, Apache, Redis, LDAP/CAS, CI/CD, etc.
\end{tightemize}
\sectionsep
\runsubsection{Toulouse Hacking convention} | \descript{Volunteer}
\location{April 2022 | Toulouse, France}
\begin{tightemize}
\item Helped set up and tear down the equipment for the 2 day event.
\item Assisted in the hardware CTF organization after the event.
\end{tightemize}
\sectionsep
\runsubsection{Capitole du Libre} | \descript{Volunteer}
\location{November 2022 | Toulouse, France}
\begin{tightemize}
\item Helped with the "nix install party" of the 2 day event.
\item Promoted free software and introduced attendees to GNU+Linux.
\end{tightemize}
\sectionsep
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PUBLICATION & PATENTS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Publications \& Patents}
\vspace{20pt}
\bibliographystyle{abbrv}
\bibliography{publications,patents}
\nocite{*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% END OF DOCUMENT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{minipage}
\end{document}

169
src/utils.typ Normal file
View file

@ -0,0 +1,169 @@
// colors
#let date_colour = rgb("#666666")
#let primary_colour = rgb("#2b2b2b")
#let headings_colour = rgb("#6A6A6A")
#let subheadings_colour = rgb("#333333")
// Section Headings (Education, Experience, etc)
#let section(title) = {
text(
16pt,
font: "Lato",
fill: headings_colour,
weight: "light",
)[#upper[#title]\ ]
}
// Subsection Headings (University, Company, etc)
#let subsection(content) = {
text(
12pt,
font: "Lato",
fill: subheadings_colour,
weight: "bold",
)[#upper[#content]\ ]
}
// Time period and location
#let term(period, location) = {
if location == [] or location == "" {
text(10pt, font: "Lato", fill: headings_colour, weight: "medium")[#period\ ]
} else {
text(
10pt,
font: "Lato",
fill: headings_colour,
weight: "medium",
)[#period #text(baseline: -0.05em)[ | ] #location \ ]
}
}
// Description of a job, degree, etc
#let descript(content) = {
text(
11pt,
font: "Raleway",
weight: "medium",
fill: subheadings_colour,
)[#smallcaps(content)\ ]
}
// Job title
#let jobtitle(firm, title) = {
text(
12pt,
font: "Lato",
fill: subheadings_colour,
weight: "bold",
)[#upper(firm)]
text(baseline: -0.15em)[ | ]
text(
11pt,
font: "Raleway",
fill: subheadings_colour,
weight: "medium",
)[#smallcaps(title)\ ]
}
//job details
#let jobdetail(content) = {
text(10pt, font: "Lato", fill: primary_colour, weight: "light")[
#enum(numbering: x => "", indent: 1em, body-indent: 0em)[
#content
]
]
}
// Details
#let info(content) = {
text(11pt, font: "Lato", fill: primary_colour, weight: "light")[#content\ ]
}
#let awarddetail(time, award, organise) = {
set text(
10pt,
font: "Lato",
fill: primary_colour,
weight: "light",
top-edge: "baseline",
bottom-edge: "baseline",
baseline: 0pt,
)
grid(columns: (auto, auto, auto), gutter: 1em, time, award, organise)
}
#let biblist(contents) = {
for ids in contents [
#id.title (#id.year)
]
}
#let keyword(content) = {
text(12pt, font: "Lato", fill: headings_colour, weight: "light")[#content\ ]
}
// last update
#let lastupdate(lastupdated, date)= {
if lastupdated == "true" {
set text(10pt, font: "Lato", fill: primary_colour, weight: "light")
block(width: 100%, height: 1.5em, align(right, { [Last updated: #date] }))
}
}
#let main(
name: "",
address: "",
lastupdated: "",
date: "",
contacts: (),
bibfile: (),
left,
right,
) = {
// show contact details
let display(contacts) = {
set text(11pt, font: "Lato", fill: headings_colour, weight: "medium")
stack(dir: ltr, contacts.map(contact => {
if contact.link == none {
contact.text
} else if contact.icon == none {
link(contact.link)[#contact.text]
} else {
link(contact.link)[#contact.icon~#contact.text]
}
}))
}
set page(margin: 1cm)
// header
v(-25pt)
text(
50pt,
font: "Lato",
fill: primary_colour,
weight: "light",
top-edge: "baseline",
bottom-edge: "baseline",
baseline: 50pt,
)[#align(center, name)]
align(center)[
#box(width: 60%)[
#set text(spacing: 1em)
#contacts.map(contact => {
set text(11pt, font: "Lato", fill: headings_colour, weight: "medium")
link(contact.link)[#contact.icon#contact.text]
}).join(" ")
]
]
line(
start: (0% - 1cm, 0pt),
end: (100% + 1cm, 0pt),
stroke: 0.5pt + primary_colour,
)
//Main Body
grid(columns: (1fr, 2fr), left, right)
}

4
typstfmt.toml Normal file
View file

@ -0,0 +1,4 @@
indent_space = 2
max_line_length = 120
experimental_args_breaking_consecutive = false
line_wrap = true