1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
// The book: every topic in reading order, then the tutor. Facts live in the
// content files named by `chapters` in style.typ; this is layout only.
// typst compile --root . --ignore-system-fonts docs/typ/book.typ
// (--root . because the tutor is read from src/tutor.txt.)
#import "style.typ": palette, mono, chapters, tutor-path, doc-links
#set document(title: "pardes")
#doc-links.update(true)
#set page(paper: "a4", fill: palette.paper, margin: (x: 22mm, y: 24mm))
#set text(font: "Libertinus Serif", size: 10pt, fill: palette.ink, lang: "en")
#set par(justify: true, leading: 0.62em, spacing: 1em)
#set list(spacing: 0.8em)
#show heading.where(level: 2): set block(above: 2em, below: 0.9em)
#show heading.where(level: 3): set block(above: 1.5em, below: 0.7em)
#show raw: set text(font: mono, size: 0.9em)
#show heading: set text(fill: palette.tag-name)
#show heading.where(level: 1): it => {
pagebreak(weak: true)
v(18mm)
text(size: 22pt, weight: "bold", it.body)
v(8mm)
}
// title page
#page(numbering: none, {
v(1fr)
text(size: 34pt, weight: "bold", fill: palette.tag-name)[pardes]
v(4mm)
text(size: 13pt, style: "italic", fill: palette.tag-fg)[acme's tags and three buttons, helix's keys, terminals as panes, the editor as a 9P filesystem]
v(2fr)
})
#page(numbering: none, outline(depth: 2))
#set page(numbering: "1")
#counter(page).update(1)
#for ch in chapters {
[#heading(level: 1, ch.title) #label("ch-" + ch.id)]
if ch.file == none {
text(style: "italic", fill: palette.tag-fg)[This chapter is not written yet.]
} else {
set heading(offset: 1)
include ch.file
}
}
= The tutor
#text(size: 8pt, raw(read(tutor-path), block: true))
|