pub fn layout(span: Span, func: Func) -> Content
Expand description
Provides access to the current outer container’s (or page’s, if none) dimensions (width and height).
Accepts a function that receives a single parameter, which is a dictionary
with keys width
and height
, both of type [length
]. The function is
provided [context], meaning you don’t need to use it in combination with the
context
keyword. This is why [measure
] can be called in the example
below.
#let text = lorem(30)
#layout(size => [
#let (height,) = measure(
block(width: size.width, text),
)
This text is #height high with
the current page width: \
#text
])
Note that the layout
function forces its contents into a [block]-level
container, so placement relative to the page or pagebreaks are not possible
within it.
If the layout
call is placed inside a box with a width of {800pt}
and a
height of {400pt}
, then the specified function will be given the argument
{(width: 800pt, height: 400pt)}
. If it is 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 the width or height provided by layout
will be infinite if the
corresponding page dimension is set to {auto}
.