I would like to simplify the answer by providing some “alternatives”:
#let img = circle(radius: 15pt, fill: green.transparentize(70%))
// Option 1
#set page(fill: pattern(img))
// Option2
// #set page(background: box(
// width: 100%,
// height: 100%,
// fill: pattern(img)
// ))
#lorem(300)
#lorem(100)
#lorem(200)
Note that semantically, you would choose box()
over rect()
in this case. And by default, rect()
is visually visible (draw a rectangle), while box()
is not.
If you want to add, for example, a monotone background color, then for the image pattern you would have to use background: box(fill: pattern(img))
approach. But if the default white background color is fine (background
is drawn on top of the fill
, BTW), then you can use a more compact fill: pattern(img)
approach.
You can see that the additional box
wrapping is just a “workaround” to use fill: pattern()
when the page.fill
is busy/not available.
Additionally, you might find useful the image.fit
parameter.