Compare commits
4 Commits
e50b6e70b7
...
007e711c2c
Author | SHA1 | Date |
---|---|---|
Bauke | 007e711c2c | |
Bauke | 94241d16a1 | |
Bauke | d27b64bd40 | |
Bauke | 4ec59a1414 |
|
@ -2,3 +2,4 @@
|
|||
.vscode/
|
||||
build/
|
||||
data/
|
||||
cv.typ
|
||||
|
|
|
@ -23,12 +23,7 @@ args = ["trash", "build"]
|
|||
[tasks.compile]
|
||||
clear = true
|
||||
dependencies = ["ensure-build-dir"]
|
||||
command = "typst"
|
||||
args = [
|
||||
"compile",
|
||||
"cv-${CV_LANG}.typ",
|
||||
"build/CV-Bauke-${CV_LANG}.pdf"
|
||||
]
|
||||
script = "./compile-cv.zsh"
|
||||
|
||||
# Ensure that the build directory exists.
|
||||
[tasks.ensure-build-dir]
|
||||
|
@ -41,4 +36,4 @@ args = ["-p", "build"]
|
|||
[tasks.watch]
|
||||
clear = true
|
||||
command = "watchexec"
|
||||
args = ["-e", "toml,typ", "--no-vcs-ignore", "makers build"]
|
||||
args = ["-e", "toml,typ", "-i", "cv.typ", "--no-vcs-ignore", "makers build"]
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
# There's currently no way in Typst to provide values from the CLI in some way
|
||||
# so until the next version lands and https://github.com/typst/typst/pull/2894
|
||||
# becomes available, a script that renders a template has to be it for now.
|
||||
|
||||
# Define options based on environment variables or use default values.
|
||||
include_links=${CV_INCLUDE_LINKS:-"true"}
|
||||
language=${CV_LANG:-"en"}
|
||||
|
||||
typst_template="#import \"main.typ\": cv
|
||||
|
||||
#cv(
|
||||
include_links: $include_links,
|
||||
language: \"$language\",
|
||||
)"
|
||||
|
||||
echo $typst_template > cv.typ
|
||||
|
||||
typst compile cv.typ "build/CV-Bauke-$CV_LANG.pdf"
|
|
@ -0,0 +1,7 @@
|
|||
#import "../utilities/localize.typ": localize
|
||||
|
||||
#let experience_section(data, language) = [
|
||||
== #localize(data, "experience", language)
|
||||
|
||||
#eval(localize(data, "experience_body", language))
|
||||
]
|
|
@ -0,0 +1,48 @@
|
|||
#import "../utilities/icon-with-text.typ": icon_with_text
|
||||
#import "../utilities/localize.typ": localize
|
||||
|
||||
#let personal_project(data, language) = {
|
||||
let icon_size = 1.4em
|
||||
|
||||
let personal_project_name = localize(data, "name", language)
|
||||
|
||||
let personal_project_heading = heading(level: 3, link(data.link, personal_project_name));
|
||||
|
||||
let personal_project_header = if "header_image" in data {
|
||||
icon_with_text(
|
||||
clip_icon: true,
|
||||
icon: "../" + data.header_image,
|
||||
icon_alt_text: personal_project_name,
|
||||
icon_size: icon_size,
|
||||
personal_project_heading,
|
||||
)
|
||||
} else {
|
||||
personal_project_heading
|
||||
}
|
||||
|
||||
// Use a grid to space out the header and the body.
|
||||
grid(
|
||||
gutter: 0.5em,
|
||||
// Set the height explicitly so the ones with icons don't look different
|
||||
// from the ones without.
|
||||
box(
|
||||
height: icon_size,
|
||||
// Use another grid to position the title and date.
|
||||
grid(
|
||||
columns: (1fr, auto),
|
||||
personal_project_header,
|
||||
align(horizon, text(size: 0.9em, localize(data, "date", language))),
|
||||
),
|
||||
),
|
||||
// The body can contain Typst code so we use `eval()` to render it.
|
||||
eval(localize(data, "body", language)),
|
||||
)
|
||||
}
|
||||
|
||||
#let personal_projects_section(data, language) = [
|
||||
== #localize(data.locale, "personal_projects", language)
|
||||
|
||||
#for data in data.personal_projects {
|
||||
personal_project(data, language)
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue