70 lines
1.2 KiB
Typst
70 lines
1.2 KiB
Typst
#import "@preview/cetz:0.3.1"
|
|
#import "handout.typ": *
|
|
|
|
// Shorthand, we'll be using these a lot.
|
|
#let tp = sym.plus.circle
|
|
#let tm = sym.times.circle
|
|
|
|
#let graphgrid(inner_content) = {
|
|
align(
|
|
center,
|
|
box(
|
|
inset: 3mm,
|
|
cetz.canvas({
|
|
import cetz.draw: *
|
|
let x = 5.25
|
|
|
|
grid(
|
|
(0, 0), (x, x), step: 0.75,
|
|
stroke: luma(100) + 0.3mm
|
|
)
|
|
|
|
if (inner_content != none) {
|
|
inner_content
|
|
}
|
|
|
|
mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
|
|
mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)
|
|
|
|
line(
|
|
(0, x + 0.25),
|
|
(0, 0),
|
|
(x + 0.25, 0),
|
|
stroke: 0.75mm + black,
|
|
)
|
|
}),
|
|
),
|
|
)
|
|
}
|
|
|
|
/// Adds extra padding to an equation.
|
|
/// Used as follows:
|
|
///
|
|
/// #eqmbox($
|
|
/// f(x) = -2(x #tp 2)(x #tp 8)
|
|
/// $)
|
|
///
|
|
/// Note that there are newlines between the $ and content,
|
|
/// this gives us display math (which is what we want when using this macro)
|
|
#let eqnbox(eqn) = {
|
|
align(
|
|
center,
|
|
box(
|
|
inset: 3mm,
|
|
eqn,
|
|
),
|
|
)
|
|
}
|
|
|
|
#let dotline(a, b) = {
|
|
cetz.draw.line(
|
|
a,
|
|
b,
|
|
stroke: (
|
|
dash: "dashed",
|
|
thickness: 0.5mm,
|
|
paint: ored,
|
|
),
|
|
)
|
|
}
|