Using the vertical spacing v
function and grid
-in-grid
might be easier.
#set page(height: auto, width: auto)
#let hour = 1.5em
#grid(
columns: (5em,) + (6em,) * 5,
align: center,
[],
..([Lundi], [Mardi], [Mercredi], [Jeudi], [Vendredi]).map(grid.cell.with(
stroke: 0.5pt,
inset: (x: 1em, y: 0.5em),
fill: rgb("ffffcc"),
)),
// Hours
grid(
..range(8, 19).map(n => block(
fill: rgb("ffffb3"),
stroke: 0.5pt,
width: 100%,
height: hour,
align(horizon)[#(n)--#(n + 1)],
))
),
// Skip easy columns
[],
[],
[],
// Here's the hard column
grid(
block(
fill: rgb("ffcccc"),
stroke: 0.5pt,
width: 100%,
height: 2 * hour,
align(center + horizon)[Physique],
),
block(
fill: rgb("ccccff"),
stroke: 0.5pt,
width: 100%,
height: 2 * hour,
align(center + horizon)[Maths],
),
v(1.5 * hour), // 👈 Here's an arbitrary vertical spacing
block(
fill: white,
stroke: 0.5pt,
width: 100%,
height: 1 * hour,
align(center + horizon)[Planche],
),
),
)