Outliner produces an outline of an HTML document in markdown format, suitable for use as a table of contents.
For a 64-bit Linux system, you can download a binary from the release page on SourceHut.
Otherwise, if you have the Go compiler set up on your system, you can install from source:
$ go install -v git.sr.ht/\~javiljoen/outliner@latest
To generate an outline, pass the HTML document via stdin to the outliner
command:
$ outliner < test.html
1. [Section A](#a)
1. [Section A.1](#a1)
1. [Section A.1.i](#a1i)
2. [Section A.1.ii](#a1ii)
2. [Section A.2](#a2)
2. [Section B](#b)
The input HTML is expected to have the following structure:
<section>
element.<h2>
, <h3>
, or <h4>
element,
as a direct child of the <section>
element.
(Sections below the level of subsubsection are not included in the outline.)id
attribute must be set on the <section>
element (not the heading element).
This will serve as the link target in the generated outline.As an illustration, here is a document with a single section conforming to this structure.
(See the test.html
file in the project repo for a more complex example.)
<article>
<h1>Article Title</h1>
<section id="a">
<h2>Section A</h2>
<p>Lorem ipsum ...</p>
</section>
</article>
Note:
If the HTML is generated by Pandoc,
the expected structure can be obtained by using the --section-divs
flag.
$ pandoc --section-divs README.md | outliner
1. [Installation](#installation)
2. [Usage](#usage)