6 Conditions and Loops
6.1 Lesson
6.1.1 Goal
In this lesson, we will build the following PDF:
6.1.2 Assets
Starter file
#let col-width = 1cm
#set page(columns: 2)Recording file
#let col-width = 1cm
#set page(columns: 2)
#let highlighted-grid-number(highlighed-nmbr) = {
block(
breakable: false,
grid(
columns: range(7).map(x => col-width),
row-gutter: 0.1cm,
column-gutter: 0.1cm,
..range(1, 31).map(nmbr => {
let fill-color = if (nmbr == highlighed-nmbr) { green } else { gray }
circle(fill: fill-color, width: 100%)[
#set align(center + horizon)
#nmbr
]
})
),
)
}
#range(1, 30).map(highlighted-grid-number).join([])
#{
for nmbr in range(1, 30) {
highlighted-grid-number(nmbr)
}
}6.2 Exercise
In the exercises you will create the following PDF:
Hint:
Use
rect()function instead ofcircle()Set height of elements to
col-widthUse if conditions and Typst calc functions to check if number is even or odd:
calc.rem(1, 2) = 1 calc.rem(2, 2) = 0 calc.rem(3, 2) = 1 calc.rem(4, 2) = 0 calc.rem(5, 2) = 1 calc.rem(6, 2) = 0
6.2.1 Assets
Starter file
#let col-width = 1cm
#set page(columns: 2)6.3 Exercise Solution
Solution
#let col-width = 1cm
#set page(columns: 2)
#let highlighted-grid-number(cells, highlighed_nmbr) = {
block(
breakable: false,
grid(
columns: range(7).map(x => col-width),
row-gutter: 0.1cm,
column-gutter: 0.1cm,
..range(1, 31).map(nmbr => {
let fill_color = if (calc.rem(nmbr, 2) == 0) { red } else { blue }
let text_color = if (calc.rem(nmbr, 2) == 0) { black } else { white }
let fn_element = if (calc.rem(nmbr, 2) == 0) { circle } else { rect }
fn_element(fill: fill_color, width: 100%, height: col-width)[
#set align(center + horizon)
#text(size: 12pt, weight: "bold", fill: text_color)[#nmbr]
]
})
),
)
}
#{
for nmbr in range(1, 30) {
highlighted-grid-number(30, nmbr)
}
}