feat(glossy): add new themes, update tests, README

This commit is contained in:
swaits committed 2024-12-05 01:08:43 +01:00
1 parent db46a5e025
commit 73348abeaf
6 files changed
+112 -3

No files matched your search

+2
View File
@@ -1,3 +1,5 @@
#import "themes/academic.typ": theme-academic
#import "themes/basic.typ": theme-basic #import "themes/basic.typ": theme-basic
#import "themes/chicago-index.typ": theme-chicago-index
#import "themes/compact.typ": theme-compact #import "themes/compact.typ": theme-compact
#import "themes/twocol.typ": theme-twocol #import "themes/twocol.typ": theme-twocol
@@ -0,0 +1,50 @@
// Inspired by academic textbook glossaries
#let theme-academic = (
section: (title, body) => {
set text(font: "New Computer Modern")
heading(level: 1, title)
v(1em)
body
},
group: (name, index, total, body) => {
if name != "" and total > 1 {
v(1.5em)
align(left, text(weight: "bold", size: 1.2em, name))
v(0.75em)
line(length: 100%, stroke: 0.5pt)
v(0.75em)
}
body
},
entry: (entry, index, total) => {
let short-display = text(weight: "bold", entry.short)
let long-display = if entry.long == none {
[]
} else {
[. #entry.long]
}
let description = if entry.description == none {
[]
} else {
[. #entry.description]
}
block(
below: 1em,
text(
size: 0.95em,
{
grid(
columns: (1fr, auto),
gutter: 0.75em,
[#short-display#long-display#description],
text(fill: rgb("#666666"), entry.pages)
)
}
)
)
},
)
@@ -0,0 +1,47 @@
// Inspired by the Chicago Manual of Style's index format
#let theme-chicago-index = (
section: (title, body) => {
set par(hanging-indent: 1em)
heading(level: 1, smallcaps(title))
body
},
group: (name, index, total, body) => {
if name != "" and total > 1 {
v(1em)
text(weight: "medium", style: "italic", name)
v(0.5em)
}
body
},
entry: (entry, index, total) => {
let short-display = text(weight: "regular", entry.short)
let long-display = if entry.long == none {
[]
} else {
[ — #entry.long] // Using em-dash for Chicago style
}
let description = if entry.description == none {
[]
} else {
text(style: "italic", [: #entry.description])
}
block(
below: 0.65em,
text(
size: 0.9em,
{
grid(
columns: (1fr, auto),
gutter: 1em,
[#short-display#entry.label#long-display#description],
[#entry.pages]
)
}
)
)
},
)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 KiB

After

Width:  |  Height:  |  Size: 521 KiB

@@ -27,22 +27,32 @@
#show: init-glossary.with(myGlossary, show-term: (body) => [#emph(body)]) #show: init-glossary.with(myGlossary, show-term: (body) => [#emph(body)])
#text(size: 18pt, weight: "bold")[Theme Gallery] #set page(
margin: 1cm,
height: auto,
)
#text(size: 24pt, weight: "bold")[`glossy`: theme gallery]
#text(size: 1pt, fill: rgb(0,0,0,0))[
First, we refer to each term at least once so they'll actually show up in the First, we refer to each term at least once so they'll actually show up in the
glossaries. Our terms include: @atom, @iphone, @html:cap, @css, and @tps. glossaries. Our terms include: @atom, @iphone, @html:cap, @css, and @tps.
]
#v(-2em)
// TODO: ask Discord if there's a way to get a symbol (ie function) name as a
// TODO: figure out if there's a way to get a symbol (ie function) name as a // TODO: figure out if there's a way to get a symbol (ie function) name as a
// string or content // string or content
#let themes = ( #let themes = (
("theme-academic", theme-academic),
("theme-basic", theme-basic), ("theme-basic", theme-basic),
("theme-chicago-index", theme-chicago-index),
("theme-compact", theme-compact), ("theme-compact", theme-compact),
) )
#for theme in themes { #for theme in themes {
block( block(
breakable: false, breakable: false,
width: 100%,
spacing: 2em, spacing: 2em,
inset: 1em, inset: 1em,
stroke: 1pt+gray, stroke: 1pt+gray,
@@ -53,7 +63,7 @@ glossaries. Our terms include: @atom, @iphone, @html:cap, @css, and @tps.
// HACK: special case theme-twocol so we can restrict the height // HACK: special case theme-twocol so we can restrict the height
#block( #block(
breakable: false, breakable: false,
spacing: 2em, spacing: 1em,
inset: 1em, inset: 1em,
stroke: 1pt+gray, stroke: 1pt+gray,
height: 1.5in, height: 1.5in,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 521 KiB