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)
|
||||
|
||||
let date_formatting = {
|
||||
|
@ -203,48 +203,48 @@
|
|||
header(contents.about)
|
||||
|
||||
let body = {
|
||||
// if "summary" in contents {
|
||||
// section(title:"", {
|
||||
// contents.summary.at(lang)
|
||||
// })
|
||||
// };
|
||||
if "summary" in main and "summary" in contents {
|
||||
section(title:"", {
|
||||
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")
|
||||
section(title: title)[]
|
||||
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")
|
||||
section(title: title, entries:contents.thesis + contents.education)[]
|
||||
}
|
||||
|
||||
// if "volunteering" in contents {
|
||||
// let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
||||
// section(title: title, entries:contents.volunteering)[]
|
||||
// }
|
||||
//
|
||||
// if "skills" in contents {
|
||||
// let title = sel_word_lang(en:"Qualifications", de:"Qualifikationen")
|
||||
// section(title: title, {
|
||||
// skill_item(item:contents.skills)
|
||||
// })
|
||||
// }
|
||||
//
|
||||
// if "languages" in contents {
|
||||
// let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
||||
// section(title: title, {
|
||||
// skill_item(item:contents.languages)
|
||||
// })
|
||||
// }
|
||||
if "volunteering" in main and "volunteering" in contents {
|
||||
let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
||||
section(title: title, entries:contents.volunteering)[]
|
||||
}
|
||||
|
||||
if "skills" in main and "skills" in contents {
|
||||
let title = sel_word_lang(en:"Qualifications", de:"Qualifikationen")
|
||||
section(title: title, {
|
||||
skill_item(item:contents.skills)
|
||||
})
|
||||
}
|
||||
|
||||
if "languages" in main and "languages" in contents {
|
||||
let title = sel_word_lang(en:"Languages", de:"Sprachen")
|
||||
section(title: title, {
|
||||
skill_item(item:contents.languages)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
let sidebar = {
|
||||
if "volunteering" in contents {
|
||||
if "volunteering" in sidebar and "volunteering" in contents {
|
||||
let title = sel_word_lang(en:"Volunteer Work", de:"Ehrenamt")
|
||||
[== #title]
|
||||
for e in contents.volunteering {
|
||||
for e in contents.at("volunteering") {
|
||||
[
|
||||
- *#e.title.at(lang)* (#e.date.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")
|
||||
[== #title]
|
||||
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")
|
||||
[== #title]
|
||||
skill_item(item:contents.skills, is_sidebar: true)
|
||||
|
@ -307,4 +307,3 @@
|
|||
#resume(
|
||||
yaml("content.yml")
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue