Appendix
Test Results
14/08/2025 08:29
Important
[IMPORTANT#adm-important]
This is important.
This is important.
Note
NOTE: This is a note.
This is a note.
Tip
[TIP]
This is a tip.
This is a tip.
Warning
[WARNING]
.Pay Attention!
Beware of the dog.
Pay Attention!
Beware of the dog.
Description list
[#dl-comp-parts]
CPU:: The brain of the computer.
Hard drive:: Permanent storage for operating system and/or user files.
RAM:: Temporarily stores information the CPU uses during operation.
- CPU
-
The brain of the computer.
- Hard drive
-
Permanent storage for operating system and/or user files.
- RAM
-
Temporarily stores information the CPU uses during operation.
Description list with title
.Computer Parts
[#comp-parts-list]
CPU:: The brain of the computer.
Hard drive:: Permanent storage for operating system and/or user files.
RAM:: Temporarily stores information the CPU uses during operation.
Computer Parts
- CPU
-
The brain of the computer.
- Hard drive
-
Permanent storage for operating system and/or user files.
- RAM
-
Temporarily stores information the CPU uses during operation.
Example
== Unnumbered Section
====
This is a simple example.
====
Unnumbered Section
Example A.1
This is a simple example.
Example with title suffix
== Unnumbered Section
[title-suffix=text:sc[HelloWorld]]
====
This is a simple example.
====
Unnumbered Section
Example A.2HelloWorld
This is a simple example.
Theorem
[theorem]
====
This is a theorem.
====
Theorem A.3
This is a theorem.
Theorem in chapter
:chapnum: 2
[theorem]
====
This is a theorem numbered within chapter 2.
====
Theorem A.4
This is a theorem numbered within chapter 2.
Theorem with title
.Theorem Title
[theorem]
====
This is a theorem with title.
====
Theorem A.5Theorem Title
This is a theorem with title.
Figure
.Picture of a cute cat.
image::cat1.jpg[cute cat]

Listing
----
Simple listing.
----
Simple listing.
Listing with numbered title
.Listing Title
[#ltg-numbered%numbered]
----
Listing with title.
----
Listing A.1Listing Title
Listing with title.
Listing with title
.Listing Title
----
Listing with title.
----
Listing Title
Listing with title.
Source
[source,ruby]
----
def fun
"Hello World!"
end
----
def fun
"Hello World!"
end
Source with callouts
[source,ruby]
----
def fun ①
"Hello World!" ②
end ③
----
def fun ①
"Hello World!" ②
end ③
Source with title
.Hello World Program
[[src-hello-world-ruby]]
[source,ruby]
----
def fun
"Hello World!"
end
----
Hello World Program
def fun
"Hello World!"
end
Literal
....
Usage: adoctohtml [options]
-w, --watch Watch for file changes in SRCDIR. Default: unset
-c, --config-file CONFIG Location of config file. Default: config.yml
....
Usage: adoctohtml [options] -w, --watch Watch for file changes in SRCDIR. Default: unset -c, --config-file CONFIG Location of config file. Default: config.yml
Literal with title
.Usage for adoctohtml script
....
Usage: adoctohtml [options]
-w, --watch Watch for file changes in SRCDIR. Default: unset
-c, --config-file CONFIG Location of config file. Default: config.yml
....
Usage for adoctohtml script
Usage: adoctohtml [options] -w, --watch Watch for file changes in SRCDIR. Default: unset -c, --config-file CONFIG Location of config file. Default: config.yml
Bibliography
[bibliography]
. [[dr2014]] Dwork, C. and Roth, A. (2014). _The algorithmic foundations of differential privacy_. Boston: Now Publ.
. [[adwg]] Asciidoc Working Group (2022). _AsciiDoc_. [online] asciidoc.org. Available at: https://asciidoc.org [Accessed 26 Jul. 2025].
- [1]
- [2]
Asciidoc Working Group (2022). AsciiDoc. [online] asciidoc.org. Available at: asciidoc.org [Accessed 26 Jul. 2025].
List of figures with markers
[figlist,markers=(1)]
.Two beautiful cats.
. image:cat2.jpg[Cat in basket,title=A cat in a basket.]
. image:cat3.jpg[Cat on sofa,title=A cat on a sofa.]
(1)A cat in a basket. (2)A cat on a sofa.
Ordered list
[[olist-id]]
. First item, level 1
. Second item, level 1
.. First item, level 2
... First item, level 3
... Second item, level 3
.... First item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
- 1.
First item, level 1
- 2.
Second item, level 1
- (a)
First item, level 2
- i.
First item, level 3
- ii.
Second item, level 3
- (A)
First item, level 4
- iii.
Third item, level 3
- (b)
Second item, level 2
- 3.
Third item, level 1
Ordered list of figures
[figlist]
.Two beautiful cats.
. image:cat2.jpg[Cat in basket,title=A cat in a basket.]
. image:cat3.jpg[Cat on sofa,title=A cat on a sofa.]
(a)A cat in a basket. (b)A cat on a sofa.
Ordered list with custom markers
[markers=I)]
. First item, level 1
. Second item, level 1
.. First item, level 2
[markers=nonsense]
... First item, level 3
... Second item, level 3
[markers=<1>]
.... First item, level 4
.... Second item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
- I)
First item, level 1
- II)
Second item, level 1
- (a)
First item, level 2
- i.
First item, level 3
- ii.
Second item, level 3
- <1>
First item, level 4
- <2>
Second item, level 4
- iii.
Third item, level 3
- (b)
Second item, level 2
- III)
Third item, level 1
Ordered list with start
[start=3]
. First item, level 1
. Second item, level 1
.. First item, level 2
... First item, level 3
... Second item, level 3
.... First item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
- 3.
First item, level 1
- 4.
Second item, level 1
- (a)
First item, level 2
- i.
First item, level 3
- ii.
Second item, level 3
- (A)
First item, level 4
- iii.
Third item, level 3
- (b)
Second item, level 2
- 5.
Third item, level 1
Ordered list with start and markers
[markers="#I/",start=3]
. First item, level 1
. Second item, level 1
.. First item, level 2
.. Second item, level 2
. Third item, level 1
- #III/
First item, level 1
- #IV/
Second item, level 1
- (a)
First item, level 2
- (b)
Second item, level 2
- #V/
Third item, level 1
Ordered list with title
.List Title
[[olist-title-id]]
. First item
. Second item
. Third item
List Title
- 1.
First item
- 2.
Second item
- 3.
Third item
Pseudocode
[pseudocode]
. First item, level 1
. Second item, level 1
.. First item, level 2
... First item, level 3
... Second item, level 3
.... First item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
- 1
First item, level 1
- 2
Second item, level 1
- 3
First item, level 2
- 4
First item, level 3
- 5
Second item, level 3
- 6
First item, level 4
- 7
Third item, level 3
- 8
Second item, level 2
- 9
Third item, level 1
Pseudocode with start
[pseudocode,start=5]
. First item, level 1
. Second item, level 1
.. First item, level 2
... First item, level 3
... Second item, level 3
.... First item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
- 5
First item, level 1
- 6
Second item, level 1
- 7
First item, level 2
- 8
First item, level 3
- 9
Second item, level 3
- 10
First item, level 4
- 11
Third item, level 3
- 12
Second item, level 2
- 13
Third item, level 1
Collapsible block
[%collapsible]
--
This is hidden by default.
--
Details
This is hidden by default.
Open block
--
This is wrapped content.
--
This is wrapped content.
Open block with example role
[.example]
.Block Title
--
This is an open block styled as an example.
--
Block Title
This is an open block styled as an example.
Open block with theorem role
[.example.example-theorem]
.Block Title
--
This is an open block styled as a theorem.
--
Block Title
This is an open block styled as a theorem.
Open block with title
.Block Title
--
This is wrapped content.
Another paragraph within block.
--
Block Title
This is wrapped content.
Another paragraph within block.
Paragraph with icon
This is a simple paragraph of a bi:book[120%,orange].
The source is written in AsciiDoc <<adwg>>.
This is a simple paragraph of a . The source is written in AsciiDoc [2].
Paragraph with inline text elements
You can use the mark tag to #highlight# text.{parskip}
text:del[This line of text is meant to be treated as deleted text.]{parskip}
text:strike[This line of text is meant to be treated as no longer accurate.]{parskip}
text:ins[This line of text is meant to be treated as an addition to the document.]{parskip}
text:underline[This line of text will render as underlined.]{parskip}
text:small[This line of text is meant to be treated as fine print.]{parskip}
*This line rendered as bold text.*{parskip}
_This line rendered as italicized text._{parskip}
text:sc[This line is rendered in SmallCaps.]{parskip}
text:muted[This line is fainter than the others.]{parskip}
text:danger[This line is a warning.]{parskip}
This line contains abbreviations like text:abbr[attr,title=attribute]
and text:abbr[HTML,title=HyperText Markup Language,role=initialism]{parskip}
To switch directories, type text:kbd[cd] followed by the name of the directory. +
To edit settings, press text:kbd["Ctrl + ,"].
You can use the mark tag to highlight text.
This line of text is meant to be treated as deleted text.
This line of text is meant to be treated as no longer accurate.
This line of text is meant to be treated as an addition to the document.
This line of text will render as underlined.
This line of text is meant to be treated as fine print.
This line rendered as bold text.
This line rendered as italicized text.
This line is rendered in SmallCaps.
This line is fainter than the others.
This line is a warning.
This line contains abbreviations like attr
and HTML
To switch directories, type cd followed by the name of the directory.
To edit settings, press Ctrl + ,.
Paragraph with tex
Let $x\in\mathbb{R}^n$ be a vector such that
\[\sum_{i=1}^n x_i < 1\]
The above inequality is displaymath within a paragraph.
Let $x\in\mathbb{R}^n$ be a vector such that \[\sum_{i=1}^n x_i < 1\] The above inequality is displaymath within a paragraph.
Paragraph with title
.Paragraph Title
This is a paragraph with title.
Paragraph Title
This is a paragraph with title.
Blockquote
[quote,Captain James T. Kirk,Star Trek IV: The Voyage Home]
Everybody remember where we parked.
Everybody remember where we parked.
Blockquote with title
.After landing the cloaked Klingon bird of prey in Golden Gate park:
[quote,Captain James T. Kirk,Star Trek IV: The Voyage Home]
Everybody remember where we parked.
After landing the cloaked Klingon bird of prey in Golden Gate park:
Everybody remember where we parked.
Numbered section
:sectnums:
== Section Title
This is a cat: image:cat2.jpg[Cat,100,title=A beautiful cat].
====
This is an example.footnote:[Equation stem:[x^2 + y^2 = z^2]]
====
This is a stem block with title:
[stem]
.Equation Title
++++
x^2 + y^2 = z^2
++++
[lemma#lem-minor-2]
.Minor Lemma
====
This is a lemma.
====
Building on <<lem-minor-2>>:
[proposition]
====
This is a proposition.
====
:!sectnums:
1Section Title
This is a cat: .
This is a stem block with title:
Equation Title
Lemma A.7Minor Lemma
This is a lemma.
Building on Lemma A.7:
Proposition A.8
This is a proposition.
Section
== Section Title
This is some content.
====
This is an example.
====
[lemma#lem-minor]
====
This is a lemma.
====
Building on <<lem-minor>> comes a proposition.
Part <<prop-part-last>> is important, in contrast to
part <<prop-part-minor>>.
[proposition]
====
This is a proposition with multiple parts.
[markers=(a)]
. First part of proposition.
[markers=i.]
.. First subpart.
.. [[prop-part-minor]]Second subpart.
. [[prop-part-last]]Second part of proposition.
====
[proof#prf-prop]
.Proof
--
The proof is complicated.
--
The following describes an <<alg-easy>>.
The main work is done inside step <<alg-easy-loop-body>>,
not <<alg-easy-condition-statement>>.
The algorithm terminates on the <<alg-easy-output-line>>.
[algorithm]
====
Here is an algorithm.
[[alg-easy]]
.Easy Algorithm
. Initialise variables.
. For every item in loop:
.. [[alg-easy-loop-body]]Do some stuff.
.. If some condition:
... [[alg-easy-condition-statement]]Some statement.
. [[alg-easy-output-line,output line]]Output something.
====
Take a break and look at <<fig-cats>>, paying special
attention to <<fig-sofa-cat>>.
[figlist#fig-cats]
.Two beautiful cats.
. image:cat2.jpg[Cat in basket,title=A cat in a basket.]
. [[fig-sofa-cat]]image:cat3.jpg[Cat on sofa,title=A cat on a sofa.]
[theorem#thm-important]
.An Important Theorem
====
This is a theorem with title.
====
[corollary]
====
This is a corollary to <<thm-important>>.
====
[listing]
====
----
This is a listing within an example.
----
====
Section Title
This is some content.
Example A.9
This is an example.
Lemma A.10
This is a lemma.
Building on Lemma A.10 comes a proposition. Part (b) is important, in contrast to part (a)ii.
Proposition A.11
This is a proposition with multiple parts.
- (a)
- (b)
Proof
The proof is complicated.
The following describes an Easy Algorithm. The main work is done inside step 2(a), not 2(b)i. The algorithm terminates on the output line.
Algorithm A.12
Here is an algorithm.
Take a break and look at Figure A.4, paying special attention to (b).
Theorem A.13An Important Theorem
This is a theorem with title.
Corollary A.14
This is a corollary to Theorem A.13.
Listing A.15
This is a listing within an example.
Section in chapter
:chapnum: 3
== Section Title
This is some content.
====
This is an example.
====
[lemma#lem-minor-3]
.Minor Lemma
====
This is a lemma.
====
Building on <<lem-minor-3>>:
[proposition#prop-reftext,reftext=text:sc[PropositionSC]]
.text:sc[PropositionSC]
====
This is a proposition.
====
The above proposition has custom reftext <<prop-reftext>>. It is nothing like
anything in <<bib-roughgarden>> or <<bib-cormen,ch.3>>.
See <<fig-cute-cat>> for a picture of a cute cat.
[[fig-cute-cat]]
.Picture of a cute cat.
image::cat2.jpg[cute cat]
Now for something more serious. Pay special attention
to line <<alg-serious-line>> of <<alg-serious>> which starts
with an <<alg-serious-init>>.
[algorithm#alg-serious]
.A Serious Algorithm
====
[pseudocode]
. [[alg-serious-init,initialisation line]]First item, level 1
. Second item, level 1
.. First item, level 2
... First item, level 3
... Second item, level 3
.... [[alg-serious-line]]First item, level 4
... Third item, level 3
.. Second item, level 2
. Third item, level 1
====
Equation <<eqn-fermat>> has no integer solutions for stem:[n>2].
[stem#eqn-fermat%numbered]
++++
a^n + b^n = c^n
++++
The following <<ltg-numbered-2>> is interesting,
especially <<co-docstring>>.
[source#ltg-numbered-2%numbered,python]
----
def say_hello():
①
print("Hello World!") ②
----
<1> [[co-docstring]]A docstring should go here.
<2> A semicolon is not required.
[bibliography]
.References
. [[bib-cormen]]Cormen, T.H. et al. (2022) Introduction to Algorithms. Cambridge, MA: The Mit Press.
. [[bib-roughgarden]]Roughgarden, T. (2022) Algorithms Illuminated: Omnibus Edition. Cambridge: CUP.
Section Title
This is some content.
Example A.16
This is an example.
Lemma A.17Minor Lemma
This is a lemma.
Building on Lemma A.17:
Proposition A.18PropositionSC
This is a proposition.
The above proposition has custom reftext PropositionSC. It is nothing like anything in [2] or [1, ch.3].
See Figure A.5 for a picture of a cute cat.

Now for something more serious. Pay special attention to line 6 of Algorithm A.19 which starts with an initialisation line.
Algorithm A.19A Serious Algorithm
- 1
- 2
- 9
Third item, level 1
Equation (A.1) has no integer solutions for \(n>2\).
The following Listing A.2 is interesting, especially .
Listing A.2
def say_hello():
①
print("Hello World!") ②
A semicolon is not required.
Section with continued lists
== Section With Continued Lists
=== Normal list
[#lst-normal]
. First item
. Second item
[#lst-normal-sub]
.. First subitem
.. Second subitem
[continue=lst-normal]
. Continued item
. Another item
[continue=lst-normal-sub]
.. Continued subitem
.. Another subitem
=== Pseudocode list
[pseudocode#lst-pc]
. First item
. Second item
.. First subitem
.. Second subitem
... First subsubitem
.. Third subitem
[pseudocode,continue=lst-pc]
. Continued item
.. Another subitem
=== Continue ID not found
. First item
. Second item
[continue=lst-not-found]
. Third item not continued
=== ID found but not a list
[#par-not-list]
This is a paragraph.
[continue=par-not-list]
. Trying to continue a paragraph.
=== Continue shifted list
[#lst-shifted,markers=(a)]
. First item
. Second item
[continue=lst-shifted,markers=(a)]
. Continued item
Section With Continued Lists
Normal list
- 1.
First item
- 2.
Second item
- (a)
First subitem
- (b)
Second subitem
- 3.
Continued item
- 4.
Another item
- (c)
Continued subitem
- (d)
Another subitem
Pseudocode list
- 1
First item
- 2
Second item
- 3
First subitem
- 4
Second subitem
- 5
First subsubitem
- 6
Third subitem
- 7
Continued item
- 8
Another subitem
Continue ID not found
- 1.
First item
- 2.
Second item
- 1.
Third item not continued
ID found but not a list
This is a paragraph.
- 1.
Trying to continue a paragraph.
Continue shifted list
- (a)
First item
- (b)
Second item
- (c)
Continued item
Aside
****
Sidebar content.
====
Example within sidebar.
====
****
Aside with title
.Sidebar Title
[#sb-extra-listing]
****
Some extra source code for advanced students.
[source,ruby]
----
def fun(name = nil)
"Hello #{name || "World!"}" ①
end ②
----
<1> Prefer double quotes over single.
<2> Don't forget Ruby requires an `end` statement.
****
Equation
[stem#eqn-multi%numbered]
++++
\begin{align}
\sum_{i=1}^n \left\{ x_i + (y + z_i) \right\} &= \sum_{i=1}^n \left\{ (x_i + z_i) + y \right\} \\
&= ny + \sum_{i=1}^n (x_i + z_i)
\end{align}
++++
Math
[stem]
++++
\begin{equation}
\frac{\epsilon}{n}\sum_{i=1}^n x_i
\end{equation}
++++
Math with title
.Title for expression
[stem#eqn-sum]
++++
\[\frac{\epsilon}{n}\sum_{i=1}^n x_i\]
++++
Title for expression
Table
[%striped,halign=center]
|===
|Column 1, header row |Column 2, header row
|Cell in column 1, row 2
|Cell in column 2, row 2
|Cell in column 1, row 3
|Cell in column 2, row 3
|===
Column 1, header row | Column 2, header row |
---|---|
Cell in column 1, row 2 | Cell in column 2, row 2 |
Cell in column 1, row 3 | Cell in column 2, row 3 |
Table alignment
[%striped,halign=right,valign=middle]
|===
|Column 1, header row |Column 2, header row
|Cell in column 1, row 2, with a lot of content that should get wrapped.
|Cell in column 2
|Cell in column 1, row 3
|Cell in column 2, row 3
|===
Column 1, header row | Column 2, header row |
---|---|
Cell in column 1, row 2, with a lot of content that should get wrapped. | Cell in column 2 |
Cell in column 1, row 3 | Cell in column 2, row 3 |
Table cell alignment
[%bordered,halign=center]
|===
|Column 1, header row >|Column 2, header row
|Cell in column 1, row 2, with a lot of content that should get wrapped.
>.>|Cell in column 2
|Cell in column 1, row 3
>|Cell in column 2, row 3
|===
Column 1, header row | Column 2, header row |
---|---|
Cell in column 1, row 2, with a lot of content that should get wrapped. | Cell in column 2 |
Cell in column 1, row 3 | Cell in column 2, row 3 |
Table with title
.Table Title
[cols="1,1",opts="autowidth,compact,bordered"]
|===
|Column 1, header row |Column 2, header row
|Cell in column 1, row 2
|Cell in column 2, row 2
|Cell in column 1, row 3
|Cell in column 2, row 3
|===
Column 1, header row | Column 2, header row |
---|---|
Cell in column 1, row 2 | Cell in column 2, row 2 |
Cell in column 1, row 3 | Cell in column 2, row 3 |
Checklist
* [x] First item, level 1
* [ ] Second item, level 1
** First item, level 2
*** First item, level 3
*** Second item, level 3
**** First item, level 4
*** Third item, level 3
** Second item, level 2
* Third item, level 1
First item, level 1
Second item, level 1
- ‐
First item, level 2
- ⭑
First item, level 3
- ⭑
Second item, level 3
- ◦
First item, level 4
- ⭑
Third item, level 3
- ‐
Second item, level 2
- •
Third item, level 1
Roomy list
[%roomy]
* First item, level 1
* Second item, level 1
+
Paragraph within second item, level 1
** First item, level 2
+
Paragraph within first item, level 2
+
[%roomy]
*** First item, level 3
*** {empty}
**** First item, level 4
**** Second item, level 4
*** Third item, level 3
** Second item, level 2
* Third item, level 1
- •
First item, level 1
- •
Second item, level 1
Paragraph within second item, level 1
- ‐
First item, level 2
Paragraph within first item, level 2
- ⭑
First item, level 3
- ⭑
- ◦
First item, level 4
- ◦
Second item, level 4
- ⭑
Third item, level 3
- ‐
Second item, level 2
- •
Third item, level 1
Unordered list
[[ulist-id]]
* First item, level 1
* Second item, level 1
** First item, level 2
*** First item, level 3
*** Second item, level 3
**** First item, level 4
*** Third item, level 3
** Second item, level 2
* Third item, level 1
- •
First item, level 1
- •
Second item, level 1
- ‐
First item, level 2
- ⭑
First item, level 3
- ⭑
Second item, level 3
- ◦
First item, level 4
- ⭑
Third item, level 3
- ‐
Second item, level 2
- •
Third item, level 1
Unordered list unmarked
[%unmarked]
* First item, level 1
* Second item, level 1
** First item, level 2
*** First item, level 3
*** Second item, level 3
**** First item, level 4
*** Third item, level 3
** Second item, level 2
* Third item, level 1
- •
First item, level 1
- •
Second item, level 1
- ‐
First item, level 2
- ⭑
First item, level 3
- ⭑
Second item, level 3
- ◦
First item, level 4
- ⭑
Third item, level 3
- ‐
Second item, level 2
- •
Third item, level 1