-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathslides_pdfpc.typ
More file actions
94 lines (80 loc) · 2.27 KB
/
slides_pdfpc.typ
File metadata and controls
94 lines (80 loc) · 2.27 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#let speaker-note(text) = {
let text = if type(text) == "string" {
text
} else if type(text) == "content" and text.func() == raw {
text.text.trim()
} else {
panic("A note must either be a string or a raw block")
}
[ #metadata((t: "Note", v: text)) <pdfpc> ]
}
#let end-slide = [
#metadata((t: "EndSlide")) <pdfpc>
]
#let save-slide = [
#metadata((t: "SaveSlide")) <pdfpc>
]
#let hidden-slide = [
#metadata((t: "HiddenSlide")) <pdfpc>
]
#let config(
duration-minutes: none,
start-time: none,
end-time: none,
last-minutes: none,
note-font-size: none,
disable-markdown: false,
default-transition: none,
) = {
if duration-minutes != none {
[ #metadata((t: "Duration", v: duration-minutes)) <pdfpc> ]
}
let _time-config(time, msg-name, tag-name) = {
let time = if type(time) == "datetime" {
time.display("[hour padding:zero repr:24]:[minute padding:zero]")
} else if type(time) == "string" {
time
} else {
panic(msg-name + " must be either a datetime or a string in the HH:MM format.")
}
[ #metadata((t: tag-name, v: time)) <pdfpc> ]
}
if start-time != none {
_time-config(start-time, "Start time", "StartTime")
}
if end-time != none {
_time-config(end-time, "End time", "EndTime")
}
if last-minutes != none {
[ #metadata((t: "LastMinutes", v: last-minutes)) <pdfpc> ]
}
if note-font-size != none {
[ #metadata((t: "NoteFontSize", v: note-font-size)) <pdfpc> ]
}
[ #metadata((t: "DisableMarkdown", v: disable-markdown)) <pdfpc> ]
if default-transition != none {
let dir-to-angle(dir) = if dir == ltr {
"0"
} else if dir == rtl {
"180"
} else if dir == ttb {
"90"
} else if dir == btt {
"270"
} else {
panic("angle must be a direction (ltr, rtl, ttb, or btt)")
}
let transition-str = (
default-transition.at("type", default: "replace")
+ ":" +
str(default-transition.at("duration-seconds", default: 1))
+ ":" +
dir-to-angle(default-transition.at("angle", default: rtl))
+ ":" +
default-transition.at("alignment", default: "horizontal")
+ ":" +
default-transition.at("direction", default: "outward")
)
[ #metadata((t: "DefaultTransition", v: transition-str)) <pdfpc> ]
}
}