Created
April 28, 2025 11:33
-
-
Save FedericoTartarini/92d3aa994cadbda5aab83dc1e7297774 to your computer and use it in GitHub Desktop.
typst-cv-youtube-video
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "resume.typ": * | |
// Personal information | |
#let name = "Dr Federico Tartarini - CV" | |
#let location = "Sydney, AU" | |
#let email = "" | |
#let github = "github.com/FedericoTartarini" | |
#let linkedin = "linkedin.com/in/federico-tartarini-3991995b" | |
#let scopus = "www.scopus.com/authid/detail.uri?authorId=57194517775" | |
#let scholar = "scholar.google.com/citations?user=QcamSPwAAAAJ&hl=en" | |
#show: resume.with( | |
author: name, | |
location: location, | |
email: email, | |
github: github, | |
linkedin: linkedin, | |
orcid: "0000-0002-8739-5062", | |
personal-site: "https://federicotartarini.github.io/", | |
accent-color: "#e76f51", | |
font: "Lato", | |
paper: "a4", | |
author-position: left, | |
personal-info-position: left, | |
) | |
// Work and Research Experience | |
== Work and Research Experience | |
#work( | |
title: "Senior Lecturer and USYD Horizon Fellow", | |
company: "University of Sydney - School of Architecture Design and Planning", | |
location: "Sydney, AU", | |
dates: dates-helper(start-date: "06/2024", end-date: "present"), | |
) | |
- *Beat the Heath*: Advancing Our Understanding of Heat Stress and Developing Effective Sustainable Interventions to Reduce Health Risks in a Warming World. | |
- *Teaching*: Architectural and building science. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "@preview/scienceicons:0.0.6": orcid-icon | |
#import "@preview/fontawesome:0.5.0": * | |
#let resume( | |
author: "", | |
author-position: left, | |
personal-info-position: left, | |
pronouns: "", | |
location: "", | |
email: "", | |
github: "", | |
linkedin: "", | |
phone: "", | |
personal-site: "", | |
orcid: "", | |
accent-color: "#000000", | |
font: "New Computer Modern", | |
paper: "us-letter", | |
body, | |
) = { | |
// Sets document metadata | |
set document(author: author, title: author) | |
// Document-wide formatting, including font and margins | |
set text( | |
// LaTeX style font | |
font: font, | |
size: 10pt, | |
lang: "en", | |
// Disable ligatures so ATS systems do not get confused when parsing fonts. | |
ligatures: false | |
) | |
// Reccomended to have 0.5in margin on all sides | |
set page( | |
margin: (0.5in), | |
paper: paper, | |
) | |
// Link styles | |
show link: underline | |
// Small caps for section titles | |
show heading.where(level: 2): it => [ | |
#pad(top: 0pt, bottom: -10pt, [#smallcaps(it.body)]) | |
#line(length: 100%, stroke: 1pt) | |
] | |
// Accent Color Styling | |
show heading: set text( | |
fill: rgb(accent-color), | |
) | |
show link: set text( | |
fill: rgb(accent-color), | |
) | |
// Name will be aligned left, bold and big | |
show heading.where(level: 1): it => [ | |
#set align(author-position) | |
#set text( | |
weight: 700, | |
size: 20pt, | |
) | |
#pad(it.body) | |
] | |
// Level 1 Heading | |
[= #(author)] | |
// Personal Info Helper | |
let contact-item(value, prefix: "", link-type: "") = { | |
if value != "" { | |
if link-type != "" { | |
link(link-type + value)[#(prefix)] | |
} else { | |
value | |
} | |
} | |
} | |
// Personal Info | |
pad( | |
top: 0.25em, | |
align(personal-info-position)[ | |
#{ | |
let items = ( | |
contact-item(pronouns), | |
contact-item(phone), | |
contact-item(location), | |
contact-item(email, prefix: [#fa-icon("envelope")], link-type: "mailto:"), | |
contact-item(github, prefix: [#fa-icon("github")], link-type: "https://"), | |
contact-item(linkedin, prefix: [#fa-icon("linkedin")], link-type: "https://"), | |
contact-item(personal-site, prefix: [#fa-icon("user")], link-type: "https://"), | |
contact-item(orcid, prefix: [#orcid-icon(color: rgb("#AECD54"))], link-type: "https://orcid.org/"), | |
) | |
items.filter(x => x != none).join(" | ") | |
} | |
#h(1fr) #datetime.today().display()], | |
) | |
// Main body. | |
set par(justify: true) | |
body | |
} | |
// Generic two by two component for resume | |
#let generic-two-by-two( | |
top-left: "", | |
top-right: "", | |
bottom-left: "", | |
bottom-right: "", | |
) = { | |
[ | |
#top-left #h(1fr) #top-right \ | |
#bottom-left #h(1fr) #bottom-right | |
] | |
} | |
// Generic one by two component for resume | |
#let generic-one-by-two( | |
left: "", | |
right: "", | |
) = { | |
[ | |
#left #h(1fr) #right | |
] | |
} | |
// Cannot just use normal --- ligature becuase ligatures are disabled for good reasons | |
#let dates-helper( | |
start-date: "", | |
end-date: "", | |
) = { | |
start-date + " " + $dash.em$ + " " + end-date | |
} | |
// Section components below | |
#let edu( | |
institution: "", | |
dates: "", | |
degree: "", | |
gpa: "", | |
location: "", | |
// Makes dates on upper right like rest of components | |
consistent: false, | |
) = { | |
if consistent { | |
// edu-constant style (dates top-right, location bottom-right) | |
generic-two-by-two( | |
top-left: strong(institution), | |
top-right: dates, | |
bottom-left: emph(degree), | |
bottom-right: emph(location), | |
) | |
} else { | |
// original edu style (location top-right, dates bottom-right) | |
generic-two-by-two( | |
top-left: strong(institution), | |
top-right: location, | |
bottom-left: emph(degree), | |
bottom-right: emph(dates), | |
) | |
} | |
} | |
#let work( | |
title: "", | |
dates: "", | |
company: "", | |
location: "", | |
) = { | |
generic-two-by-two( | |
top-left: strong(title), | |
top-right: dates, | |
bottom-left: company, | |
bottom-right: emph(location), | |
) | |
} | |
#let project( | |
role: "", | |
name: "", | |
url: "", | |
dates: "", | |
) = { | |
generic-one-by-two( | |
left: { | |
if role == "" { | |
[*#name* #if url != "" and dates != "" [ (#link("https://" + url)[#url])]] | |
} else { | |
[*#role*, #name #if url != "" and dates != "" [ (#link("https://" + url)[#url])]] | |
} | |
}, | |
right: { | |
if dates == "" and url != "" { | |
link("https://" + url)[#url] | |
} else { | |
dates | |
} | |
}, | |
) | |
} | |
#let certificates( | |
name: "", | |
issuer: "", | |
url: "", | |
date: "", | |
) = { | |
[ | |
*#name*, #issuer | |
#if url != "" { | |
[ (#link("https://" + url)[#url])] | |
} | |
#h(1fr) #date | |
] | |
} | |
#let extracurriculars( | |
activity: "", | |
dates: "", | |
) = { | |
generic-one-by-two( | |
left: strong(activity), | |
right: dates, | |
) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment