{"route":"/en-US-v0.14.1/reference/visualize/tiling/","title":"Tiling","description":"Documentation for the Tiling type.","part":null,"outline":[{"id":"summary","name":"Summary","children":[]},{"id":"examples","name":"Examples","children":[]},{"id":"relativeness","name":"Relativeness","children":[]},{"id":"compatibility","name":"Compatibility","children":[]},{"id":"constructor","name":"Constructor","children":[{"id":"constructor-size","name":"size","children":[]},{"id":"constructor-spacing","name":"spacing","children":[]},{"id":"constructor-relative","name":"relative","children":[]},{"id":"constructor-body","name":"body","children":[]}]}],"body":{"kind":"type","content":{"name":"tiling","title":"Tiling","keywords":["pattern"],"oneliner":"A repeating tiling fill.","details":"<p>A repeating tiling fill.</p>\n<p>Typst supports the most common type of tilings, where a pattern is repeated\nin a grid-like fashion, covering the entire area of an element that is\nfilled or stroked. The pattern is defined by a tile size and a body defining\nthe content of each cell. You can also add horizontal or vertical spacing\nbetween the cells of the tiling.</p>\n<h2 id=\"examples\">Examples</h2>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> pat <span class=\"typ-op\">=</span> <span class=\"typ-func\">tiling</span><span class=\"typ-punct\">(</span>size<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">30pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">30pt</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">[</span>\n  <span class=\"typ-func\">#</span><span class=\"typ-func\">place</span><span class=\"typ-punct\">(</span><span class=\"typ-func\">line</span><span class=\"typ-punct\">(</span>start<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">0%</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0%</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span> end<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">100%</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">100%</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span>\n  <span class=\"typ-func\">#</span><span class=\"typ-func\">place</span><span class=\"typ-punct\">(</span><span class=\"typ-func\">line</span><span class=\"typ-punct\">(</span>start<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">0%</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">100%</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span> end<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">100%</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0%</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span>\n<span class=\"typ-punct\">]</span>\n\n<span class=\"typ-func\">#</span><span class=\"typ-func\">rect</span><span class=\"typ-punct\">(</span>fill<span class=\"typ-punct\">:</span> pat<span class=\"typ-punct\">,</span> width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100%</span><span class=\"typ-punct\">,</span> height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">60pt</span><span class=\"typ-punct\">,</span> stroke<span class=\"typ-punct\">:</span> <span class=\"typ-num\">1pt</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/aa1d27fdbd1db81580724b895115f7d6.png\" alt=\"Preview\"></div></div>\n<p>Tilings are also supported on text, but only when setting the\n<a href=\"/en-US-v0.14.1/reference/visualize/tiling/#constructor-relative\">relativeness</a> to either <code><span class=\"typ-key\">auto</span></code> (the default value) or\n<code><span class=\"typ-str\">&quot;parent&quot;</span></code>. To create word-by-word or glyph-by-glyph tilings, you can\nwrap the words or characters of your text in <a href=\"/en-US-v0.14.1/reference/layout/box/\">boxes</a> manually or\nthrough a <a href=\"/en-US-v0.14.1/reference/styling/#show-rules\">show rule</a>.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> pat <span class=\"typ-op\">=</span> <span class=\"typ-func\">tiling</span><span class=\"typ-punct\">(</span>\n  size<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">30pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">30pt</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  relative<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;parent&quot;</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">square</span><span class=\"typ-punct\">(</span>\n    size<span class=\"typ-punct\">:</span> <span class=\"typ-num\">30pt</span><span class=\"typ-punct\">,</span>\n    fill<span class=\"typ-punct\">:</span> gradient\n      <span class=\"typ-punct\">.</span><span class=\"typ-func\">conic</span><span class=\"typ-punct\">(</span><span class=\"typ-op\">..</span>color<span class=\"typ-punct\">.</span>map<span class=\"typ-punct\">.</span>rainbow<span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-punct\">)</span>\n<span class=\"typ-punct\">)</span>\n\n<span class=\"typ-key\">#</span><span class=\"typ-key\">set</span> <span class=\"typ-func\">text</span><span class=\"typ-punct\">(</span>fill<span class=\"typ-punct\">:</span> pat<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\">10</span><span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/1d49890bdcd0d3618e7fac207ef2772d.png\" alt=\"Preview\"></div></div>\n<p>You can also space the elements further or closer apart using the\n<a href=\"/en-US-v0.14.1/reference/visualize/tiling/#constructor-spacing\"><code>spacing</code></a> feature of the tiling. If the spacing\nis lower than the size of the tiling, the tiling will overlap.\nIf it is higher, the tiling will have gaps of the same color as the\nbackground of the tiling.</p>\n<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> pat <span class=\"typ-op\">=</span> <span class=\"typ-func\">tiling</span><span class=\"typ-punct\">(</span>\n  size<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">30pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">30pt</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  spacing<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">10pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">10pt</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  relative<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;parent&quot;</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">square</span><span class=\"typ-punct\">(</span>\n    size<span class=\"typ-punct\">:</span> <span class=\"typ-num\">30pt</span><span class=\"typ-punct\">,</span>\n    fill<span class=\"typ-punct\">:</span> gradient\n     <span class=\"typ-punct\">.</span><span class=\"typ-func\">conic</span><span class=\"typ-punct\">(</span><span class=\"typ-op\">..</span>color<span class=\"typ-punct\">.</span>map<span class=\"typ-punct\">.</span>rainbow<span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n\n<span class=\"typ-func\">#</span><span class=\"typ-func\">rect</span><span class=\"typ-punct\">(</span>\n  width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100%</span><span class=\"typ-punct\">,</span>\n  height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">60pt</span><span class=\"typ-punct\">,</span>\n  fill<span class=\"typ-punct\">:</span> pat<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/a01f3d44bb227edd4662b2e9122d7ffe.png\" alt=\"Preview\"></div></div>\n<h2 id=\"relativeness\">Relativeness</h2>\n<p>The location of the starting point of the tiling is dependent on the\ndimensions of a container. This container can either be the shape that it is\nbeing painted on, or the closest surrounding container. This is controlled\nby the <code>relative</code> argument of a tiling constructor. By default, tilings\nare relative to the shape they are being painted on, unless the tiling is\napplied on text, in which case they are relative to the closest ancestor\ncontainer.</p>\n<p>Typst determines the ancestor container as follows:</p>\n<ul>\n<li>For shapes that are placed at the root/top level of the document, the\nclosest ancestor is the page itself.</li>\n<li>For other shapes, the ancestor is the innermost <a href=\"/en-US-v0.14.1/reference/layout/block/\" title=\"`block`\"><code>block</code></a> or <a href=\"/en-US-v0.14.1/reference/layout/box/\" title=\"`box`\"><code>box</code></a> that\ncontains the shape. This includes the boxes and blocks that are implicitly\ncreated by show rules and elements. For example, a <a href=\"/en-US-v0.14.1/reference/layout/rotate/\" title=\"`rotate`\"><code>rotate</code></a> will not\naffect the parent of a gradient, but a <a href=\"/en-US-v0.14.1/reference/layout/grid/\" title=\"`grid`\"><code>grid</code></a> will.</li>\n</ul>\n<h2 id=\"compatibility\">Compatibility</h2>\n<p>This type used to be called <code>pattern</code>. The name remains as an alias, but is\ndeprecated since Typst 0.13.</p>","constructor":{"path":[],"name":"tiling","title":"Construct","keywords":[],"oneliner":"Construct a new tiling.","element":false,"contextual":false,"deprecationMessage":null,"deprecationUntil":null,"details":[{"kind":"html","content":"<p>Construct a new tiling.</p>"},{"kind":"example","content":{"body":"<div class=\"previewed-code\"><pre><code><span class=\"typ-key\">#</span><span class=\"typ-key\">let</span> pat <span class=\"typ-op\">=</span> <span class=\"typ-func\">tiling</span><span class=\"typ-punct\">(</span>\n  size<span class=\"typ-punct\">:</span> <span class=\"typ-punct\">(</span><span class=\"typ-num\">20pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">20pt</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  relative<span class=\"typ-punct\">:</span> <span class=\"typ-str\">&quot;parent&quot;</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-func\">place</span><span class=\"typ-punct\">(</span>\n    dx<span class=\"typ-punct\">:</span> <span class=\"typ-num\">5pt</span><span class=\"typ-punct\">,</span>\n    dy<span class=\"typ-punct\">:</span> <span class=\"typ-num\">5pt</span><span class=\"typ-punct\">,</span>\n    <span class=\"typ-func\">rotate</span><span class=\"typ-punct\">(</span><span class=\"typ-num\">45deg</span><span class=\"typ-punct\">,</span> <span class=\"typ-func\">square</span><span class=\"typ-punct\">(</span>\n      size<span class=\"typ-punct\">:</span> <span class=\"typ-num\">5pt</span><span class=\"typ-punct\">,</span>\n      fill<span class=\"typ-punct\">:</span> black<span class=\"typ-punct\">,</span>\n    <span class=\"typ-punct\">)</span><span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n  <span class=\"typ-punct\">)</span><span class=\"typ-punct\">,</span>\n<span class=\"typ-punct\">)</span>\n\n<span class=\"typ-func\">#</span><span class=\"typ-func\">rect</span><span class=\"typ-punct\">(</span>width<span class=\"typ-punct\">:</span> <span class=\"typ-num\">100%</span><span class=\"typ-punct\">,</span> height<span class=\"typ-punct\">:</span> <span class=\"typ-num\">60pt</span><span class=\"typ-punct\">,</span> fill<span class=\"typ-punct\">:</span> pat<span class=\"typ-punct\">)</span>\n</code></pre><div class=\"preview\"><img src=\"/en-US-v0.14.1/assets/997166e01319ea437b75b8c87c9925f6.png\" alt=\"Preview\"></div></div>","title":null}}],"self":false,"params":[{"name":"size","details":[{"kind":"html","content":"<p>The bounding box of each cell of the tiling.</p>"}],"types":["auto","array"],"strings":[],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false},{"name":"spacing","details":[{"kind":"html","content":"<p>The spacing between cells of the tiling.</p>"}],"types":["array"],"strings":[],"default":"<code><span class=\"typ-punct\">(</span><span class=\"typ-num\">0pt</span><span class=\"typ-punct\">,</span> <span class=\"typ-num\">0pt</span><span class=\"typ-punct\">)</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false},{"name":"relative","details":[{"kind":"html","content":"<p>The <a href=\"#relativeness\">relative placement</a> of the tiling.</p>\n<p>For an element placed at the root/top level of the document, the\nparent is the page itself. For other elements, the parent is the\ninnermost block, box, column, grid, or stack that contains the\nelement.</p>"}],"types":["auto","str"],"strings":[{"string":"self","details":"<p>Relative to itself (its own bounding box).</p>"},{"string":"parent","details":"<p>Relative to its parent (the parent's bounding box).</p>"}],"default":"<code><span class=\"typ-key\">auto</span></code>","positional":false,"named":true,"required":false,"variadic":false,"settable":false},{"name":"body","details":[{"kind":"html","content":"<p>The content of each cell of the tiling.</p>"}],"types":["content"],"strings":[],"default":null,"positional":true,"named":false,"required":true,"variadic":false,"settable":false}],"returns":["tiling"],"scope":[]},"scope":[]}}}