html: Add support for #+TOC keyword

org mode allows rendering the toc anywhere in the html document using the `TOC`
keyword [1]. There's more options but `#+TOC: headlines $n` should be enough
for starters. Note that org mode still requires setting `#+OPTIONS: toc:nil` to
disable the default toc

[1] https://orgmode.org/manual/Table-of-Contents.html
This commit is contained in:
Niklas Fasching 2021-03-28 16:59:36 +02:00
parent bf7f957af2
commit 7c239a7aeb
4 changed files with 63 additions and 6 deletions

View file

@ -1,3 +1,8 @@
<div id="outline-container-headline-1" class="outline-2">
<h2 id="headline-1">
captions, custom attributes and more
</h2>
<div id="outline-text-headline-1" class="outline-text-2">
<figure>
<div class="src src-sh a b c d" id="it">
<div class="highlight">
@ -26,3 +31,29 @@ named block
</div>
</div>
<p>#not a comment because there&#39;s no space after the hashtag</p>
</div>
</div>
<div id="outline-container-headline-2" class="outline-2">
<h2 id="headline-2">
table of contents
</h2>
<div id="outline-text-headline-2" class="outline-text-2">
<p>A table of contents can be rendered anywhere in the document by using</p>
<div class="src src-org">
<div class="highlight">
<pre>
#+TOC: headlines $n
</pre>
</div>
</div>
<p>Where <code class="verbatim">$n</code> is the max headline lvl that will be included. You can use <code class="verbatim">headlines 0</code> to include all headlines.</p>
<nav>
<ul>
<li><a href="#headline-1">captions, custom attributes and more</a>
</li>
<li><a href="#headline-2">table of contents</a>
</li>
</ul>
</nav>
</div>
</div>