Allow manually overriding main or sidebar sections
This commit is contained in:
parent
03acad7a44
commit
cfa3e8a625
2 changed files with 75 additions and 31 deletions
45
README.md
Normal file
45
README.md
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Data-driven CV & resume
|
||||||
|
|
||||||
|
My personal CV and resume files, automatically generated from a multi-lingual
|
||||||
|
yaml data file.
|
||||||
|
|
||||||
|
The CV contains a full run-down of my educational and job experience to date,
|
||||||
|
while the resume is more compact, reduced to a single page
|
||||||
|
and can be tailored for a specific job area or expertise.
|
||||||
|
|
||||||
|
Is called like the following:
|
||||||
|
|
||||||
|
```typst
|
||||||
|
#resume(
|
||||||
|
yaml("content.yml"),
|
||||||
|
main: ("experience", "education", "volunteering", "skills", "languages"),
|
||||||
|
sidebar: ("volunteering", "skills")
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
This is the default invocation, though sidebar and main body sections can be exchanged at will.
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
- [x] move double-resume sources (per langauge) to a variable or similar
|
||||||
|
- [x] separate volunteering from skills section
|
||||||
|
- [_] one function per skill section
|
||||||
|
- [_] resume prep:
|
||||||
|
- [ ] make experience groupable by client / short version
|
||||||
|
- [ ] enable display/hiding of sections/entries by tags?
|
||||||
|
|
||||||
|
- [x] migrate to typst template?
|
||||||
|
- [x] ! Fix german summary to be like English summary
|
||||||
|
- [_] generalized entry?
|
||||||
|
Would have 'title', 'place', 'date', 'type'/'tags' + potential
|
||||||
|
'publication', 'bullets'
|
||||||
|
|
||||||
|
## Typst-driven branch
|
||||||
|
|
||||||
|
- [x] Fix publication '\&'s
|
||||||
|
- [x] Fix en-dash/em-dash (e.g. in years)
|
||||||
|
- [x] Producable from yaml content
|
||||||
|
- [x] Can be switched between Ger/En
|
||||||
|
- [x] Try sidebar version
|
||||||
|
- [ ] Generalize sidebar version through abstraction/extractions
|
||||||
|
- [ ] unify items: experience/education/(thesis?)
|
61
resume.typ
61
resume.typ
|
@ -170,7 +170,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#let resume(contents) = {
|
#let resume(contents, main: ("experience", "education"), sidebar: ("volunteering", "languages", "skills")) = {
|
||||||
set text(lang: lang)
|
set text(lang: lang)
|
||||||
|
|
||||||
let date_formatting = {
|
let date_formatting = {
|
||||||
|
@ -203,48 +203,48 @@
|
||||||
header(contents.about)
|
header(contents.about)
|
||||||
|
|
||||||
let body = {
|
let body = {
|
||||||
// if "summary" in contents {
|
if "summary" in main and "summary" in contents {
|
||||||
// section(title:"", {
|
section(title:"", {
|
||||||
// contents.summary.at(lang)
|
contents.summary.at(lang)
|
||||||
// })
|
})
|
||||||
// };
|
}
|
||||||
|
|
||||||
if "experience" in contents {
|
if "experience" in main and "experience" in contents {
|
||||||
let title = sel_word_lang(en:"Professional Experience", de:"Berufserfahrung")
|
let title = sel_word_lang(en:"Professional Experience", de:"Berufserfahrung")
|
||||||
section(title: title)[]
|
section(title: title)[]
|
||||||
by_experience_type(experience: contents.experience, type: contents.experience_types)
|
by_experience_type(experience: contents.experience, type: contents.experience_types)
|
||||||
}
|
}
|
||||||
|
|
||||||
if "education" in contents {
|
if "education" in main and "education" in contents {
|
||||||
let title = sel_word_lang(en:"Education", de:"Ausbildung")
|
let title = sel_word_lang(en:"Education", de:"Ausbildung")
|
||||||
section(title: title, entries:contents.thesis + contents.education)[]
|
section(title: title, entries:contents.thesis + contents.education)[]
|
||||||
}
|
}
|
||||||
|
|
||||||
// if "volunteering" in contents {
|
if "volunteering" in main and "volunteering" in contents {
|
||||||
// let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
||||||
// section(title: title, entries:contents.volunteering)[]
|
section(title: title, entries:contents.volunteering)[]
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// if "skills" in contents {
|
if "skills" in main and "skills" in contents {
|
||||||
// let title = sel_word_lang(en:"Qualifications", de:"Qualifikationen")
|
let title = sel_word_lang(en:"Qualifications", de:"Qualifikationen")
|
||||||
// section(title: title, {
|
section(title: title, {
|
||||||
// skill_item(item:contents.skills)
|
skill_item(item:contents.skills)
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// if "languages" in contents {
|
if "languages" in main and "languages" in contents {
|
||||||
// let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
||||||
// section(title: title, {
|
section(title: title, {
|
||||||
// skill_item(item:contents.languages)
|
skill_item(item:contents.languages)
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let sidebar = {
|
let sidebar = {
|
||||||
if "volunteering" in contents {
|
if "volunteering" in sidebar and "volunteering" in contents {
|
||||||
let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
||||||
[== #title]
|
[== #title]
|
||||||
for e in contents.volunteering {
|
for e in contents.at("volunteering") {
|
||||||
[
|
[
|
||||||
- *#e.title.at(lang)* (#e.date.at(lang))
|
- *#e.title.at(lang)* (#e.date.at(lang))
|
||||||
#par(e.bullets.at(0).at(lang)) \
|
#par(e.bullets.at(0).at(lang)) \
|
||||||
|
@ -252,14 +252,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if "languages" in contents {
|
if "languages" in sidebar and "languages" in contents {
|
||||||
let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
||||||
[== #title]
|
[== #title]
|
||||||
skill_item(item:contents.languages, is_sidebar: true)
|
skill_item(item:contents.languages, is_sidebar: true)
|
||||||
[\ ]
|
[\ ]
|
||||||
}
|
}
|
||||||
|
|
||||||
if "skills" in contents {
|
if "skills" in sidebar and "skills" in contents {
|
||||||
let title = sel_word_lang(en:"Qualifications", de:"Kenntnisse")
|
let title = sel_word_lang(en:"Qualifications", de:"Kenntnisse")
|
||||||
[== #title]
|
[== #title]
|
||||||
skill_item(item:contents.skills, is_sidebar: true)
|
skill_item(item:contents.skills, is_sidebar: true)
|
||||||
|
@ -307,4 +307,3 @@
|
||||||
#resume(
|
#resume(
|
||||||
yaml("content.yml")
|
yaml("content.yml")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue