提示:本教程存在过时问题,更详细教程请阅读 小蓝书Typst 中文社区导航 FAQ
注意:该中文文档为社区驱动的非官网文档,可能存在错译、漏译或过时等问题,请以官网文档 Documentation 为准,如发现错漏,也欢迎 您的贡献镜像)。Typst 非官方中文交流 QQ 群:793548390
Warning: the Chinese document is a community-driven non-official document, there may be mistranslation, omission or outdated problems, please refer to the official website documentation.
Typst 中文文档

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
]))
Preview

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.]
})
Preview

Note that this function will provide an infinite width or height if one of the page width or height is auto, respectively.

参数
参数是函数的输入,它们在函数名称后面的括号中传入。

layout() -> content

func
function
必需参数位置参数
位置参数按顺序传入,不带名称。

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.