このページは部分的に翻訳されています。一部原文の内容が含まれています。
layout
現在の外側のコンテナ(存在しなければページ)の寸法(幅と高さ)へのアクセスを提供します。
widthとheightというlength型のキーを持つ辞書を単一の引数として受け取る関数を受け付けます。
関数にはcontextが渡されるため、contextキーワードと組み合わせて使用する必要はありません。
これが以下の例でmeasureが呼び出せる理由です。
#let text = lorem(30)
#layout(size => [
#let (height,) = measure(
width: size.width,
text,
)
This text is #height high with
the current page width: \
#text
])

layout関数はコンテンツにブロックレベルのコンテナであることを強制するため、そのコンテナ内部でページを基準とした配置や改ページはできないことに注意してください。
例えば、幅が800ptで高さが400ptのボックスの中からlayoutが呼び出されたとすると、指定された関数には(width: 800pt, height: 400pt)という引数が与えられます。
ページに直接置かれた場合は、ページの寸法からそのマージンを引いたものを受け取ります。
これは主に測定と組み合わせるときに便利です。
To retrieve the remaining height of the page rather than its full size,
you can wrap your layout call in a block(height: 1fr). This works
because the block automatically grows to fill the remaining space (see the
fraction documentation for more details).
#set page(height: 150pt)
#lorem(20)
#block(height: 1fr, layout(size => [
Remaining height: #size.height
]))

この関数は、ratioを固定長に変換するためにも利用できます。
これは独自のレイアウト抽象化を構築する際に重宝するかもしれません。
#layout(size => {
let half = 50% * size.width
[Half a page is #half wide.]
})

layoutが提供する幅と高さは、対象ページの寸法がautoに設定されていると無限大になりうることに注意してください。
引数引数引数は関数への入力値です。関数名の後に括弧で囲んで指定します。
layout()->func
func外側のコンテナの大きさと一緒に呼び出す関数。 戻り値は文書に表示されます。
コンテナの大きさはwidthとheightのキーを持つdictionaryとして与えられます。
この関数は、layout によって返されるコンテンツが文書中に現れるたびに呼び出されます。
これによりそのコンテナの寸法に依存するコンテンツの生成が可能になります。