Compare commits

..
Author SHA1 Message Date
swaits 1b025afd8c feat(finely-crafted-cv): minor formatting, style updates
- default fonts changed to Adobe's Source Pro
- change size of headline (ie person's name at top of resume)
- tweaked weights/sizes/spacing of headline, headings
- changed headings to smallcaps
- added a "nudge up" for empty jobs
- changed header and table header row to use heading-font
- bump version to 0.2.0
2025-01-08 09:59:16 -07:00
15 changed files with 36 additions and 74 deletions

No files matched your search

+1 -1
View File
@@ -15,7 +15,7 @@ education, experience, skills, and more.
To use this template, import it with the version number and utilize the `resume` or `cv` function: To use this template, import it with the version number and utilize the `resume` or `cv` function:
```typst ```typst
#import "@preview/finely-crafted-cv:0.1.0": * #import "@preview/finely-crafted-cv:0.2.0": *
#show: resume.with( #show: resume.with(
name: "Amira Patel", name: "Amira Patel",
+14 -10
View File
@@ -1,14 +1,14 @@
// Constants // Constants
#let SIZE_HUGE = 1.3em #let SIZE_HUGE = 1.5em
#let SIZE_LARGE = 1.1em #let SIZE_LARGE = 1.1em
#let SIZE_NORMAL = 1em #let SIZE_NORMAL = 1em
#let SIZE_SMALL = 0.9em #let SIZE_SMALL = 0.9em
#let SIZE_TINY = 0.7em #let SIZE_TINY = 0.7em
#let BODY_FONT = "Libertinus Serif" #let BODY_FONT = "Source Serif Pro"
#let BODY_SIZE = 11pt #let BODY_SIZE = 11pt
#let BODY_WEIGHT = "light" #let BODY_WEIGHT = "light"
#let HEADING_FONT = "Libertinus Serif" #let HEADING_FONT = "Source Sans Pro"
#let PAGE_MARGIN = 0.5in #let PAGE_MARGIN = 0.5in
@@ -20,25 +20,28 @@
#let FOOTER_TEXT_WEIGHT = "thin" #let FOOTER_TEXT_WEIGHT = "thin"
#let HEADLINE_NAME_SIZE = SIZE_HUGE #let HEADLINE_NAME_SIZE = SIZE_HUGE
#let HEADLINE_NAME_WEIGHT = "black" #let HEADLINE_NAME_WEIGHT = "bold"
#let HEADLINE_HRULE_STROKE = 1pt + black #let HEADLINE_HRULE_STROKE = 1pt + black
#let TAGLINE_SIZE = SIZE_NORMAL #let TAGLINE_SIZE = SIZE_NORMAL
#let TAGLINE_STYLE = "italic" #let TAGLINE_STYLE = "italic"
#let TAGLINE_WEIGHT = "regular" #let TAGLINE_WEIGHT = "regular"
#let SECTION_HEADING_SIZE = 0.7em // TODO: this seems wrong, should be SIZE_NORMAL (etc) #let SECTION_HEADING_SIZE = 0.8em // TODO: this seems wrong, should be SIZE_NORMAL (etc)
#let SECTION_HEADING_WEIGHT = "bold" #let SECTION_HEADING_WEIGHT = "semibold"
#let SECTION_HEADING_HRULE_STROKE = 0.75pt + black.lighten(25%) #let SECTION_HEADING_HRULE_STROKE = 0.75pt + navy.lighten(10%)
#let SECTION_HEADING_SPACE_ABOVE = 1em #let SECTION_HEADING_SPACE_ABOVE = 1em
#let SECTION_HEADING_SPACE_BELOW = 0.5em #let SECTION_HEADING_SPACE_BELOW = 0.5em
#let SECTION_HEADING_BLOCK_FILL = luma(100%) //gradient.linear(blue.lighten(99%), luma(100%))
#let SECTION_HEADING_BLOCK_RADIUS = 2pt
#let SECTION_HEADING_BLOCK_OUTSET = 0.2em
#let COMPANY_ICON_SIZE = SIZE_NORMAL #let COMPANY_ICON_SIZE = SIZE_NORMAL
#let COMPANY_ICON_SPACING = 0.25em #let COMPANY_ICON_SPACING = 0.25em
#let COMPANY_NAME_SIZE = SIZE_LARGE #let COMPANY_NAME_SIZE = SIZE_LARGE
#let COMPANY_NAME_WEIGHT = "bold" #let COMPANY_NAME_WEIGHT = "semibold"
#let COMPANY_DATE_SIZE = COMPANY_NAME_SIZE #let COMPANY_DATE_SIZE = COMPANY_NAME_SIZE
#let COMPANY_DATE_WEIGHT = "bold" #let COMPANY_DATE_WEIGHT = "semibold"
#let COMPANY_BLOCK_BELOW = 1.3em #let COMPANY_BLOCK_BELOW = 1.3em
#let JOB_NAME_SIZE = SIZE_NORMAL #let JOB_NAME_SIZE = SIZE_NORMAL
@@ -49,8 +52,9 @@
#let JOB_LOCATION_WEIGHT = "light" #let JOB_LOCATION_WEIGHT = "light"
#let JOB_BLOCK_ABOVE = 0.6em #let JOB_BLOCK_ABOVE = 0.6em
#let JOB_BLOCK_BELOW = 1em #let JOB_BLOCK_BELOW = 1em
#let EMPTY_JOB_NUDGE = -0.75em
#let TABLE_HEADER_COLOR = blue.lighten(60%) #let TABLE_HEADER_COLOR = blue.lighten(70%)
#let TABLE_ZEBRA_COLOR_0 = green.lighten(85%) #let TABLE_ZEBRA_COLOR_0 = green.lighten(85%)
#let TABLE_ZEBRA_COLOR_1 = green.lighten(95%) #let TABLE_ZEBRA_COLOR_1 = green.lighten(95%)
+14 -2
View File
@@ -32,6 +32,7 @@
header: context { header: context {
if here().page() == 1 { if here().page() == 1 {
text( text(
font: heading-font,
size: HEADER_SIZE, size: HEADER_SIZE,
grid( grid(
columns: (1fr, auto, auto, auto, auto, auto), columns: (1fr, auto, auto, auto, auto, auto),
@@ -79,12 +80,16 @@
block( block(
above: SECTION_HEADING_SPACE_ABOVE, above: SECTION_HEADING_SPACE_ABOVE,
below: SECTION_HEADING_SPACE_BELOW, below: SECTION_HEADING_SPACE_BELOW,
fill: SECTION_HEADING_BLOCK_FILL,
radius: SECTION_HEADING_BLOCK_RADIUS,
outset: SECTION_HEADING_BLOCK_OUTSET,
breakable: false, breakable: false,
[ [
#text(size: SECTION_HEADING_SIZE, weight: SECTION_HEADING_WEIGHT, font: heading-font)[ #text(size: SECTION_HEADING_SIZE, weight: SECTION_HEADING_WEIGHT, font: heading-font)[
#context counter(heading).display() #context counter(heading).display()
#upper(it.body) #smallcaps(it.body)
] ]
#v(-0.25em)
#hrule(stroke: SECTION_HEADING_HRULE_STROKE) #hrule(stroke: SECTION_HEADING_HRULE_STROKE)
] ]
) )
@@ -103,6 +108,7 @@
} }
}, },
) )
show table.cell.where(y: 0): set text(font: heading-font)
// Save our settings needed in other functions // Save our settings needed in other functions
__set("heading-font", heading-font) __set("heading-font", heading-font)
@@ -173,6 +179,12 @@
#let school-heading = company-heading #let school-heading = company-heading
#let job-heading(title, location: none, start: none, end: none, comment: none, body) = { #let job-heading(title, location: none, start: none, end: none, comment: none, body) = {
// if we have an empty body, we need to nudge this up
let the-body = if repr(body) == "[]" {
v(EMPTY_JOB_NUDGE)
} else {
body
}
block( block(
above: JOB_BLOCK_ABOVE, above: JOB_BLOCK_ABOVE,
below: JOB_BLOCK_BELOW, below: JOB_BLOCK_BELOW,
@@ -218,7 +230,7 @@
} }
), ),
grid.cell(colspan: 5, body) grid.cell(colspan: 5, the-body)
) )
) )
} }
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
#import "@preview/finely-crafted-cv:0.1.0": * #import "@preview/finely-crafted-cv:0.2.0": *
#show: resume.with( #show: resume.with(
name: "Amira Patel", name: "Amira Patel",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 977 KiB

+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "finely-crafted-cv" name = "finely-crafted-cv"
version = "0.1.0" version = "0.2.0"
entrypoint = "lib.typ" entrypoint = "lib.typ"
authors = ["Stephen Waits <steve@waits.net>"] authors = ["Stephen Waits <steve@waits.net>"]
license = "MIT" license = "MIT"
+1 -4
View File
@@ -253,7 +253,7 @@ Customize glossary appearance by defining a theme with three functions:
// Individual glossary entry // Individual glossary entry
entry: (entry, index, total) => { entry: (entry, index, total) => {
// index = entry index, total = total entries in group // index = entry index, total = total entries in group
let output = [#entry.short#entry.label] // **NOTE:** Label here! let output = [#entry.short]
if entry.long != none { if entry.long != none {
output = [#output -- #entry.long] output = [#output -- #entry.long]
} }
@@ -280,9 +280,6 @@ Entry fields available to themes:
- `label`: Term's dictionary label - `label`: Term's dictionary label
- `pages`: Linked page numbers where term appears - `pages`: Linked page numbers where term appears
**NOTE:** If the theme does not emit `entry.label`, linking form terms to their
glossary entry will not work.
## License ## License
This project is licensed under the MIT License. This project is licensed under the MIT License.
-6
View File
@@ -1,6 +0,0 @@
watchexec \
--watch . \
--clear \
--ignore 'tests/**/diff/**' \
--ignore 'tests/**/out/**' \
"typst-test r"
+1 -1
View File
@@ -40,7 +40,7 @@
grid( grid(
columns: (1fr, auto), columns: (1fr, auto),
gutter: 0.75em, gutter: 0.75em,
[#short-display#long-display#description#entry.label], [#short-display#long-display#description],
text(fill: rgb("#666666"), entry.pages) text(fill: rgb("#666666"), entry.pages)
) )
} }
+1 -1
View File
@@ -37,7 +37,7 @@
grid( grid(
columns: (1fr, auto), columns: (1fr, auto),
gutter: 1em, gutter: 1em,
[#short-display#entry.label#long-display#description#entry.label], [#short-display#entry.label#long-display#description],
[#entry.pages] [#entry.pages]
) )
} }
+1 -1
View File
@@ -27,6 +27,6 @@
}, },
entry: (entry, index, total) => { entry: (entry, index, total) => {
(entry.short + entry.label, entry.long, entry.description, entry.pages) (entry.short, entry.long, entry.description, entry.pages)
} }
) )
Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

-45
View File
@@ -1,45 +0,0 @@
#import "/lib.typ": *
#import "@preview/glossarium:0.5.1": *
#set page(height: auto, width: 4.5in)
#show link: set text(fill: red)
// -----------------------------------------------------------------------------
= `glossy`:
#box(
stroke: 1pt,
inset: 1em,
[
#show: init-glossary.with((WWW: "World Wide Web"))
This should be a link: @WWW
This should be a link, too: @WWW
#glossary()
]
)
// -----------------------------------------------------------------------------
= `glossarium`:
#box(
stroke: 1pt,
inset: 1em,
[
#show: make-glossary
#let entry-list = (
(key: "ML", short: "ML", long: "Machine Learning"),
)
#register-glossary(entry-list)
This should be a link: @ML
This should be a link, too: @ML
#print-glossary(entry-list)
]
)
+1 -1
View File
@@ -3,7 +3,7 @@
#set text(lang: "cs", region: "CZ") #set text(lang: "cs", region: "CZ")
#show: init-glossary.with(yaml("glossary.yml")) #show: init-glossary.with(yaml("glossary.yml"))
#glossary(ignore-case: true, theme: theme-twocol) #glossary(ignore-case: true)
#line(length: 20em) #line(length: 20em)