Prelum specimen
Every element Prelum renders from markdown, each source beside its output, in the configuration dustinedwards.info uses: the core, the editorial pack and code highlighting. The page follows your system's light or dark setting. The list is also at elements.json, generated from the same sources.
- Release
- 0.14.0
- Render version
- 4
- Elements
- 35
- Editorial pack
- 8
1Paragraph
Markdown
A sentence with *emphasis*, **strong text**, ~~a struck word~~ and `inline code`. Prose such as 12:30 and 4.5:1 stays prose.
Output
A sentence with emphasis, strong text, a struck word and inline code. Prose such as 12:30 and 4.5:1 stays prose.
The HTML
<p>A sentence with <em>emphasis</em>, <strong>strong text</strong>, <del>a struck word</del> and <code>inline code</code>. Prose such as 12:30 and 4.5:1 stays prose.</p>2Headings
Markdown
## A section heading
### A subsection heading
Each heading gets an id from its text and an anchor to link to it.
The HTML
<h2 id="a-section-heading">A section heading<a class="heading-anchor" aria-label="Link to section: A section heading" href="#a-section-heading">#</a></h2>
<h3 id="a-subsection-heading">A subsection heading<a class="heading-anchor" aria-label="Link to section: A subsection heading" href="#a-subsection-heading">#</a></h3>
<p>Each heading gets an id from its text and an anchor to link to it.</p>3Lists
Markdown
1. Collect the samples
2. Extract the RNA
- keep it on ice
- work quickly
3. Sequence it
Output
- Collect the samples
- Extract the RNA
- keep it on ice
- work quickly
- Sequence it
The HTML
<ol>
<li>Collect the samples</li>
<li>Extract the RNA
<ul>
<li>keep it on ice</li>
<li>work quickly</li>
</ul>
</li>
<li>Sequence it</li>
</ol>4Task list
Markdown
- [x] Draft written
- [ ] Figures checked
Output
The HTML
<ul class="contains-task-list">
<li class="task-list-item"><label><input type="checkbox" checked disabled> Draft written</label></li>
<li class="task-list-item"><label><input type="checkbox" disabled> Figures checked</label></li>
</ul>5Block quote
Markdown
> A quotation set apart from the prose.
>
> > And a reply nested inside it.
Output
A quotation set apart from the prose.
And a reply nested inside it.
The HTML
<blockquote>
<p>A quotation set apart from the prose.</p>
<blockquote>
<p>And a reply nested inside it.</p>
</blockquote>
</blockquote>6Table
Markdown
| Sample | Reads |
| :----- | ----: |
| A1 | 1,204 |
| B2 | 987 |
Output
| Sample | Reads |
|---|---|
| A1 | 1,204 |
| B2 | 987 |
The HTML
<div class="table-scroll" tabindex="0"><table>
<thead>
<tr>
<th align="left">Sample</th>
<th align="right">Reads</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">A1</td>
<td align="right">1,204</td>
</tr>
<tr>
<td align="left">B2</td>
<td align="right">987</td>
</tr>
</tbody>
</table></div>7Links
Markdown
A [web link](https://example.com/page "A title"), a [relative link](/writing/other), a [fragment](#el-headings), a [mail link](mailto:someone@example.com) and a bare https://example.org/autolink.
An unsafe [script link](javascript:alert(1)) is not a link: it is shown as text.
Output
A web link, a relative link, a fragment, a mail link and a bare https://example.org/autolink.
An unsafe [script link](javascript:alert(1)) is not a link: it is shown as text.
The HTML
<p>A <a href="https://example.com/page" title="A title">web link</a>, a <a href="/writing/other">relative link</a>, a <a href="#el-headings">fragment</a>, a <a href="mailto:someone@example.com">mail link</a> and a bare <a href="https://example.org/autolink">https://example.org/autolink</a>.</p>
<p>An unsafe [script link](javascript:alert(1)) is not a link: it is shown as text.</p>In the RSS item
<p>A <a href="https://example.com/page" title="A title">web link</a>, a <a href="https://prelum.dustinedwards.info/writing/other">relative link</a>, a <a href="#el-headings">fragment</a>, a <a href="mailto:someone@example.com">mail link</a> and a bare <a href="https://example.org/autolink">https://example.org/autolink</a>.</p>
<p>An unsafe [script link](javascript:alert(1)) is not a link: it is shown as text.</p>8Image
Markdown

The HTML
<p><a class="image-link" href="/images/sample-640x360.svg"><img src="/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" title="Shown on hover" width="640" height="360" loading="eager" decoding="async" fetchpriority="high"></a></p>In the RSS item
<p><a class="image-link" href="https://prelum.dustinedwards.info/images/sample-640x360.svg"><img src="https://prelum.dustinedwards.info/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" title="Shown on hover" width="640" height="360" loading="eager" decoding="async" fetchpriority="high"></a></p>9Figure
Markdown
:::figure{src="/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" credit="Image: Prelum specimen"}
A caption with *emphasis*.
:::
The HTML
<figure><a class="image-link" href="/images/sample-640x360.svg"><img src="/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" width="640" height="360" loading="eager" decoding="async" fetchpriority="high"></a><figcaption><p>A caption with <em>emphasis</em>.</p><span class="figure-credit">Image: Prelum specimen</span></figcaption></figure>In the RSS item
<figure><a class="image-link" href="https://prelum.dustinedwards.info/images/sample-640x360.svg"><img src="https://prelum.dustinedwards.info/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" width="640" height="360" loading="eager" decoding="async" fetchpriority="high"></a><figcaption><p>A caption with <em>emphasis</em>.</p><span class="figure-credit">Image: Prelum specimen</span></figcaption></figure>10Figure with a dark twin
Markdown
:::figure{src="/images/sample-light-640x360.svg" dark="/images/sample-dark-640x360.svg" alt="A circle on a square, drawn once for each theme"}
The page shows the drawing that matches its theme.
:::
Output
The page shows the drawing that matches its theme.
The HTML
<figure><img src="/images/sample-light-640x360.svg" alt="A circle on a square, drawn once for each theme" class="figure-light" width="640" height="360" loading="lazy" decoding="async"><img src="/images/sample-dark-640x360.svg" alt="A circle on a square, drawn once for each theme" class="figure-dark" width="640" height="360" loading="lazy" decoding="async"><figcaption><p>The page shows the drawing that matches its theme.</p></figcaption></figure>In the RSS item
<figure><img src="https://prelum.dustinedwards.info/images/sample-light-640x360.svg" alt="A circle on a square, drawn once for each theme" class="figure-light" width="640" height="360" loading="lazy" decoding="async"><img src="https://prelum.dustinedwards.info/images/sample-dark-640x360.svg" alt="A circle on a square, drawn once for each theme" class="figure-dark" width="640" height="360" loading="lazy" decoding="async"><figcaption><p>The page shows the drawing that matches its theme.</p></figcaption></figure>11Footnote
Markdown
A claim that needs a source.[^source]
[^source]: The source, with a [link](https://example.com/source).
The HTML
<p>A claim that needs a source.<sup><a href="#user-content-fn-source" id="user-content-fnref-source" data-footnote-ref aria-describedby="footnote-label">1</a></sup></p>
<section data-footnotes class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes<a class="heading-anchor" aria-label="Link to section: Footnotes" href="#footnote-label">#</a></h2>
<ol>
<li id="user-content-fn-source">
<p>The source, with a <a href="https://example.com/source">link</a>. <a href="#user-content-fnref-source" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>12Rule
Markdown
The end of one part.
---
The start of the next.
Output
The end of one part.
The start of the next.
The HTML
<p>The end of one part.</p>
<hr>
<p>The start of the next.</p>13Collapsible section
Markdown
:::details{summary="Methods in full"}
The longer text, with a [link](https://example.com/methods). It is in the HTML whether or not the section is open.
:::
Output
Methods in full
The longer text, with a link. It is in the HTML whether or not the section is open.
The HTML
<details class="post-details"><summary>Methods in full</summary><p>The longer text, with a <a href="https://example.com/methods">link</a>. It is in the HTML whether or not the section is open.</p></details>14Inline math
Markdown
The area is $\pi r^2$ and the ratio is $\frac{a}{b}$.
Output
The area is and the ratio is .
The HTML
<p>The area is <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>π</mi><msup><mi>r</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\pi r^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8141em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">π</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">r</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> and the ratio is <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mfrac><mi>a</mi><mi>b</mi></mfrac></mrow><annotation encoding="application/x-tex">\frac{a}{b}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0404em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.6954em;"><span style="top:-2.655em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">b</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">a</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>.</p>In the RSS item
<p>The area is $\pi r^2$ and the ratio is $\frac{a}{b}$.</p>15Display math
Markdown
$$
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
$$
Output
The HTML
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>i</mi><mo>=</mo><mfrac><mrow><mi>n</mi><mo stretchy="false">(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">\sum_{i=1}^{n} i = \frac{n(n+1)}{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.9291em;vertical-align:-1.2777em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6514em;"><span style="top:-1.8723em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">i</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.05em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.2777em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">i</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:2.113em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="mopen">(</span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span>In the RSS item
$$\sum_{i=1}^{n} i = \frac{n(n+1)}{2}$$16Code: plain
Markdown
```
plain text, kept as written
```
Output
plain text, kept as written
The HTML
<pre><code>plain text, kept as written
</code></pre>17Code: highlighted lines
Markdown
```bash {2}
echo one
echo two
echo three
```
Output
echo one
echo two
echo three
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="bash"><code><span class="line"><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">echo</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF"> one</span></span>
<span class="line highlighted"><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">echo</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF"> two</span></span>
<span class="line"><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">echo</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF"> three</span></span></code></pre>18Code: Bash
Markdown
```bash
for f in *.fastq; do
gzip "$f"
done
```
Output
for f in *.fastq; do
gzip "$f"
done
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="bash"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">for</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> f </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">in</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF"> *.fastq</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">; </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">do</span></span>
<span class="line"><span style="--shiki-light:#702C00;--shiki-dark:#FFB757"> gzip</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF"> "</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">$f</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF">"</span></span>
<span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">done</span></span></code></pre>19Code: CSS
Markdown
```css
.note {
color: var(--muted);
}
```
Output
.note {
color: var(--muted);
}
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="css"><code><span class="line"><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">.note</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> {</span></span>
<span class="line"><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> color</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">: </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">var</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">(</span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">--muted</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">);</span></span>
<span class="line"><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">}</span></span></code></pre>20Code: HTML
Markdown
```html
<p class="note">Hello, <em>world</em>.</p>
```
Output
<p class="note">Hello, <em>world</em>.</p>
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="html"><code><span class="line"><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"><</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">p</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> class</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">=</span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF">"note"</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">>Hello, <</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">em</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">>world</</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">em</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">>.</</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">p</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">></span></span></code></pre>21Code: JavaScript
Markdown
```javascript
const total = [1, 2, 3].reduce((a, b) => a + b, 0); // 6
```
Output
const total = [1, 2, 3].reduce((a, b) => a + b, 0); // 6
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="javascript"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">const</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> total</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> =</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> [</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">1</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">2</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">3</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">].</span><span style="--shiki-light:#622CBC;--shiki-dark:#DBB7FF">reduce</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">((</span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">a</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, </span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">b</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">) </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">=></span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> a </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">+</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> b, </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">0</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">); </span><span style="--shiki-light:#5C5248;--shiki-dark:#B3A99C">// 6</span></span></code></pre>22Code: JSON
Markdown
```json
{ "sample": "A1", "reads": 1204 }
```
Output
{ "sample": "A1", "reads": 1204 }
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="json"><code><span class="line"><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">{ </span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">"sample"</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">: </span><span style="--shiki-light:#032563;--shiki-dark:#ADDCFF">"A1"</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, </span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">"reads"</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">: </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">1204</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> }</span></span></code></pre>23Code: Markdown
Markdown
```markdown
## A heading
Some *emphasis*.
```
Output
## A heading
Some *emphasis*.
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="markdown"><code><span class="line"><span style="--shiki-light:#023B95;--shiki-light-font-weight:bold;--shiki-dark:#91CBFF;--shiki-dark-font-weight:bold">## A heading</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">Some </span><span style="--shiki-light:#0E1116;--shiki-light-font-style:italic;--shiki-dark:#F0F3F6;--shiki-dark-font-style:italic">*emphasis*</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">.</span></span></code></pre>24Code: Python
Markdown
```python
def double(x):
return x * 2
```
Output
def double(x):
return x * 2
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="python"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">def</span><span style="--shiki-light:#622CBC;--shiki-dark:#DBB7FF"> double</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">(x):</span></span>
<span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> return</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> x </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">*</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> 2</span></span></code></pre>25Code: SQL
Markdown
```sql
SELECT sample, reads FROM runs WHERE reads > 1000;
```
Output
SELECT sample, reads FROM runs WHERE reads > 1000;
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="sql"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">SELECT</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> sample</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, reads </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">FROM</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> runs </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">WHERE</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> reads </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">></span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> 1000</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">;</span></span></code></pre>26Code: TSX
Markdown
```tsx
export const Hello = ({ name }: { name: string }) => <p>Hello, {name}</p>;
```
Output
export const Hello = ({ name }: { name: string }) => <p>Hello, {name}</p>;
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="tsx"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">export</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> const</span><span style="--shiki-light:#622CBC;--shiki-dark:#DBB7FF"> Hello</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> =</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> ({ </span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">name</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> }</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">:</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> { </span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">name</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">:</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> string</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> }) </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">=></span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> <</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">p</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">>Hello, </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">{</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">name</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">}</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"></</span><span style="--shiki-light:#024C1A;--shiki-dark:#72F088">p</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">>;</span></span></code></pre>27Code: TypeScript
Markdown
```typescript
const sum = (xs: number[]): number => xs.reduce((a, b) => a + b, 0);
```
Output
const sum = (xs: number[]): number => xs.reduce((a, b) => a + b, 0);
The HTML
<pre class="shiki shiki-themes github-light-high-contrast github-dark-high-contrast" style="--shiki-light:#0e1116;--shiki-dark:#f0f3f6;--shiki-light-bg:#ffffff;--shiki-dark-bg:#0a0c10" tabindex="0" data-lang="typescript"><code><span class="line"><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">const</span><span style="--shiki-light:#622CBC;--shiki-dark:#DBB7FF"> sum</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> =</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> (</span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">xs</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">:</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> number</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">[])</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">:</span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF"> number</span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492"> =></span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> xs.</span><span style="--shiki-light:#622CBC;--shiki-dark:#DBB7FF">reduce</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">((</span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">a</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">, </span><span style="--shiki-light:#702C00;--shiki-dark:#FFB757">b</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">) </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">=></span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> a </span><span style="--shiki-light:#A0111F;--shiki-dark:#FF9492">+</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6"> b, </span><span style="--shiki-light:#023B95;--shiki-dark:#91CBFF">0</span><span style="--shiki-light:#0E1116;--shiki-dark:#F0F3F6">);</span></span></code></pre>28Sidenote
Markdown
:::sidenote{kind="Aside"}
A note that sits in the margin on a wide screen.
:::
Output
The HTML
<aside class="post-note" id="sn-1"><b class="post-note-kind">Aside</b><p>A note that sits in the margin on a wide screen.</p></aside>29Pull quote
Markdown
The result held in every sample, and :pullquote[the effect was larger than expected] by a wide margin.
Output
The result held in every sample, and the effect was larger than expected by a wide margin.
The HTML
<p class="pull-quote" aria-hidden="true">the effect was larger than expected</p>
<p>The result held in every sample, and the effect was larger than expected by a wide margin.</p>30Color swatch
Markdown
The accent is :swatch[#8C5FD2] and the page is :swatch[the ground color]{color=#FBF9FF}.
Output
The accent is #8C5FD2 and the page is the ground color.
The HTML
<p>The accent is <span class="swatch"><span class="swatch-chip" style="--swatch:#8C5FD2" aria-hidden="true"></span><code class="swatch-label">#8C5FD2</code></span> and the page is <span class="swatch"><span class="swatch-chip" style="--swatch:#FBF9FF" aria-hidden="true"></span><code class="swatch-label">the ground color</code></span>.</p>31Bar chart
Markdown
:::chart{type="bar" x="sample" y="reads" alt="Reads per sample: A1 1,204, B2 987, C3 1,530" title="Reads per sample"}
```csv
sample,reads
A1,1204
B2,987
C3,1530
```
:::
Output
Reads per sample
Data table
| sample | reads |
|---|---|
| A1 | 1,204 |
| B2 | 987 |
| C3 | 1,530 |
The HTML
<figure class="chart-figure enarratio" data-enarratio="bar" data-enarratio-orientation="vertical"><p class="enarratio-title">Reads per sample</p><div class="enarratio-frame enarratio-frame-wide" tabindex="0" role="group" aria-label="Reads per sample, scrolls sideways"><svg aria-label="Reads per sample: A1 1,204, B2 987, C3 1,530" role="img" viewBox="0 0 700 360" height="360" width="700" text-anchor="middle" fill="currentColor"><g data-enarratio-mark="y-grid" stroke-opacity="0.1" stroke="currentColor" aria-hidden="true"><line y2="316" y1="316" x2="680" x1="60"></line><line y2="279" y1="279" x2="680" x1="60"></line><line y2="242" y1="242" x2="680" x1="60"></line><line y2="205" y1="205" x2="680" x1="60"></line><line y2="168" y1="168" x2="680" x1="60"></line><line y2="131" y1="131" x2="680" x1="60"></line><line y2="94" y1="94" x2="680" x1="60"></line><line y2="57" y1="57" x2="680" x1="60"></line><line y2="20" y1="20" x2="680" x1="60"></line></g><g data-enarratio-mark="y-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L-6,0" transform="translate(60,316)"></path><path d="M0,0L-6,0" transform="translate(60,279)"></path><path d="M0,0L-6,0" transform="translate(60,242)"></path><path d="M0,0L-6,0" transform="translate(60,205)"></path><path d="M0,0L-6,0" transform="translate(60,168)"></path><path d="M0,0L-6,0" transform="translate(60,131)"></path><path d="M0,0L-6,0" transform="translate(60,94)"></path><path d="M0,0L-6,0" transform="translate(60,57)"></path><path d="M0,0L-6,0" transform="translate(60,20)"></path></g><g aria-hidden="true" data-enarratio-mark="y-axis tick label" transform="translate(-9,0)" font-variant="tabular-nums" text-anchor="end"><text transform="translate(60,316)" y="0.32em">0</text><text transform="translate(60,279)" y="0.32em">200</text><text transform="translate(60,242)" y="0.32em">400</text><text transform="translate(60,205)" y="0.32em">600</text><text transform="translate(60,168)" y="0.32em">800</text><text transform="translate(60,131)" y="0.32em">1,000</text><text transform="translate(60,94)" y="0.32em">1,200</text><text transform="translate(60,57)" y="0.32em">1,400</text><text transform="translate(60,20)" y="0.32em">1,600</text></g><g aria-hidden="true" data-enarratio-mark="y-axis label" transform="translate(-57,0)"><text transform="translate(60,168) rotate(-90)" y="0.71em">reads</text></g><g data-enarratio-mark="x-axis tick" transform="translate(77,0)" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L0,6" transform="translate(100,316)"></path><path d="M0,0L0,6" transform="translate(293,316)"></path><path d="M0,0L0,6" transform="translate(486,316)"></path></g><g aria-hidden="true" data-enarratio-mark="x-axis tick label" transform="translate(77,9)"><text transform="translate(100,316)" y="0.71em">A1</text><text transform="translate(293,316)" y="0.71em">B2</text><text transform="translate(486,316)" y="0.71em">C3</text></g><g aria-hidden="true" data-enarratio-mark="x-axis label" transform="translate(0,41)"><text transform="translate(370,316)">sample</text></g><g data-enarratio-mark="bar"><rect data-enarratio-row="0" data-enarratio-col="0" data-enarratio-x="A1" data-enarratio-value="A1" data-enarratio-field="x" data-enarratio-key="["A1","reads"]" fill="var(--enarratio-series-1)" height="222.74" y="93.26" width="154" x="100"><title>sample A1: 1,204</title></rect><rect data-enarratio-row="0" data-enarratio-col="1" data-enarratio-x="B2" data-enarratio-value="B2" data-enarratio-field="x" data-enarratio-key="["B2","reads"]" fill="var(--enarratio-series-1)" height="182.6" y="133.41" width="154" x="293"><title>sample B2: 987</title></rect><rect data-enarratio-row="0" data-enarratio-col="2" data-enarratio-x="C3" data-enarratio-value="C3" data-enarratio-field="x" data-enarratio-key="["C3","reads"]" fill="var(--enarratio-series-1)" height="283.05" y="32.95" width="154" x="486"><title>sample C3: 1,530</title></rect></g><g data-enarratio-mark="rule" stroke="currentColor"><line y2="316" y1="316" x2="680" x1="60"></line></g></svg></div><details class="enarratio-data"><summary>Data table</summary><table><caption class="enarratio-visually-hidden">Data for: Reads per sample</caption><thead><tr><th scope="col">sample</th><th scope="col">reads</th></tr></thead><tbody><tr><th scope="row">A1</th><td>1,204</td></tr><tr><th scope="row">B2</th><td>987</td></tr><tr><th scope="row">C3</th><td>1,530</td></tr></tbody></table></details></figure>32Line chart
Markdown
:::chart{type="line" x="year" y="a,b" labels="Alpha,Beta" alt="Two lines rising from 2020 to 2023, Beta above Alpha" title="Two series"}
```csv
year,a,b
2020,1,2
2021,2,3
2022,3,5
2023,4,6
```
:::
Output
Two series
- Alpha
- Beta
Data table
| year | Alpha | Beta |
|---|---|---|
| 2020 | 1 | 2 |
| 2021 | 2 | 3 |
| 2022 | 3 | 5 |
| 2023 | 4 | 6 |
The HTML
<figure class="chart-figure enarratio" data-enarratio="line" data-enarratio-x-scale="{"type":"linear","domain":[2020,2023],"range":[48,604]}" data-enarratio-series-field="series"><p class="enarratio-title">Two series</p><ul class="enarratio-legend"><li data-enarratio-series="Alpha" data-slot="1"><span class="enarratio-swatch" aria-hidden="true"></span>Alpha</li><li data-enarratio-series="Beta" data-slot="2"><span class="enarratio-swatch" aria-hidden="true"></span>Beta</li></ul><div class="enarratio-frame enarratio-frame-wide" tabindex="0" role="group" aria-label="Two series, scrolls sideways"><svg aria-label="Two lines rising from 2020 to 2023, Beta above Alpha" role="img" viewBox="0 0 700 360" height="360" width="700" text-anchor="middle" fill="currentColor"><g data-enarratio-mark="y-grid" stroke-opacity="0.1" stroke="currentColor" aria-hidden="true"><line y2="316" y1="316" x2="604" x1="48"></line><line y2="266.67" y1="266.67" x2="604" x1="48"></line><line y2="217.33" y1="217.33" x2="604" x1="48"></line><line y2="168" y1="168" x2="604" x1="48"></line><line y2="118.67" y1="118.67" x2="604" x1="48"></line><line y2="69.33" y1="69.33" x2="604" x1="48"></line><line y2="20" y1="20" x2="604" x1="48"></line></g><g data-enarratio-mark="y-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L-6,0" transform="translate(48,316)"></path><path d="M0,0L-6,0" transform="translate(48,266.67)"></path><path d="M0,0L-6,0" transform="translate(48,217.33)"></path><path d="M0,0L-6,0" transform="translate(48,168)"></path><path d="M0,0L-6,0" transform="translate(48,118.67)"></path><path d="M0,0L-6,0" transform="translate(48,69.33)"></path><path d="M0,0L-6,0" transform="translate(48,20)"></path></g><g aria-hidden="true" data-enarratio-mark="y-axis tick label" transform="translate(-9,0)" font-variant="tabular-nums" text-anchor="end"><text transform="translate(48,316)" y="0.32em">0</text><text transform="translate(48,266.67)" y="0.32em">1</text><text transform="translate(48,217.33)" y="0.32em">2</text><text transform="translate(48,168)" y="0.32em">3</text><text transform="translate(48,118.67)" y="0.32em">4</text><text transform="translate(48,69.33)" y="0.32em">5</text><text transform="translate(48,20)" y="0.32em">6</text></g><g data-enarratio-mark="x-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L0,6" transform="translate(48,316)"></path><path d="M0,0L0,6" transform="translate(233.33,316)"></path><path d="M0,0L0,6" transform="translate(418.67,316)"></path><path d="M0,0L0,6" transform="translate(604,316)"></path></g><g aria-hidden="true" data-enarratio-mark="x-axis tick label" transform="translate(0,9)" font-variant="tabular-nums"><text transform="translate(48,316)" y="0.71em">2020</text><text transform="translate(233.33,316)" y="0.71em">2021</text><text transform="translate(418.67,316)" y="0.71em">2022</text><text transform="translate(604,316)" y="0.71em">2023</text></g><g aria-hidden="true" data-enarratio-mark="x-axis label" transform="translate(0,41)"><text transform="translate(326,316)">year</text></g><g data-enarratio-mark="line" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" fill="none"><path d="M48,266.67L233.33,217.33L418.67,168L604,118.67" stroke="var(--enarratio-series-1)"></path><path d="M48,217.33L233.33,168L418.67,69.33L604,20" stroke="var(--enarratio-series-2)"></path></g><g data-enarratio-mark="dot"><circle data-enarratio-row="0" data-enarratio-col="0" data-enarratio-series="Alpha" data-enarratio-x="2020" data-enarratio-value="Alpha" data-enarratio-field="series" data-enarratio-key="[2020,"Alpha"]" fill="var(--enarratio-series-1)" r="3" cy="266.67" cx="48"><title>Alpha, year 2020: 1</title></circle><circle data-enarratio-row="1" data-enarratio-col="0" data-enarratio-series="Beta" data-enarratio-x="2020" data-enarratio-value="Beta" data-enarratio-field="series" data-enarratio-key="[2020,"Beta"]" fill="var(--enarratio-series-2)" r="3" cy="217.33" cx="48"><title>Beta, year 2020: 2</title></circle><circle data-enarratio-row="0" data-enarratio-col="1" data-enarratio-series="Alpha" data-enarratio-x="2021" data-enarratio-value="Alpha" data-enarratio-field="series" data-enarratio-key="[2021,"Alpha"]" fill="var(--enarratio-series-1)" r="3" cy="217.33" cx="233.33"><title>Alpha, year 2021: 2</title></circle><circle data-enarratio-row="1" data-enarratio-col="1" data-enarratio-series="Beta" data-enarratio-x="2021" data-enarratio-value="Beta" data-enarratio-field="series" data-enarratio-key="[2021,"Beta"]" fill="var(--enarratio-series-2)" r="3" cy="168" cx="233.33"><title>Beta, year 2021: 3</title></circle><circle data-enarratio-row="0" data-enarratio-col="2" data-enarratio-series="Alpha" data-enarratio-x="2022" data-enarratio-value="Alpha" data-enarratio-field="series" data-enarratio-key="[2022,"Alpha"]" fill="var(--enarratio-series-1)" r="3" cy="168" cx="418.67"><title>Alpha, year 2022: 3</title></circle><circle data-enarratio-row="1" data-enarratio-col="2" data-enarratio-series="Beta" data-enarratio-x="2022" data-enarratio-value="Beta" data-enarratio-field="series" data-enarratio-key="[2022,"Beta"]" fill="var(--enarratio-series-2)" r="3" cy="69.33" cx="418.67"><title>Beta, year 2022: 5</title></circle><circle data-enarratio-row="0" data-enarratio-col="3" data-enarratio-series="Alpha" data-enarratio-x="2023" data-enarratio-value="Alpha" data-enarratio-field="series" data-enarratio-key="[2023,"Alpha"]" fill="var(--enarratio-series-1)" r="3" cy="118.67" cx="604"><title>Alpha, year 2023: 4</title></circle><circle data-enarratio-row="1" data-enarratio-col="3" data-enarratio-series="Beta" data-enarratio-x="2023" data-enarratio-value="Beta" data-enarratio-field="series" data-enarratio-key="[2023,"Beta"]" fill="var(--enarratio-series-2)" r="3" cy="20" cx="604"><title>Beta, year 2023: 6</title></circle></g><g data-enarratio-mark="text" transform="translate(6,0)" text-anchor="start"><text fill="var(--enarratio-series-1)" transform="translate(604,118.67)" y="0.32em">Alpha</text><text fill="var(--enarratio-series-2)" transform="translate(604,20)" y="0.32em">Beta</text></g></svg></div><details class="enarratio-data"><summary>Data table</summary><table><caption class="enarratio-visually-hidden">Data for: Two series</caption><thead><tr><th scope="col">year</th><th scope="col">Alpha</th><th scope="col">Beta</th></tr></thead><tbody><tr><th scope="row">2020</th><td>1</td><td>2</td></tr><tr><th scope="row">2021</th><td>2</td><td>3</td></tr><tr><th scope="row">2022</th><td>3</td><td>5</td></tr><tr><th scope="row">2023</th><td>4</td><td>6</td></tr></tbody></table></details></figure>33Area chart
Markdown
:::chart{type="area" x="year" y="total" alt="Total rising from 3 in 2020 to 9 in 2023" title="Total over time"}
```csv
year,total
2020,3
2021,5
2022,6
2023,9
```
:::
Output
Total over time
Data table
| year | total |
|---|---|
| 2020 | 3 |
| 2021 | 5 |
| 2022 | 6 |
| 2023 | 9 |
The HTML
<figure class="chart-figure enarratio" data-enarratio="area" data-enarratio-x-scale="{"type":"linear","domain":[2020,2023],"range":[64,680]}"><p class="enarratio-title">Total over time</p><div class="enarratio-frame enarratio-frame-wide" tabindex="0" role="group" aria-label="Total over time, scrolls sideways"><svg aria-label="Total rising from 3 in 2020 to 9 in 2023" role="img" viewBox="0 0 700 360" height="360" width="700" text-anchor="middle" fill="currentColor"><g data-enarratio-mark="y-grid" stroke-opacity="0.1" stroke="currentColor" aria-hidden="true"><line y2="316" y1="316" x2="680" x1="64"></line><line y2="283.11" y1="283.11" x2="680" x1="64"></line><line y2="250.22" y1="250.22" x2="680" x1="64"></line><line y2="217.33" y1="217.33" x2="680" x1="64"></line><line y2="184.44" y1="184.44" x2="680" x1="64"></line><line y2="151.56" y1="151.56" x2="680" x1="64"></line><line y2="118.67" y1="118.67" x2="680" x1="64"></line><line y2="85.78" y1="85.78" x2="680" x1="64"></line><line y2="52.89" y1="52.89" x2="680" x1="64"></line><line y2="20" y1="20" x2="680" x1="64"></line></g><g data-enarratio-mark="y-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L-6,0" transform="translate(64,316)"></path><path d="M0,0L-6,0" transform="translate(64,283.11)"></path><path d="M0,0L-6,0" transform="translate(64,250.22)"></path><path d="M0,0L-6,0" transform="translate(64,217.33)"></path><path d="M0,0L-6,0" transform="translate(64,184.44)"></path><path d="M0,0L-6,0" transform="translate(64,151.56)"></path><path d="M0,0L-6,0" transform="translate(64,118.67)"></path><path d="M0,0L-6,0" transform="translate(64,85.78)"></path><path d="M0,0L-6,0" transform="translate(64,52.89)"></path><path d="M0,0L-6,0" transform="translate(64,20)"></path></g><g aria-hidden="true" data-enarratio-mark="y-axis tick label" transform="translate(-9,0)" font-variant="tabular-nums" text-anchor="end"><text transform="translate(64,316)" y="0.32em">0</text><text transform="translate(64,283.11)" y="0.32em">1</text><text transform="translate(64,250.22)" y="0.32em">2</text><text transform="translate(64,217.33)" y="0.32em">3</text><text transform="translate(64,184.44)" y="0.32em">4</text><text transform="translate(64,151.56)" y="0.32em">5</text><text transform="translate(64,118.67)" y="0.32em">6</text><text transform="translate(64,85.78)" y="0.32em">7</text><text transform="translate(64,52.89)" y="0.32em">8</text><text transform="translate(64,20)" y="0.32em">9</text></g><g aria-hidden="true" data-enarratio-mark="y-axis label" transform="translate(-61,0)"><text transform="translate(64,168) rotate(-90)" y="0.71em">total</text></g><g data-enarratio-mark="x-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L0,6" transform="translate(64,316)"></path><path d="M0,0L0,6" transform="translate(269.33,316)"></path><path d="M0,0L0,6" transform="translate(474.67,316)"></path><path d="M0,0L0,6" transform="translate(680,316)"></path></g><g aria-hidden="true" data-enarratio-mark="x-axis tick label" transform="translate(0,9)" font-variant="tabular-nums"><text transform="translate(64,316)" y="0.71em">2020</text><text transform="translate(269.33,316)" y="0.71em">2021</text><text transform="translate(474.67,316)" y="0.71em">2022</text><text transform="translate(680,316)" y="0.71em">2023</text></g><g aria-hidden="true" data-enarratio-mark="x-axis label" transform="translate(0,41)"><text transform="translate(372,316)">year</text></g><g data-enarratio-mark="area" fill-opacity="0.3"><path d="M64,217.33L269.33,151.56L474.67,118.67L680,20L680,316L474.67,316L269.33,316L64,316Z" fill="var(--enarratio-series-1)"></path></g><g data-enarratio-mark="line" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" fill="none"><path d="M64,217.33L269.33,151.56L474.67,118.67L680,20" stroke="var(--enarratio-series-1)"></path></g><g data-enarratio-mark="dot" fill-opacity="0"><circle data-enarratio-row="0" data-enarratio-col="0" data-enarratio-x="2020" data-enarratio-value="2020" data-enarratio-field="x" data-enarratio-key="[2020,"total"]" fill="var(--enarratio-series-1)" r="4" cy="266.67" cx="64"><title>year 2020: 3</title></circle><circle data-enarratio-row="0" data-enarratio-col="1" data-enarratio-x="2021" data-enarratio-value="2021" data-enarratio-field="x" data-enarratio-key="[2021,"total"]" fill="var(--enarratio-series-1)" r="4" cy="233.78" cx="269.33"><title>year 2021: 5</title></circle><circle data-enarratio-row="0" data-enarratio-col="2" data-enarratio-x="2022" data-enarratio-value="2022" data-enarratio-field="x" data-enarratio-key="[2022,"total"]" fill="var(--enarratio-series-1)" r="4" cy="217.33" cx="474.67"><title>year 2022: 6</title></circle><circle data-enarratio-row="0" data-enarratio-col="3" data-enarratio-x="2023" data-enarratio-value="2023" data-enarratio-field="x" data-enarratio-key="[2023,"total"]" fill="var(--enarratio-series-1)" r="4" cy="168" cx="680"><title>year 2023: 9</title></circle></g><g data-enarratio-mark="rule" stroke="currentColor"><line y2="316" y1="316" x2="680" x1="64"></line></g></svg></div><details class="enarratio-data"><summary>Data table</summary><table><caption class="enarratio-visually-hidden">Data for: Total over time</caption><thead><tr><th scope="col">year</th><th scope="col">total</th></tr></thead><tbody><tr><th scope="row">2020</th><td>3</td></tr><tr><th scope="row">2021</th><td>5</td></tr><tr><th scope="row">2022</th><td>6</td></tr><tr><th scope="row">2023</th><td>9</td></tr></tbody></table></details></figure>34Dot plot
Markdown
:::chart{type="dot" x="dose" y="response" alt="Response rises with dose across five points" title="Dose and response"}
```csv
dose,response
1,2
2,3
3,5
4,4
5,7
```
:::
Output
Dose and response
Data table
| Point | dose | response |
|---|---|---|
| Point 1 | 1 | 2 |
| Point 2 | 2 | 3 |
| Point 3 | 3 | 5 |
| Point 4 | 4 | 4 |
| Point 5 | 5 | 7 |
The HTML
<figure class="chart-figure enarratio" data-enarratio="scatter" data-enarratio-x-scale="{"type":"linear","domain":[1,5],"range":[64,680]}"><p class="enarratio-title">Dose and response</p><div class="enarratio-frame enarratio-frame-wide" tabindex="0" role="group" aria-label="Dose and response, scrolls sideways"><svg aria-label="Response rises with dose across five points" role="img" viewBox="0 0 700 360" height="360" width="700" text-anchor="middle" fill="currentColor"><g data-enarratio-mark="y-grid" stroke-opacity="0.1" stroke="currentColor" aria-hidden="true"><line y2="316" y1="316" x2="680" x1="64"></line><line y2="286.4" y1="286.4" x2="680" x1="64"></line><line y2="256.8" y1="256.8" x2="680" x1="64"></line><line y2="227.2" y1="227.2" x2="680" x1="64"></line><line y2="197.6" y1="197.6" x2="680" x1="64"></line><line y2="168" y1="168" x2="680" x1="64"></line><line y2="138.4" y1="138.4" x2="680" x1="64"></line><line y2="108.8" y1="108.8" x2="680" x1="64"></line><line y2="79.2" y1="79.2" x2="680" x1="64"></line><line y2="49.6" y1="49.6" x2="680" x1="64"></line><line y2="20" y1="20" x2="680" x1="64"></line></g><g data-enarratio-mark="y-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L-6,0" transform="translate(64,316)"></path><path d="M0,0L-6,0" transform="translate(64,286.4)"></path><path d="M0,0L-6,0" transform="translate(64,256.8)"></path><path d="M0,0L-6,0" transform="translate(64,227.2)"></path><path d="M0,0L-6,0" transform="translate(64,197.6)"></path><path d="M0,0L-6,0" transform="translate(64,168)"></path><path d="M0,0L-6,0" transform="translate(64,138.4)"></path><path d="M0,0L-6,0" transform="translate(64,108.8)"></path><path d="M0,0L-6,0" transform="translate(64,79.2)"></path><path d="M0,0L-6,0" transform="translate(64,49.6)"></path><path d="M0,0L-6,0" transform="translate(64,20)"></path></g><g aria-hidden="true" data-enarratio-mark="y-axis tick label" transform="translate(-9,0)" font-variant="tabular-nums" text-anchor="end"><text transform="translate(64,316)" y="0.32em">2.0</text><text transform="translate(64,286.4)" y="0.32em">2.5</text><text transform="translate(64,256.8)" y="0.32em">3.0</text><text transform="translate(64,227.2)" y="0.32em">3.5</text><text transform="translate(64,197.6)" y="0.32em">4.0</text><text transform="translate(64,168)" y="0.32em">4.5</text><text transform="translate(64,138.4)" y="0.32em">5.0</text><text transform="translate(64,108.8)" y="0.32em">5.5</text><text transform="translate(64,79.2)" y="0.32em">6.0</text><text transform="translate(64,49.6)" y="0.32em">6.5</text><text transform="translate(64,20)" y="0.32em">7.0</text></g><g aria-hidden="true" data-enarratio-mark="y-axis label" transform="translate(-61,0)"><text transform="translate(64,168) rotate(-90)" y="0.71em">response</text></g><g data-enarratio-mark="x-grid" stroke-opacity="0.1" stroke="currentColor" aria-hidden="true"><line y2="316" y1="20" x2="64" x1="64"></line><line y2="316" y1="20" x2="141" x1="141"></line><line y2="316" y1="20" x2="218" x1="218"></line><line y2="316" y1="20" x2="295" x1="295"></line><line y2="316" y1="20" x2="372" x1="372"></line><line y2="316" y1="20" x2="449" x1="449"></line><line y2="316" y1="20" x2="526" x1="526"></line><line y2="316" y1="20" x2="603" x1="603"></line><line y2="316" y1="20" x2="680" x1="680"></line></g><g data-enarratio-mark="x-axis tick" stroke="currentColor" fill="none" aria-hidden="true"><path d="M0,0L0,6" transform="translate(64,316)"></path><path d="M0,0L0,6" transform="translate(141,316)"></path><path d="M0,0L0,6" transform="translate(218,316)"></path><path d="M0,0L0,6" transform="translate(295,316)"></path><path d="M0,0L0,6" transform="translate(372,316)"></path><path d="M0,0L0,6" transform="translate(449,316)"></path><path d="M0,0L0,6" transform="translate(526,316)"></path><path d="M0,0L0,6" transform="translate(603,316)"></path><path d="M0,0L0,6" transform="translate(680,316)"></path></g><g aria-hidden="true" data-enarratio-mark="x-axis tick label" transform="translate(0,9)" font-variant="tabular-nums"><text transform="translate(64,316)" y="0.71em">1.0</text><text transform="translate(141,316)" y="0.71em">1.5</text><text transform="translate(218,316)" y="0.71em">2.0</text><text transform="translate(295,316)" y="0.71em">2.5</text><text transform="translate(372,316)" y="0.71em">3.0</text><text transform="translate(449,316)" y="0.71em">3.5</text><text transform="translate(526,316)" y="0.71em">4.0</text><text transform="translate(603,316)" y="0.71em">4.5</text><text transform="translate(680,316)" y="0.71em">5.0</text></g><g aria-hidden="true" data-enarratio-mark="x-axis label" transform="translate(0,41)"><text transform="translate(372,316)">dose</text></g><g data-enarratio-mark="dot" stroke-width="1.5" fill-opacity="0.35"><circle data-enarratio-row="0" data-enarratio-col="0" data-enarratio-x="1" data-enarratio-key="0" stroke="var(--enarratio-series-1)" fill="var(--enarratio-series-1)" r="4" cy="316" cx="64"><title>dose 1, response 2</title></circle><circle data-enarratio-row="0" data-enarratio-col="1" data-enarratio-x="2" data-enarratio-key="1" stroke="var(--enarratio-series-1)" fill="var(--enarratio-series-1)" r="4" cy="256.8" cx="218"><title>dose 2, response 3</title></circle><circle data-enarratio-row="0" data-enarratio-col="2" data-enarratio-x="3" data-enarratio-key="2" stroke="var(--enarratio-series-1)" fill="var(--enarratio-series-1)" r="4" cy="138.4" cx="372"><title>dose 3, response 5</title></circle><circle data-enarratio-row="0" data-enarratio-col="3" data-enarratio-x="4" data-enarratio-key="3" stroke="var(--enarratio-series-1)" fill="var(--enarratio-series-1)" r="4" cy="197.6" cx="526"><title>dose 4, response 4</title></circle><circle data-enarratio-row="0" data-enarratio-col="4" data-enarratio-x="5" data-enarratio-key="4" stroke="var(--enarratio-series-1)" fill="var(--enarratio-series-1)" r="4" cy="20" cx="680"><title>dose 5, response 7</title></circle></g></svg></div><details class="enarratio-data"><summary>Data table</summary><table><caption class="enarratio-visually-hidden">Data for: Dose and response</caption><thead><tr><th scope="col">Point</th><th scope="col">dose</th><th scope="col">response</th></tr></thead><tbody><tr><th scope="row">Point 1</th><td>1</td><td>2</td></tr><tr><th scope="row">Point 2</th><td>2</td><td>3</td></tr><tr><th scope="row">Point 3</th><td>3</td><td>5</td></tr><tr><th scope="row">Point 4</th><td>4</td><td>4</td></tr><tr><th scope="row">Point 5</th><td>5</td><td>7</td></tr></tbody></table></details></figure>35Diagram
Markdown
:::diagram{title="From draft to page" alt="Three boxes in a row: Draft points to Prelum, which points to Page"}
```mermaid
graph LR
Draft --> Prelum --> Page
```
:::
Output
From draft to page
The HTML
<figure class="diagram-figure"><p class="diagram-title">From draft to page</p><img class="diagram-image diagram-light" src="/diagrams/prelum-03318765-light.svg" alt="Three boxes in a row: Draft points to Prelum, which points to Page"><img class="diagram-image diagram-dark" src="/diagrams/prelum-03318765-dark.svg" alt="Three boxes in a row: Draft points to Prelum, which points to Page"></figure>In the RSS item
<figure class="diagram-figure"><p class="diagram-title">From draft to page</p><img class="diagram-image diagram-light" src="https://prelum.dustinedwards.info/diagrams/prelum-03318765-light.svg" alt="Three boxes in a row: Draft points to Prelum, which points to Page"><img class="diagram-image diagram-dark" src="https://prelum.dustinedwards.info/diagrams/prelum-03318765-dark.svg" alt="Three boxes in a row: Draft points to Prelum, which points to Page"></figure>36One source, three outputs
Markdown
---
title: A short post
slug: a-short-post
description: One post, rendered once and published three ways.
date: 2026-10-11
---
A paragraph with a [relative link](/writing/other) and the formula $E = mc^2$.

Page
A paragraph with a relative link and the formula .
RSS item
<item>
<title>A short post</title>
<link>https://prelum.dustinedwards.info/writing/a-short-post</link>
<guid isPermaLink="true">https://prelum.dustinedwards.info/writing/a-short-post</guid>
<description>One post, rendered once and published three ways.</description>
<content:encoded><![CDATA[<p>A paragraph with a <a href="https://prelum.dustinedwards.info/writing/other">relative link</a> and the formula $E = mc^2$.</p>
<p><a class="image-link" href="https://prelum.dustinedwards.info/images/sample-640x360.svg"><img src="https://prelum.dustinedwards.info/images/sample-640x360.svg" alt="A purple square with a lighter circle in it" width="640" height="360" loading="eager" decoding="async" fetchpriority="high"></a></p>]]></content:encoded>
<pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
</item>
llms.txt
# Prelum specimen
> Every element Prelum 0.14.0 renders from markdown.
## Writing
- [A short post](https://prelum.dustinedwards.info/writing/a-short-post): One post, rendered once and published three ways.