Bauke/cv
Bauke
/
cv
1
Fork 0
cv/main.typ

54 lines
1.6 KiB
Plaintext

#import "./components/experience.typ": experience_section
#import "./components/personal-projects.typ": personal_projects_section
#import "./components/skills.typ": skills_section
#import "./components/header.typ": header
#import "./utilities/content-to-string.typ": content_to_string
#import "./utilities/localize.typ": localize
#let cv(include_links: true, language: "", version: "") = {
if language == "" {
panic("No language option specified.")
}
let data = toml("data/info.toml")
set document(
author: data.name,
title: content_to_string([CV #data.name (#language)]),
)
set text(font: "Inter", lang: language, size: 12pt)
// The links color and styling has to be done this way because the `show`
// keyword only applies to the scope of the block it is in. Meaning it won't
// apply globally when put inside the `if` block.
let links = if include_links {
(color: rgb("#000080"), style: underline)
} else {
(color: black, style: (body) => body)
}
show link: set text(links.color)
show link: links.style
header(data, language, include_links)
place(
bottom + right,
text(fill: rgb("#999"), [#localize(data, "version", language) #version]),
)
// Portion out the main body using a grid.
grid(
columns: (60%, 40%),
gutter: 1.5em,
// Place the Experience and Personal Projects sections vertically in the
// left column of the grid.
{
experience_section(data, language)
personal_projects_section(data, language)
},
// And the Skills section in the right column.
skills_section(data, language),
)
}