feat: update template design & add cover letter option
This commit is contained in:
parent
8f783151ef
commit
22b73648d5
3 changed files with 153 additions and 37 deletions
|
@ -39,7 +39,9 @@
|
|||
typstSource = "src/main.typ";
|
||||
typstOutput = "out/main.pdf";
|
||||
|
||||
fontPaths = [ ];
|
||||
fontPaths = [
|
||||
"${pkgs.work-sans}/share/fonts/opentype"
|
||||
];
|
||||
|
||||
virtualPaths = [ ];
|
||||
};
|
||||
|
|
184
src/lib/main.typ
184
src/lib/main.typ
|
@ -1,22 +1,18 @@
|
|||
#import "@preview/scienceicons:0.0.6": orcid-icon
|
||||
#import "@preview/scienceicons:0.0.6": (
|
||||
email-icon,
|
||||
github-icon,
|
||||
linkedin-icon,
|
||||
orcid-icon,
|
||||
website-icon,
|
||||
)
|
||||
|
||||
// based on https://github.com/stuxf/basic-typst-resume-template
|
||||
|
||||
#let resume(
|
||||
#let common-doc(
|
||||
author: "",
|
||||
author-position: left,
|
||||
personal-info-position: left,
|
||||
pronouns: "",
|
||||
location: "",
|
||||
email: "",
|
||||
github: "",
|
||||
linkedin: "",
|
||||
phone: "",
|
||||
personal-site: "",
|
||||
orcid: "",
|
||||
accent-color: "#000000",
|
||||
font: "New Computer Modern",
|
||||
font: "Work Sans",
|
||||
paper: "a4",
|
||||
accent-color: "#000000",
|
||||
body,
|
||||
) = {
|
||||
// Sets document metadata
|
||||
|
@ -54,7 +50,7 @@
|
|||
|
||||
// Name will be aligned left, bold and big
|
||||
show heading.where(level: 1): it => [
|
||||
#set align(author-position)
|
||||
#set align(left)
|
||||
#set text(
|
||||
weight: 700,
|
||||
size: 20pt,
|
||||
|
@ -62,43 +58,114 @@
|
|||
#pad(it.body)
|
||||
]
|
||||
|
||||
// Level 1 Heading
|
||||
[= #(author)]
|
||||
body
|
||||
}
|
||||
|
||||
// Personal Info Helper
|
||||
let contact-item(value, prefix: "", link-type: "") = {
|
||||
if value != "" {
|
||||
if link-type != "" {
|
||||
link(link-type + value)[#(prefix + value)]
|
||||
} else {
|
||||
value
|
||||
}
|
||||
// Personal Info Helper
|
||||
#let contact-item(value, icon: "", prefix: "", link-type: "") = {
|
||||
if value != "" {
|
||||
if icon != "" {
|
||||
icon + " "
|
||||
}
|
||||
if link-type != "" {
|
||||
link(link-type + value)[#(prefix + value)]
|
||||
} else {
|
||||
value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Personal Info
|
||||
// Personal Info
|
||||
#let personal-info(
|
||||
position: left,
|
||||
with-icons: false,
|
||||
separator: " | ",
|
||||
pronouns: "",
|
||||
phone: "",
|
||||
location: "",
|
||||
email: "",
|
||||
github: "",
|
||||
linkedin: "",
|
||||
personal-site: "",
|
||||
orcid: "",
|
||||
) = {
|
||||
pad(
|
||||
top: 0.25em,
|
||||
align(personal-info-position)[
|
||||
align(position)[
|
||||
#{
|
||||
let items = (
|
||||
contact-item(pronouns),
|
||||
contact-item(phone),
|
||||
contact-item(location),
|
||||
contact-item(email, link-type: "mailto:"),
|
||||
contact-item(github, link-type: "https://"),
|
||||
contact-item(linkedin, link-type: "https://"),
|
||||
contact-item(personal-site, link-type: "https://"),
|
||||
contact-item(
|
||||
email,
|
||||
icon: if with-icons { email-icon() } else { "" },
|
||||
link-type: "mailto:",
|
||||
),
|
||||
contact-item(
|
||||
github,
|
||||
icon: if with-icons { github-icon() } else { "" },
|
||||
link-type: "https://",
|
||||
),
|
||||
contact-item(
|
||||
linkedin,
|
||||
icon: if with-icons { linkedin-icon() } else { "" },
|
||||
link-type: "https://",
|
||||
),
|
||||
contact-item(
|
||||
personal-site,
|
||||
icon: if with-icons { website-icon() } else { "" },
|
||||
link-type: "https://",
|
||||
),
|
||||
contact-item(
|
||||
orcid,
|
||||
prefix: [#orcid-icon(color: rgb("#AECD54"))orcid.org/],
|
||||
icon: orcid-icon(color: rgb("#AECD54")),
|
||||
prefix: "orcid.org/",
|
||||
link-type: "https://orcid.org/",
|
||||
),
|
||||
)
|
||||
items.filter(x => x != none).join(" | ")
|
||||
items.filter(x => x != none).join(separator)
|
||||
}
|
||||
],
|
||||
)
|
||||
}
|
||||
|
||||
#let resume(
|
||||
author: "",
|
||||
pronouns: "",
|
||||
location: "",
|
||||
email: "",
|
||||
github: "",
|
||||
linkedin: "",
|
||||
phone: "",
|
||||
personal-site: "",
|
||||
orcid: "",
|
||||
accent-color: "#000000",
|
||||
font: "Work Sans",
|
||||
paper: "a4",
|
||||
body,
|
||||
) = {
|
||||
show: common-doc.with(
|
||||
author: author,
|
||||
font: font,
|
||||
paper: paper,
|
||||
accent-color: accent-color,
|
||||
)
|
||||
|
||||
// Level 1 Heading
|
||||
[= #(author)]
|
||||
|
||||
personal-info(
|
||||
position: left,
|
||||
pronouns: pronouns,
|
||||
location: location,
|
||||
email: email,
|
||||
phone: phone,
|
||||
github: github,
|
||||
linkedin: linkedin,
|
||||
personal-site: personal-site,
|
||||
orcid: orcid,
|
||||
)
|
||||
|
||||
// Main body.
|
||||
set par(justify: true)
|
||||
|
@ -106,6 +173,55 @@
|
|||
body
|
||||
}
|
||||
|
||||
#let cover-letter(
|
||||
author: "",
|
||||
title: "",
|
||||
pronouns: "",
|
||||
location: "",
|
||||
email: "",
|
||||
github: "",
|
||||
linkedin: "",
|
||||
phone: "",
|
||||
personal-site: "",
|
||||
orcid: "",
|
||||
accent-color: "#000000",
|
||||
font: "Work Sans",
|
||||
paper: "a4",
|
||||
body,
|
||||
) = {
|
||||
show: common-doc.with(
|
||||
author: author,
|
||||
font: font,
|
||||
paper: paper,
|
||||
accent-color: accent-color,
|
||||
)
|
||||
|
||||
grid(
|
||||
columns: (70%, auto),
|
||||
[
|
||||
#[= #(author)]
|
||||
#if (title != "") {
|
||||
[#text(title, fill: rgb(accent-color), size: 12pt)]
|
||||
} \
|
||||
#location
|
||||
],
|
||||
personal-info(
|
||||
with-icons: true,
|
||||
position: left,
|
||||
separator: "\n",
|
||||
pronouns: pronouns,
|
||||
email: email,
|
||||
phone: phone,
|
||||
github: github,
|
||||
linkedin: linkedin,
|
||||
personal-site: personal-site,
|
||||
orcid: orcid,
|
||||
),
|
||||
)
|
||||
|
||||
body
|
||||
}
|
||||
|
||||
// Generic two by two component for resume
|
||||
#let generic-two-by-two(
|
||||
top-left: "",
|
||||
|
@ -162,7 +278,7 @@
|
|||
generic-two-by-two(
|
||||
top-left: strong(title),
|
||||
top-right: dates,
|
||||
bottom-left: company,
|
||||
bottom-left: emph(company),
|
||||
bottom-right: emph(location),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
accent-color: "#26428b",
|
||||
font: "New Computer Modern",
|
||||
paper: "a4",
|
||||
author-position: left,
|
||||
personal-info-position: left,
|
||||
)
|
||||
|
||||
== Work Experience
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue