rendercv init
This commit is contained in:
parent
2c7c63b22e
commit
db074edafa
25 changed files with 835 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1 +1,4 @@
|
||||||
.direnv/
|
.direnv/
|
||||||
|
*/__pycache__/
|
||||||
|
rendercv_output/
|
||||||
|
!rendercv_output/*.pdf
|
||||||
|
|
|
||||||
3
engineeringresumes/BulletEntry.j2.typ
Normal file
3
engineeringresumes/BulletEntry.j2.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#one-col-entry(
|
||||||
|
content: [- <<entry.bullet>>],
|
||||||
|
)
|
||||||
106
engineeringresumes/EducationEntry.j2.typ
Normal file
106
engineeringresumes/EducationEntry.j2.typ
Normal file
|
|
@ -0,0 +1,106 @@
|
||||||
|
((* if date_and_location_column_template and design.entry_types.education_entry.degree_column_template *))
|
||||||
|
// YES DATE, YES DEGREE
|
||||||
|
#three-col-entry(
|
||||||
|
left-column-width: <<design.entry_types.education_entry.degree_column_width>>,
|
||||||
|
left-content: [<<degree_column_template>>],
|
||||||
|
middle-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<date_and_location_column_template>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n")) and main_column_second_row_template *))
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#set par(spacing: 0pt)
|
||||||
|
<<main_column_second_row_template>>
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entry-types-education-entry-degree-column-width + design-entries-horizontal-space-between-columns + design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* elif date_and_location_column_template and not design.entry_types.education_entry.degree_column_template *))
|
||||||
|
// YES DATE, NO DEGREE
|
||||||
|
#two-col-entry(
|
||||||
|
left-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<date_and_location_column_template>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv") *))
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#set par(spacing: 0pt)
|
||||||
|
<<main_column_second_row_template>>
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* elif not date_and_location_column_template and design.entry_types.education_entry.degree_column_template *))
|
||||||
|
// NO DATE, YES DEGREE
|
||||||
|
#two-col-entry(
|
||||||
|
left-column-width: <<design.entry_types.education_entry.degree_column_width>>,
|
||||||
|
right-column-width: 1fr,
|
||||||
|
alignments: (left, left),
|
||||||
|
left-content: [
|
||||||
|
<<degree_column_template>>
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n")) and main_column_second_row_template *))
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#set par(spacing: 0pt)
|
||||||
|
<<main_column_second_row_template>>
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entry-types-education-entry-degree-column-width + design-entries-horizontal-space-between-columns + design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* else *))
|
||||||
|
// NO DATE, NO DEGREE
|
||||||
|
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
36
engineeringresumes/ExperienceEntry.j2.typ
Normal file
36
engineeringresumes/ExperienceEntry.j2.typ
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
((* if date_and_location_column_template *))
|
||||||
|
#two-col-entry(
|
||||||
|
left-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<date_and_location_column_template>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv") *))
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* else *))
|
||||||
|
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
42
engineeringresumes/Header.j2.typ
Normal file
42
engineeringresumes/Header.j2.typ
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
((* if cv.photo *))
|
||||||
|
#two-col(
|
||||||
|
left-column-width: design-header-photo-width * 1.1,
|
||||||
|
right-column-width: 1fr,
|
||||||
|
left-content: [
|
||||||
|
#align(
|
||||||
|
left + horizon,
|
||||||
|
image("profile_picture.jpg", width: design-header-photo-width),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
column-gutter: 0cm,
|
||||||
|
right-content: [
|
||||||
|
((* endif *))
|
||||||
|
((* if cv.name *))
|
||||||
|
= <<cv.name|escape_typst_characters>>
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
// Print connections:
|
||||||
|
#let connections-list = (
|
||||||
|
((* for connection in cv.connections *))
|
||||||
|
[((*- if connection["url"] -*))
|
||||||
|
#box(original-link("<<connection["url"]>>")[
|
||||||
|
((*- endif -*))
|
||||||
|
((*- if design.header.use_icons_for_connections -*))
|
||||||
|
#fa-icon("<<connection["typst_icon"]>>", size: 0.9em) #h(0.05cm)
|
||||||
|
((*- endif -*))
|
||||||
|
((*- if design.header.use_icons_for_connections or not connection["url"] -*))
|
||||||
|
<<connection["placeholder"]|escape_typst_characters>>
|
||||||
|
((*- else -*))
|
||||||
|
<<connection["clean_url"]|escape_typst_characters>>
|
||||||
|
((*- endif -*))
|
||||||
|
((*- if connection["url"] -*))
|
||||||
|
])
|
||||||
|
((*- endif -*))],
|
||||||
|
((* endfor *))
|
||||||
|
)
|
||||||
|
#connections(connections-list)
|
||||||
|
|
||||||
|
((* if cv.photo *))
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
36
engineeringresumes/NormalEntry.j2.typ
Normal file
36
engineeringresumes/NormalEntry.j2.typ
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
((* if date_and_location_column_template *))
|
||||||
|
#two-col-entry(
|
||||||
|
left-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<date_and_location_column_template>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv") *))
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* else *))
|
||||||
|
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
|
||||||
|
((* if main_column_second_row_template *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* endif *))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(-design-text-leading)")>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
1
engineeringresumes/NumberedEntry.j2.typ
Normal file
1
engineeringresumes/NumberedEntry.j2.typ
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
+ <<entry.number>>
|
||||||
3
engineeringresumes/OneLineEntry.j2.typ
Normal file
3
engineeringresumes/OneLineEntry.j2.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#one-col-entry(
|
||||||
|
content: [<<template>>]
|
||||||
|
)
|
||||||
461
engineeringresumes/Preamble.j2.typ
Normal file
461
engineeringresumes/Preamble.j2.typ
Normal file
|
|
@ -0,0 +1,461 @@
|
||||||
|
|
||||||
|
((* set page_numbering_template_placeholders = {
|
||||||
|
"NAME": cv.name,
|
||||||
|
"PAGE_NUMBER": "\" + str(here().page()) + \"",
|
||||||
|
"TOTAL_PAGES": "\" + str(counter(page).final().first()) + \"",
|
||||||
|
"TODAY": today
|
||||||
|
} *))
|
||||||
|
((* set last_updated_date_template_placeholders = {
|
||||||
|
"TODAY": today,
|
||||||
|
} *))
|
||||||
|
#import "@preview/fontawesome:0.5.0": fa-icon
|
||||||
|
|
||||||
|
#let name = "<<cv.name|remove_typst_commands>>"
|
||||||
|
#let locale-catalog-page-numbering-style = context { "<<locale.page_numbering_template|replace_placeholders_with_actual_values(page_numbering_template_placeholders)>>" }
|
||||||
|
#let locale-catalog-last-updated-date-style = "<<locale.last_updated_date_template|replace_placeholders_with_actual_values(last_updated_date_template_placeholders)>>"
|
||||||
|
#let locale-catalog-language = "<<locale.language>>"
|
||||||
|
#let design-page-size = "<<design.page.size>>"
|
||||||
|
#let design-section-titles-font-size = <<design.section_titles.font_size>>
|
||||||
|
#let design-colors-text = <<design.colors.text.as_rgb()>>
|
||||||
|
#let design-colors-section-titles = <<design.colors.section_titles.as_rgb()>>
|
||||||
|
#let design-colors-last-updated-date-and-page-numbering = <<design.colors.last_updated_date_and_page_numbering.as_rgb()>>
|
||||||
|
#let design-colors-name = <<design.colors.name.as_rgb()>>
|
||||||
|
#let design-colors-connections = <<design.colors.connections.as_rgb()>>
|
||||||
|
#let design-colors-links = <<design.colors.links.as_rgb()>>
|
||||||
|
#let design-section-titles-font-family = "<<design.section_titles.font_family>>"
|
||||||
|
#let design-section-titles-bold = <<design.section_titles.bold|lower>>
|
||||||
|
#let design-section-titles-line-thickness = <<design.section_titles.line_thickness>>
|
||||||
|
#let design-section-titles-font-size = <<design.section_titles.font_size>>
|
||||||
|
#let design-section-titles-type = "<<design.section_titles.type>>"
|
||||||
|
#let design-section-titles-vertical-space-above = <<design.section_titles.vertical_space_above>>
|
||||||
|
#let design-section-titles-vertical-space-below = <<design.section_titles.vertical_space_below>>
|
||||||
|
#let design-section-titles-small-caps = <<design.section_titles.small_caps|lower>>
|
||||||
|
#let design-links-use-external-link-icon = <<design.links.use_external_link_icon|lower>>
|
||||||
|
#let design-text-font-size = <<design.text.font_size>>
|
||||||
|
#let design-text-leading = <<design.text.leading>>
|
||||||
|
#let design-text-font-family = "<<design.text.font_family>>"
|
||||||
|
#let design-text-alignment = "<<design.text.alignment>>"
|
||||||
|
#let design-text-date-and-location-column-alignment = <<design.text.date_and_location_column_alignment>>
|
||||||
|
#let design-header-photo-width = <<design.header.photo_width>>
|
||||||
|
#let design-header-use-icons-for-connections = <<design.header.use_icons_for_connections|lower>>
|
||||||
|
#let design-header-name-font-family = "<<design.header.name_font_family>>"
|
||||||
|
#let design-header-name-font-size = <<design.header.name_font_size>>
|
||||||
|
#let design-header-name-bold = <<design.header.name_bold|lower>>
|
||||||
|
#let design-header-connections-font-family = "<<design.header.connections_font_family>>"
|
||||||
|
#let design-header-vertical-space-between-name-and-connections = <<design.header.vertical_space_between_name_and_connections>>
|
||||||
|
#let design-header-vertical-space-between-connections-and-first-section = <<design.header.vertical_space_between_connections_and_first_section>>
|
||||||
|
#let design-header-use-icons-for-connections = <<design.header.use_icons_for_connections|lower>>
|
||||||
|
#let design-header-horizontal-space-between-connections = <<design.header.horizontal_space_between_connections>>
|
||||||
|
#let design-header-separator-between-connections = "<<design.header.separator_between_connections>>"
|
||||||
|
#let design-header-alignment = <<design.header.alignment>>
|
||||||
|
#let design-highlights-summary-left-margin = <<design.highlights.summary_left_margin>>
|
||||||
|
#let design-highlights-bullet = "<<design.highlights.bullet>>"
|
||||||
|
#let design-highlights-top-margin = <<design.highlights.top_margin>>
|
||||||
|
#let design-highlights-left-margin = <<design.highlights.left_margin>>
|
||||||
|
#let design-highlights-vertical-space-between-highlights = <<design.highlights.vertical_space_between_highlights>>
|
||||||
|
#let design-highlights-horizontal-space-between-bullet-and-highlights = <<design.highlights.horizontal_space_between_bullet_and_highlight>>
|
||||||
|
#let design-entries-vertical-space-between-entries = <<design.entries.vertical_space_between_entries>>
|
||||||
|
#let design-entries-date-and-location-width = <<design.entries.date_and_location_width>>
|
||||||
|
#let design-entries-allow-page-break-in-entries = <<design.entries.allow_page_break_in_entries|lower>>
|
||||||
|
#let design-entries-horizontal-space-between-columns = <<design.entries.horizontal_space_between_columns>>
|
||||||
|
#let design-entries-left-and-right-margin = <<design.entries.left_and_right_margin>>
|
||||||
|
#let design-page-top-margin = <<design.page.top_margin>>
|
||||||
|
#let design-page-bottom-margin = <<design.page.bottom_margin>>
|
||||||
|
#let design-page-left-margin = <<design.page.left_margin>>
|
||||||
|
#let design-page-right-margin = <<design.page.right_margin>>
|
||||||
|
#let design-page-show-last-updated-date = <<design.page.show_last_updated_date|lower>>
|
||||||
|
#let design-page-show-page-numbering = <<design.page.show_page_numbering|lower>>
|
||||||
|
#let design-links-underline = <<design.links.underline|lower>>
|
||||||
|
#let design-entry-types-education-entry-degree-column-width = <<design.entry_types.education_entry.degree_column_width>>
|
||||||
|
#let date = datetime.today()
|
||||||
|
|
||||||
|
// Metadata:
|
||||||
|
#set document(author: name, title: name + "'s CV", date: date)
|
||||||
|
|
||||||
|
// Page settings:
|
||||||
|
#set page(
|
||||||
|
margin: (
|
||||||
|
top: design-page-top-margin,
|
||||||
|
bottom: design-page-bottom-margin,
|
||||||
|
left: design-page-left-margin,
|
||||||
|
right: design-page-right-margin,
|
||||||
|
),
|
||||||
|
paper: design-page-size,
|
||||||
|
footer: if design-page-show-page-numbering {
|
||||||
|
text(
|
||||||
|
fill: design-colors-last-updated-date-and-page-numbering,
|
||||||
|
align(center, [_#locale-catalog-page-numbering-style _]),
|
||||||
|
size: 0.9em,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
none
|
||||||
|
},
|
||||||
|
footer-descent: 0% - 0.3em + design-page-bottom-margin / 2,
|
||||||
|
)
|
||||||
|
// Text settings:
|
||||||
|
#let justify
|
||||||
|
#let hyphenate
|
||||||
|
#if design-text-alignment == "justified" {
|
||||||
|
justify = true
|
||||||
|
hyphenate = true
|
||||||
|
} else if design-text-alignment == "left" {
|
||||||
|
justify = false
|
||||||
|
hyphenate = false
|
||||||
|
} else if design-text-alignment == "justified-with-no-hyphenation" {
|
||||||
|
justify = true
|
||||||
|
hyphenate = false
|
||||||
|
}
|
||||||
|
#set text(
|
||||||
|
font: design-text-font-family,
|
||||||
|
size: design-text-font-size,
|
||||||
|
lang: locale-catalog-language,
|
||||||
|
hyphenate: hyphenate,
|
||||||
|
fill: design-colors-text,
|
||||||
|
// Disable ligatures for better ATS compatibility:
|
||||||
|
ligatures: true,
|
||||||
|
)
|
||||||
|
#set par(
|
||||||
|
spacing: 0pt,
|
||||||
|
leading: design-text-leading,
|
||||||
|
justify: justify,
|
||||||
|
)
|
||||||
|
#set enum(
|
||||||
|
spacing: design-entries-vertical-space-between-entries,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Highlights settings:
|
||||||
|
#let highlights(..content) = {
|
||||||
|
list(
|
||||||
|
..content,
|
||||||
|
marker: design-highlights-bullet,
|
||||||
|
spacing: design-highlights-vertical-space-between-highlights,
|
||||||
|
indent: design-highlights-left-margin,
|
||||||
|
body-indent: design-highlights-horizontal-space-between-bullet-and-highlights,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
#show list: set list(
|
||||||
|
marker: design-highlights-bullet,
|
||||||
|
spacing: 0pt,
|
||||||
|
indent: 0pt,
|
||||||
|
body-indent: design-highlights-horizontal-space-between-bullet-and-highlights,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Entry utilities:
|
||||||
|
#let three-col(
|
||||||
|
left-column-width: 1fr,
|
||||||
|
middle-column-width: 1fr,
|
||||||
|
right-column-width: design-entries-date-and-location-width,
|
||||||
|
left-content: "",
|
||||||
|
middle-content: "",
|
||||||
|
right-content: "",
|
||||||
|
alignments: (auto, auto, auto),
|
||||||
|
) = [
|
||||||
|
#block(
|
||||||
|
grid(
|
||||||
|
columns: (left-column-width, middle-column-width, right-column-width),
|
||||||
|
column-gutter: design-entries-horizontal-space-between-columns,
|
||||||
|
align: alignments,
|
||||||
|
([#set par(spacing: design-text-leading); #left-content]),
|
||||||
|
([#set par(spacing: design-text-leading); #middle-content]),
|
||||||
|
([#set par(spacing: design-text-leading); #right-content]),
|
||||||
|
),
|
||||||
|
breakable: true,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
#let two-col(
|
||||||
|
left-column-width: 1fr,
|
||||||
|
right-column-width: design-entries-date-and-location-width,
|
||||||
|
left-content: "",
|
||||||
|
right-content: "",
|
||||||
|
alignments: (auto, auto),
|
||||||
|
column-gutter: design-entries-horizontal-space-between-columns,
|
||||||
|
) = [
|
||||||
|
#block(
|
||||||
|
grid(
|
||||||
|
columns: (left-column-width, right-column-width),
|
||||||
|
column-gutter: column-gutter,
|
||||||
|
align: alignments,
|
||||||
|
([#set par(spacing: design-text-leading); #left-content]),
|
||||||
|
([#set par(spacing: design-text-leading); #right-content]),
|
||||||
|
),
|
||||||
|
breakable: true,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
// Main heading settings:
|
||||||
|
#let header-font-weight
|
||||||
|
#if design-header-name-bold {
|
||||||
|
header-font-weight = 700
|
||||||
|
} else {
|
||||||
|
header-font-weight = 400
|
||||||
|
}
|
||||||
|
#show heading.where(level: 1): it => [
|
||||||
|
#set par(spacing: 0pt)
|
||||||
|
#set align(design-header-alignment)
|
||||||
|
#set text(
|
||||||
|
font: design-header-name-font-family,
|
||||||
|
weight: header-font-weight,
|
||||||
|
size: design-header-name-font-size,
|
||||||
|
fill: design-colors-name,
|
||||||
|
)
|
||||||
|
#it.body
|
||||||
|
// Vertical space after the name
|
||||||
|
#v(design-header-vertical-space-between-name-and-connections)
|
||||||
|
]
|
||||||
|
|
||||||
|
#let section-title-font-weight
|
||||||
|
#if design-section-titles-bold {
|
||||||
|
section-title-font-weight = 700
|
||||||
|
} else {
|
||||||
|
section-title-font-weight = 400
|
||||||
|
}
|
||||||
|
|
||||||
|
#show heading.where(level: 2): it => [
|
||||||
|
#set align(left)
|
||||||
|
#set text(size: (1em / 1.2)) // reset
|
||||||
|
#set text(
|
||||||
|
font: design-section-titles-font-family,
|
||||||
|
size: (design-section-titles-font-size),
|
||||||
|
weight: section-title-font-weight,
|
||||||
|
fill: design-colors-section-titles,
|
||||||
|
)
|
||||||
|
#let section-title = (
|
||||||
|
if design-section-titles-small-caps [
|
||||||
|
#smallcaps(it.body)
|
||||||
|
] else [
|
||||||
|
#it.body
|
||||||
|
]
|
||||||
|
)
|
||||||
|
// Vertical space above the section title
|
||||||
|
#v(design-section-titles-vertical-space-above, weak: true)
|
||||||
|
#block(
|
||||||
|
breakable: false,
|
||||||
|
width: 100%,
|
||||||
|
[
|
||||||
|
#if design-section-titles-type == "moderncv" [
|
||||||
|
#two-col(
|
||||||
|
alignments: (right, left),
|
||||||
|
left-column-width: design-entries-date-and-location-width,
|
||||||
|
right-column-width: 1fr,
|
||||||
|
left-content: [
|
||||||
|
#align(horizon, box(width: 1fr, height: design-section-titles-line-thickness, fill: design-colors-section-titles))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
#section-title
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
] else [
|
||||||
|
#box(
|
||||||
|
[
|
||||||
|
#section-title
|
||||||
|
#if design-section-titles-type == "with-parial-line" [
|
||||||
|
#box(width: 1fr, height: design-section-titles-line-thickness, fill: design-colors-section-titles)
|
||||||
|
] else if design-section-titles-type == "with-full-line" [
|
||||||
|
|
||||||
|
#v(design-text-font-size * 0.4)
|
||||||
|
#box(width: 1fr, height: design-section-titles-line-thickness, fill: design-colors-section-titles)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
] + v(1em),
|
||||||
|
)
|
||||||
|
#v(-1em)
|
||||||
|
// Vertical space after the section title
|
||||||
|
#v(design-section-titles-vertical-space-below - 0.5em)
|
||||||
|
]
|
||||||
|
|
||||||
|
// Links:
|
||||||
|
#let original-link = link
|
||||||
|
#let link(url, body) = {
|
||||||
|
body = [#if design-links-underline [#underline(body)] else [#body]]
|
||||||
|
body = [#if design-links-use-external-link-icon [#body#h(design-text-font-size/4)#box(
|
||||||
|
fa-icon("external-link", size: 0.7em),
|
||||||
|
baseline: -10%,
|
||||||
|
)] else [#body]]
|
||||||
|
body = [#set text(fill: design-colors-links);#body]
|
||||||
|
original-link(url, body)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Last updated date text:
|
||||||
|
#if design-page-show-last-updated-date {
|
||||||
|
let dx
|
||||||
|
if design-section-titles-type == "moderncv" {
|
||||||
|
dx = 0cm
|
||||||
|
} else {
|
||||||
|
dx = -design-entries-left-and-right-margin
|
||||||
|
}
|
||||||
|
place(
|
||||||
|
top + right,
|
||||||
|
dy: -design-page-top-margin / 2,
|
||||||
|
dx: dx,
|
||||||
|
text(
|
||||||
|
[_#locale-catalog-last-updated-date-style _],
|
||||||
|
fill: design-colors-last-updated-date-and-page-numbering,
|
||||||
|
size: 0.9em,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let connections(connections-list) = context {
|
||||||
|
set text(fill: design-colors-connections, font: design-header-connections-font-family)
|
||||||
|
set par(leading: design-text-leading*1.7, justify: false)
|
||||||
|
let list-of-connections = ()
|
||||||
|
let separator = (
|
||||||
|
h(design-header-horizontal-space-between-connections / 2, weak: true)
|
||||||
|
+ design-header-separator-between-connections
|
||||||
|
+ h(design-header-horizontal-space-between-connections / 2, weak: true)
|
||||||
|
)
|
||||||
|
let starting-index = 0
|
||||||
|
while (starting-index < connections-list.len()) {
|
||||||
|
let left-sum-right-margin
|
||||||
|
if type(page.margin) == "dictionary" {
|
||||||
|
left-sum-right-margin = page.margin.left + page.margin.right
|
||||||
|
} else {
|
||||||
|
left-sum-right-margin = page.margin * 4
|
||||||
|
}
|
||||||
|
|
||||||
|
let ending-index = starting-index + 1
|
||||||
|
while (
|
||||||
|
measure(connections-list.slice(starting-index, ending-index).join(separator)).width
|
||||||
|
((* if cv.photo *))
|
||||||
|
< page.width - left-sum-right-margin - design-header-photo-width * 1.1
|
||||||
|
((* else *))
|
||||||
|
< page.width - left-sum-right-margin
|
||||||
|
((* endif *))
|
||||||
|
) {
|
||||||
|
ending-index = ending-index + 1
|
||||||
|
if ending-index > connections-list.len() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ending-index > connections-list.len() {
|
||||||
|
ending-index = connections-list.len()
|
||||||
|
}
|
||||||
|
list-of-connections.push(connections-list.slice(starting-index, ending-index).join(separator))
|
||||||
|
starting-index = ending-index
|
||||||
|
}
|
||||||
|
align(list-of-connections.join(linebreak()), design-header-alignment)
|
||||||
|
v(design-header-vertical-space-between-connections-and-first-section - design-section-titles-vertical-space-above)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let three-col-entry(
|
||||||
|
left-column-width: 1fr,
|
||||||
|
right-column-width: design-entries-date-and-location-width,
|
||||||
|
left-content: "",
|
||||||
|
middle-content: "",
|
||||||
|
right-content: "",
|
||||||
|
alignments: (left, auto, right),
|
||||||
|
) = (
|
||||||
|
if design-section-titles-type == "moderncv" [
|
||||||
|
#three-col(
|
||||||
|
left-column-width: right-column-width,
|
||||||
|
middle-column-width: left-column-width,
|
||||||
|
right-column-width: 1fr,
|
||||||
|
left-content: right-content,
|
||||||
|
middle-content: [
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#left-content
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
breakable: design-entries-allow-page-break-in-entries,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
right-content: middle-content,
|
||||||
|
alignments: (design-text-date-and-location-column-alignment, left, auto),
|
||||||
|
)
|
||||||
|
] else [
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#three-col(
|
||||||
|
left-column-width: left-column-width,
|
||||||
|
right-column-width: right-column-width,
|
||||||
|
left-content: left-content,
|
||||||
|
middle-content: middle-content,
|
||||||
|
right-content: right-content,
|
||||||
|
alignments: alignments,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
breakable: design-entries-allow-page-break-in-entries,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
#let two-col-entry(
|
||||||
|
left-column-width: 1fr,
|
||||||
|
right-column-width: design-entries-date-and-location-width,
|
||||||
|
left-content: "",
|
||||||
|
right-content: "",
|
||||||
|
alignments: (auto, design-text-date-and-location-column-alignment),
|
||||||
|
column-gutter: design-entries-horizontal-space-between-columns,
|
||||||
|
) = (
|
||||||
|
if design-section-titles-type == "moderncv" [
|
||||||
|
#two-col(
|
||||||
|
left-column-width: right-column-width,
|
||||||
|
right-column-width: left-column-width,
|
||||||
|
left-content: right-content,
|
||||||
|
right-content: [
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#left-content
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
breakable: design-entries-allow-page-break-in-entries,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
alignments: (design-text-date-and-location-column-alignment, auto),
|
||||||
|
)
|
||||||
|
] else [
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
#two-col(
|
||||||
|
left-column-width: left-column-width,
|
||||||
|
right-column-width: right-column-width,
|
||||||
|
left-content: left-content,
|
||||||
|
right-content: right-content,
|
||||||
|
alignments: alignments,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
inset: (
|
||||||
|
left: design-entries-left-and-right-margin,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
breakable: design-entries-allow-page-break-in-entries,
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
#let one-col-entry(content: "") = [
|
||||||
|
#let left-space = design-entries-left-and-right-margin
|
||||||
|
#if design-section-titles-type == "moderncv" [
|
||||||
|
#(left-space = left-space + design-entries-date-and-location-width + design-entries-horizontal-space-between-columns)
|
||||||
|
]
|
||||||
|
#block(
|
||||||
|
[#set par(spacing: design-text-leading); #content],
|
||||||
|
breakable: design-entries-allow-page-break-in-entries,
|
||||||
|
inset: (
|
||||||
|
left: left-space,
|
||||||
|
right: design-entries-left-and-right-margin,
|
||||||
|
),
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
]
|
||||||
45
engineeringresumes/PublicationEntry.j2.typ
Normal file
45
engineeringresumes/PublicationEntry.j2.typ
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
((* if date_and_location_column_template *))
|
||||||
|
#two-col-entry(
|
||||||
|
left-content: [
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
|
||||||
|
((* if design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv" *))
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* if not (entry.doi or entry.url)*))
|
||||||
|
<<main_column_second_row_without_url_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- elif not entry.journal -*))
|
||||||
|
<<main_column_second_row_without_journal_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- else -*))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- endif -*))
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
right-content: [
|
||||||
|
<<date_and_location_column_template>>
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* if not (design.entries.short_second_row or date_and_location_column_template.count("\n\n") > main_column_first_row_template.count("\n\n") or design.section_titles.type=="moderncv") *))
|
||||||
|
#one-col-entry(content:[
|
||||||
|
((* if not (entry.doi or entry.url)*))
|
||||||
|
<<main_column_second_row_without_url_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- elif not entry.journal -*))
|
||||||
|
<<main_column_second_row_without_journal_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- else -*))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- endif -*))
|
||||||
|
])
|
||||||
|
((* endif *))
|
||||||
|
((* else *))
|
||||||
|
#one-col-entry(content:[
|
||||||
|
<<main_column_first_row_template>>
|
||||||
|
|
||||||
|
#v(-design-text-leading)
|
||||||
|
((* if not (entry.doi or entry.url)*))
|
||||||
|
<<main_column_second_row_without_url_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- elif not entry.journal -*))
|
||||||
|
<<main_column_second_row_without_journal_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- else -*))
|
||||||
|
<<main_column_second_row_template|replace("\n\n", "\n\n#v(design-highlights-top-margin - design-text-leading)")>>
|
||||||
|
((*- endif -*))
|
||||||
|
])
|
||||||
|
((* endif *))
|
||||||
1
engineeringresumes/ReversedNumberedEntry.j2.typ
Normal file
1
engineeringresumes/ReversedNumberedEntry.j2.typ
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
[<<entry.reversed_number>>],
|
||||||
12
engineeringresumes/SectionBeginning.j2.typ
Normal file
12
engineeringresumes/SectionBeginning.j2.typ
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
== <<section_title>>
|
||||||
|
((* if not design.entries.allow_page_break_in_sections *))
|
||||||
|
#block(
|
||||||
|
[
|
||||||
|
((* endif *))
|
||||||
|
((* if entry_type in ["NumberedEntry", "ReversedNumberedEntry"] *))
|
||||||
|
#one-col-entry(
|
||||||
|
content: [
|
||||||
|
((* if entry_type == "ReversedNumberedEntry" *))
|
||||||
|
#let rev-enum-items = (
|
||||||
|
((* endif *))
|
||||||
|
((* endif *))
|
||||||
21
engineeringresumes/SectionEnding.j2.typ
Normal file
21
engineeringresumes/SectionEnding.j2.typ
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
((* if entry_type in ["NumberedEntry", "ReversedNumberedEntry"] *))
|
||||||
|
((* if entry_type == "ReversedNumberedEntry" *))
|
||||||
|
)
|
||||||
|
#enum(
|
||||||
|
numbering: n => [#{rev-enum-items.len() + 1 - n}.],
|
||||||
|
..rev-enum-items,
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
],
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
|
((* if not design.entries.allow_page_break_in_sections *))
|
||||||
|
],
|
||||||
|
breakable: false,
|
||||||
|
inset: (
|
||||||
|
left: 0cm,
|
||||||
|
right: 0cm,
|
||||||
|
),
|
||||||
|
width: 100%,
|
||||||
|
)
|
||||||
|
((* endif *))
|
||||||
3
engineeringresumes/TextEntry.j2.typ
Normal file
3
engineeringresumes/TextEntry.j2.typ
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#one-col-entry(
|
||||||
|
content: [<<entry>>]
|
||||||
|
)
|
||||||
1
markdown/BulletEntry.j2.md
Normal file
1
markdown/BulletEntry.j2.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- <<entry.bullet>>
|
||||||
9
markdown/EducationEntry.j2.md
Normal file
9
markdown/EducationEntry.j2.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
## <<entry.institution>>, ((* if entry.degree *))<<entry.degree>> in ((* endif *))<<entry.area>>
|
||||||
|
|
||||||
|
((* if entry.date_string *))- <<entry.date_string>>
|
||||||
|
((* endif *))
|
||||||
|
((* if entry.location *))- <<entry.location>>
|
||||||
|
((* endif *))
|
||||||
|
((* for item in entry.highlights *))
|
||||||
|
- <<item>>
|
||||||
|
((* endfor *))
|
||||||
9
markdown/ExperienceEntry.j2.md
Normal file
9
markdown/ExperienceEntry.j2.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
## <<entry.company>>, <<entry.position>>
|
||||||
|
|
||||||
|
((* if entry.date_string *))- <<entry.date_string>>
|
||||||
|
((* endif *))
|
||||||
|
((* if entry.location *))- <<entry.location>>
|
||||||
|
((* endif *))
|
||||||
|
((* for item in entry.highlights *))
|
||||||
|
- <<item>>
|
||||||
|
((* endfor *))
|
||||||
19
markdown/Header.j2.md
Normal file
19
markdown/Header.j2.md
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
# <<cv.name>>'s CV
|
||||||
|
|
||||||
|
((* if cv.phone *))
|
||||||
|
- Phone: <<cv.phone|replace("tel:", "")|replace("-"," ")>>
|
||||||
|
((* endif *))
|
||||||
|
((* if cv.email *))
|
||||||
|
- Email: [<<cv.email>>](mailto:<<cv.email>>)
|
||||||
|
((* endif *))
|
||||||
|
((* if cv.location *))
|
||||||
|
- Location: <<cv.location>>
|
||||||
|
((* endif *))
|
||||||
|
((* if cv.website *))
|
||||||
|
- Website: [<<cv.website|replace("https://","")|replace("/","")>>](<<cv.website>>)
|
||||||
|
((* endif *))
|
||||||
|
((* if cv.social_networks *))
|
||||||
|
((* for network in cv.social_networks *))
|
||||||
|
- <<network.network>>: [<<network.username>>](<<network.url>>)
|
||||||
|
((* endfor *))
|
||||||
|
((* endif *))
|
||||||
9
markdown/NormalEntry.j2.md
Normal file
9
markdown/NormalEntry.j2.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
## <<entry.name>>
|
||||||
|
|
||||||
|
((* if entry.date_string *))- <<entry.date_string>>
|
||||||
|
((* endif *))
|
||||||
|
((* if entry.location *))- <<entry.location>>
|
||||||
|
((* endif *))
|
||||||
|
((* for item in entry.highlights *))
|
||||||
|
- <<item>>
|
||||||
|
((* endfor *))
|
||||||
1
markdown/NumberedEntry.j2.md
Normal file
1
markdown/NumberedEntry.j2.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- <<entry.number>>
|
||||||
1
markdown/OneLineEntry.j2.md
Normal file
1
markdown/OneLineEntry.j2.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- <<entry.label>>: <<entry.details>>
|
||||||
9
markdown/PublicationEntry.j2.md
Normal file
9
markdown/PublicationEntry.j2.md
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
## <<entry.title>> ((* if entry.doi *))([<<entry.doi>>](<<entry.doi_url>>))((* elif entry.url *))([<<entry.url>>](<<entry.clean_url>>))((* endif *))
|
||||||
|
|
||||||
|
((* if entry.date_string *))
|
||||||
|
- <<entry.date_string>>
|
||||||
|
((* endif *))
|
||||||
|
- <<entry.authors|join(", ")>>
|
||||||
|
((* if entry.journal *))
|
||||||
|
- <<entry.journal>>
|
||||||
|
((* endif *))
|
||||||
1
markdown/ReversedNumberedEntry.j2.md
Normal file
1
markdown/ReversedNumberedEntry.j2.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- <<entry.reversed_number>>
|
||||||
1
markdown/SectionBeginning.j2.md
Normal file
1
markdown/SectionBeginning.j2.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# <<section_title>>
|
||||||
2
markdown/TextEntry.j2.md
Normal file
2
markdown/TextEntry.j2.md
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<<entry>>
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue