layout
Provides access to the current outer container's (or page's, if none) size (width and height).
The given function must accept a single parameter, size
, which is a
dictionary with keys width
and height
, both of type
length
.
#let text = lorem(30)
#layout(size => style(styles => [
#let (height,) = measure(
block(width: size.width, text),
styles,
)
This text is #height high with
the current page width: \
#text
]))

If the layout
call is placed inside of a box width a width of 800pt
and a height of 400pt
, then the specified function will be given the
parameter (width: 800pt, height: 400pt)
. If it placed directly into the
page it receives the page's dimensions minus its margins. This is mostly
useful in combination with measurement.
You can also use this function to resolve ratio
to fixed
lengths. This might come in handy if you're building your own layout
abstractions.
#layout(size => {
let half = 50% * size.width
[Half a page is #half wide.]
})

Note that this function will provide an infinite width or height if one of
the page width or height is auto
, respectively.
ParametersParameters are the inputs to a function. They are specified in parentheses after the function name.
func
A function to call with the outer container's size. Its return value is displayed in the document.
The container's size is given as a dictionary with
the keys width
and height
.
This function is called once for each time the content returned by
layout
appears in the document. That makes it possible to generate
content that depends on the size of the container it is inside of.