{"route":"/en-US-v0.14.1/reference/layout/block/","title":"Block","description":"Documentation for the `block` function.","part":null,"outline":[{"id":"summary","name":"Summary","children":[]},{"id":"examples","name":"Examples","children":[]},{"id":"parameters","name":"Parameters","children":[{"id":"parameters-width","name":"width","children":[]},{"id":"parameters-height","name":"height","children":[]},{"id":"parameters-breakable","name":"breakable","children":[]},{"id":"parameters-fill","name":"fill","children":[]},{"id":"parameters-stroke","name":"stroke","children":[]},{"id":"parameters-radius","name":"radius","children":[]},{"id":"parameters-inset","name":"inset","children":[]},{"id":"parameters-outset","name":"outset","children":[]},{"id":"parameters-spacing","name":"spacing","children":[]},{"id":"parameters-above","name":"above","children":[]},{"id":"parameters-below","name":"below","children":[]},{"id":"parameters-clip","name":"clip","children":[]},{"id":"parameters-sticky","name":"sticky","children":[]},{"id":"parameters-body","name":"body","children":[]}]}],"body":{"kind":"func","content":{"path":[],"name":"block","title":"Block","keywords":[],"oneliner":"A block-level container.","element":true,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>A block-level container.</p>\n<p>Such a container can be used to separate content, size it, and give it a\nbackground or border.</p>\n<p>Blocks are also the primary way to control whether text becomes part of a\nparagraph or not. See <a href=\"/en-US-v0.14.1/reference/model/par/#what-becomes-a-paragraph\">the paragraph documentation</a>\nfor more details.</p>\n<h2 id=\"examples\">Examples</h2>\n<p>With a block, you can give a background to content while still allowing it\nto break across multiple pages.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">page</span><span class=\"typ-punct\">(</span>height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100pt</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>\n  fill<span class=\"typ-punct\">:</span> <span class=\"typ-func\">luma</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">230</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  inset<span class=\"typ-punct\">:</span> <span class=\"typ-num\">8pt</span><span class=\"typ-punct\">,</span>\n  radius<span class=\"typ-punct\">:</span> <span class=\"typ-num\">4pt</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">lorem</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">30</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/d35b757571be311e1c4ebaa94cc073-0.png\" alt=\"Preview page 1\"><img src=\"/en-US-v0.14.1/assets/d35b757571be311e1c4ebaa94cc073-1.png\" alt=\"Preview page 2\"></div></div>\n<p>Blocks are also useful to force elements that would otherwise be inline to\nbecome block-level, especially when writing show rules.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">show</span> <span class=\"typ-func\">heading</span><span class=\"typ-punct\">:</span> it <span class=\"typ-op\">=&gt;</span> it<span class=\"typ-punct\">.</span>body\n<span class=\"typ-heading\">= Blockless</span>\nMore text.\n\n<span class=\"typ-key\">#</span><span class=\"typ-key\">show</span> <span class=\"typ-func\">heading</span><span class=\"typ-punct\">:</span> it <span class=\"typ-op\">=&gt;</span> <span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>it<span class=\"typ-punct\">.</span>body<span class=\"typ-punct\">)</span>\n<span class=\"typ-heading\">= Blocky</span>\nMore text.\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/a31ac3f6f1c0a9c6fef602c490517f3d.png\" alt=\"Preview\"></div></div>"}],"self":false,"params":[{"name":"width","details":[{"kind":"html","content":"<p>The block's width.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">align</span><span class=\"typ-punct\">(</span>center<span class=\"typ-punct\">)</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>\n  width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">60%</span><span class=\"typ-punct\">,</span>\n  inset<span class=\"typ-punct\">:</span> <span class=\"typ-num\">8pt</span><span class=\"typ-punct\">,</span>\n  fill<span class=\"typ-punct\">:</span> silver<span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">lorem</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">10</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/ae64d29594fe17355970f40654b3888b.png\" alt=\"Preview\"></div></div>","title":null}}],"types":["auto","relative"],"strings":[],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"height","details":[{"kind":"html","content":"<p>The block's height. When the height is larger than the remaining space\non a page and <a href=\"/en-US-v0.14.1/reference/layout/block/#parameters-breakable\"><code>breakable</code></a> is <code><span class=\"typ-key\">true</span></code>, the\nblock will continue on the next page with the remaining height.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">page</span><span class=\"typ-punct\">(</span>height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">80pt</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">align</span><span class=\"typ-punct\">(</span>center<span class=\"typ-punct\">)</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>\n  width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">80%</span><span class=\"typ-punct\">,</span>\n  height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">150%</span><span class=\"typ-punct\">,</span>\n  fill<span class=\"typ-punct\">:</span> aqua<span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/95ecf1fed181223374cbbda47ab8fbc9-0.png\" alt=\"Preview page 1\"><img src=\"/en-US-v0.14.1/assets/95ecf1fed181223374cbbda47ab8fbc9-1.png\" alt=\"Preview page 2\"></div></div>","title":null}}],"types":["auto","relative","fraction"],"strings":[],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"breakable","details":[{"kind":"html","content":"<p>Whether the block can be broken and continue on the next page.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">page</span><span class=\"typ-punct\">(</span>height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">80pt</span><span class=\"typ-punct\">)</span>\nThe following block will\njump to its own page.\n<span class=\"typ-func\">#</span><span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>\n  breakable<span class=\"typ-punct\">:</span> <span class=\"typ-key\">false</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">lorem</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">15</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/2381cccce0230146d6f912b46bf6151c-0.png\" alt=\"Preview page 1\"><img src=\"/en-US-v0.14.1/assets/2381cccce0230146d6f912b46bf6151c-1.png\" alt=\"Preview page 2\"></div></div>","title":null}}],"types":["bool"],"strings":[],"default":"<code><span class=\"typ-key\">true</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"fill","details":[{"kind":"html","content":"<p>The block's background color. See the\n<a href=\"/en-US-v0.14.1/reference/visualize/rect/#parameters-fill\">rectangle's documentation</a> for more details.</p>"}],"types":["none","color","gradient","tiling"],"strings":[],"default":"<code><span class=\"typ-key\">none</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"stroke","details":[{"kind":"html","content":"<p>The block's border color. See the\n<a href=\"/en-US-v0.14.1/reference/visualize/rect/#parameters-stroke\">rectangle's documentation</a> for more details.</p>"}],"types":["none","length","color","gradient","stroke","tiling","dictionary"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-punct\">:</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"radius","details":[{"kind":"html","content":"<p>How much to round the block's corners. See the\n<a href=\"/en-US-v0.14.1/reference/visualize/rect/#parameters-radius\">rectangle's documentation</a> for more details.</p>"}],"types":["relative","dictionary"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-punct\">:</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"inset","details":[{"kind":"html","content":"<p>How much to pad the block's content. See the\n<a href=\"/en-US-v0.14.1/reference/layout/box/#parameters-inset\">box's documentation</a> for more details.</p>"}],"types":["relative","dictionary"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-punct\">:</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"outset","details":[{"kind":"html","content":"<p>How much to expand the block's size without affecting the layout. See\nthe <a href=\"/en-US-v0.14.1/reference/layout/box/#parameters-outset\">box's documentation</a> for more details.</p>"}],"types":["relative","dictionary"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-punct\">:</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"spacing","details":[{"kind":"html","content":"<p>The spacing around the block. When <code><span class=\"typ-key\">auto</span></code>, inherits the paragraph\n<a href=\"/en-US-v0.14.1/reference/model/par/#parameters-spacing\"><code>spacing</code></a>.</p>\n<p>For two adjacent blocks, the larger of the first block's <code>above</code> and the\nsecond block's <code>below</code> spacing wins. Moreover, block spacing takes\nprecedence over paragraph <a href=\"/en-US-v0.14.1/reference/model/par/#parameters-spacing\"><code>spacing</code></a>.</p>\n<p>Note that this is only a shorthand to set <code>above</code> and <code>below</code> to the\nsame value. Since the values for <code>above</code> and <code>below</code> might differ, a\n<a href=\"/en-US-v0.14.1/reference/context/\" title=\"context\">context</a> block only provides access to <code>block<span class=\"typ-punct\">.</span>above</code> and\n<code>block<span class=\"typ-punct\">.</span>below</code>, not to <code>block<span class=\"typ-punct\">.</span>spacing</code> directly.</p>\n<p>This property can be used in combination with a show rule to adjust the\nspacing around arbitrary block-level elements.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">align</span><span class=\"typ-punct\">(</span>center<span class=\"typ-punct\">)</span>\n<span class=\"typ-key\">#</span><span class=\"typ-key\">show</span> math<span class=\"typ-punct\">.</span><span class=\"typ-func\">equation</span><span class=\"typ-punct\">:</span> <span class=\"typ-key\">set</span> <span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>above<span class=\"typ-punct\">:</span> <span class=\"typ-num\">8pt</span><span class=\"typ-punct\">,</span> below<span class=\"typ-punct\">:</span> <span class=\"typ-num\">16pt</span><span class=\"typ-punct\">)</span>\n\nThis sum of <span class=\"typ-math-delim\">$</span>x<span class=\"typ-math-delim\">$</span> and <span class=\"typ-math-delim\">$</span>y<span class=\"typ-math-delim\">$</span>:\n<span class=\"typ-math-delim\">$</span> x + y = z <span class=\"typ-math-delim\">$</span>\nA second paragraph.\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/f99d00eb0b5ee536c467a984c133ef9e.png\" alt=\"Preview\"></div></div>","title":null}}],"types":["relative","fraction"],"strings":[],"default":"<code><span class=\"typ-num\">1.2em</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false},{"name":"above","details":[{"kind":"html","content":"<p>The spacing between this block and its predecessor.</p>"}],"types":["auto","relative","fraction"],"strings":[],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"below","details":[{"kind":"html","content":"<p>The spacing between this block and its successor.</p>"}],"types":["auto","relative","fraction"],"strings":[],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"clip","details":[{"kind":"html","content":"<p>Whether to clip the content inside the block.</p>\n<p>Clipping is useful when the block's content is larger than the block itself,\nas any content that exceeds the block's bounds will be hidden.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-func\">#</span><span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>\n  width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">50pt</span><span class=\"typ-punct\">,</span>\n  height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">50pt</span><span class=\"typ-punct\">,</span>\n  clip<span class=\"typ-punct\">:</span> <span class=\"typ-key\">true</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">image</span><span class=\"typ-punct\">(</span><span class=\"typ-str\">&quot;tiger.jpg&quot;</span><span class=\"typ-punct\">,</span> width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100pt</span><span class=\"typ-punct\">,</span> height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100pt</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/555e171d6e5e2c7fe5b28e8cc072baa5.png\" alt=\"Preview\"></div></div>","title":null}}],"types":["bool"],"strings":[],"default":"<code><span class=\"typ-key\">false</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"sticky","details":[{"kind":"html","content":"<p>Whether this block must stick to the following one, with no break in\nbetween.</p>\n<p>This is, by default, set on heading blocks to prevent orphaned headings\nat the bottom of the page.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-comment\">// Disable stickiness of headings.</span>\n<span class=\"typ-key\">#</span><span class=\"typ-key\">show</span> <span class=\"typ-func\">heading</span><span class=\"typ-punct\">:</span> <span class=\"typ-key\">set</span> <span class=\"typ-func\">block</span><span class=\"typ-punct\">(</span>sticky<span class=\"typ-punct\">:</span> <span class=\"typ-key\">false</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">lorem</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">20</span><span class=\"typ-punct\">)</span>\n\n<span class=\"typ-heading\">= Chapter</span>\n<span class=\"typ-func\">#</span><span class=\"typ-func\">lorem</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">10</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/f6b4eb2256c858de9f455dbe80ea228d-0.png\" alt=\"Preview page 1\"><img src=\"/en-US-v0.14.1/assets/f6b4eb2256c858de9f455dbe80ea228d-1.png\" alt=\"Preview page 2\"></div></div>","title":null}}],"types":["bool"],"strings":[],"default":"<code><span class=\"typ-key\">false</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":true},{"name":"body","details":[{"kind":"html","content":"<p>The contents of the block.</p>"}],"types":["none","content"],"strings":[],"default":"<code><span class=\"typ-key\">none</span></code>","positional":true,"named":false,"required":false,"variadic":false,"settable":true}],"returns":["content"],"scope":[]}}}