mirror of
https://github.com/typst/typst
synced 2025-06-29 00:32:53 +08:00
layout
documentation improvements (#4196)
Co-authored-by: Eric Biedert <github@ericbiedert.de> Co-authored-by: PgBiel <9021226+PgBiel@users.noreply.github.com> Co-authored-by: Laurenz <laurmaedje@gmail.com>
This commit is contained in:
parent
53c306e32c
commit
babf641c3a
@ -9,11 +9,14 @@ use crate::introspection::Locatable;
|
|||||||
use crate::layout::{Fragment, LayoutMultiple, Regions, Size};
|
use crate::layout::{Fragment, LayoutMultiple, Regions, Size};
|
||||||
use crate::syntax::Span;
|
use crate::syntax::Span;
|
||||||
|
|
||||||
/// Provides access to the current outer container's (or page's, if none) size
|
/// Provides access to the current outer container's (or page's, if none)
|
||||||
/// (width and height).
|
/// dimensions (width and height).
|
||||||
///
|
///
|
||||||
/// The given function must accept a single parameter, `size`, which is a
|
/// Accepts a function that receives a single parameter, which is a dictionary
|
||||||
/// dictionary with keys `width` and `height`, both of type [`length`].
|
/// 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.
|
||||||
///
|
///
|
||||||
/// ```example
|
/// ```example
|
||||||
/// #let text = lorem(30)
|
/// #let text = lorem(30)
|
||||||
@ -27,11 +30,11 @@ use crate::syntax::Span;
|
|||||||
/// ])
|
/// ])
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// If the `layout` call is placed inside of a box width a width of `{800pt}`
|
/// If the `layout` call is placed inside a box with a width of `{800pt}` and a
|
||||||
/// and a height of `{400pt}`, then the specified function will be given the
|
/// height of `{400pt}`, then the specified function will be given the argument
|
||||||
/// parameter `{(width: 800pt, height: 400pt)}`. If it placed directly into the
|
/// `{(width: 800pt, height: 400pt)}`. If it is placed directly into the page, it
|
||||||
/// page it receives the page's dimensions minus its margins. This is mostly
|
/// receives the page's dimensions minus its margins. This is mostly useful in
|
||||||
/// useful in combination with [measurement]($measure).
|
/// combination with [measurement]($measure).
|
||||||
///
|
///
|
||||||
/// You can also use this function to resolve [`ratio`] to fixed lengths. This
|
/// 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.
|
/// might come in handy if you're building your own layout abstractions.
|
||||||
@ -43,8 +46,8 @@ use crate::syntax::Span;
|
|||||||
/// })
|
/// })
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// Note that this function will provide an infinite width or height if one of
|
/// Note that the width or height provided by `layout` will be infinite if the
|
||||||
/// the page width or height is `auto`, respectively.
|
/// corresponding page dimension is set to `{auto}`.
|
||||||
#[func]
|
#[func]
|
||||||
pub fn layout(
|
pub fn layout(
|
||||||
/// The call span of this function.
|
/// The call span of this function.
|
||||||
@ -56,8 +59,8 @@ pub fn layout(
|
|||||||
/// and `height`.
|
/// and `height`.
|
||||||
///
|
///
|
||||||
/// This function is called once for each time the content returned by
|
/// This function is called once for each time the content returned by
|
||||||
/// `layout` appears in the document. That makes it possible to generate
|
/// `layout` appears in the document. This makes it possible to generate
|
||||||
/// content that depends on the size of the container it is inside of.
|
/// content that depends on the dimensions of its container.
|
||||||
func: Func,
|
func: Func,
|
||||||
) -> Content {
|
) -> Content {
|
||||||
LayoutElem::new(func).pack().spanned(span)
|
LayoutElem::new(func).pack().spanned(span)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user