// Taken from https://github.com/docToolchain/multi-markup-demo/blob/main/src/docs/demo/asciidoc.adoc
= AsciiDoc kitchen sink

:description: This document exercises numerous features of AsciiDoc to test Asciidoctor compliance.

:library: Asciidoctor
ifdef::asciidoctor[]
:source-highlighter: coderay
endif::asciidoctor[]
:idprefix:
:imagesdir: ../images
//:backend: docbook45
//:backend: html5
//:doctype: book
//:sectids!:
:plus: &#43;

[role='lead']
This is a demonstration of {library}. And this is the preamble of this document.

[[purpose]]
.Purpose
****
This document exercises many of the features of AsciiDoc to test the {library} implementation.
****

A link to <<anchors,anchors>> and xref:page-2.adoc#other-section[other page].

include::snippets/_snippet.adoc[]

include::modules/module.adoc[leveloffset=+1]

include::modules/procedure.adoc[leveloffset=+2]

[[first,First Steps]]
== First Steps with http://asciidoc.org[AsciiDoc]

.Inline markup
* single quotes around a phrase place 'emphasis'
* astericks around a phrase make the text *bold*
* double astericks around one or more **l**etters in a word make those letters bold
* double underscore around a __sub__string in a word emphasize that substring
* use carrots around characters to make them ^super^script
* use tildes around characters to make them ~sub~script
ifdef::basebackend-html[]
* to pass through +++<u>HTML</u>+++ directly, surround the text with triple plus
endif::basebackend-html[]
ifdef::basebackend-docbook[]
* to pass through +++<constant>XML</constant>+++ directly, surround the text with triple plus
endif::basebackend-docbook[]

// separate two adjacent lists using a line comment (only the leading // is required)

- characters can be escaped using a {backslash}
* for instance, you can escape a quote inside emphasized text like 'Here\'s Johnny!'
- you can safely use reserved XML characters like <, > and &, which are escaped when rendering
- force a space{sp}between inline elements using the \{sp} attribute
- hold text together with an intrinsic non-breaking{nbsp}space attribute, \{nbsp}
- handle words with unicode characters like in the name Gregory Romé
- claim your copyright (C), registered trademark (R) or trademark (TM)

You can write text http://example.com[with inline links], optionally{sp}using an explicit link:http://example.com[link prefix]. In either case, the link can have a http://example.com?foo=bar&lang=en[query string].

If you want to break a line +
just end it in a {plus} sign +
and continue typing on the next line.

== Anchors

Ahoy!

=== Lists Upon Lists

.Adjacent lists
* this list
* should join

* to have
* four items

[[numbered]]
.Numbered lists
. These items
. will be auto-numbered
.. and can be nested
. A numbered list can nest
* unordered
* list
* items

.Statement
I swear I left it in 'Guy\'s' car. Let\'s go look for it.

[[defs]]
term::
definition
line two
[[another_term]]another term::

  another definition, which can be literal (indented) or regular paragraph

This should be a standalone paragraph, not grabbed by the definition list.

[[nested]]
* first level
written on two lines
* first level
+
....
with this literal text
....
+
** second level
*** third level
- fourth level
* back to +
first level

// this is just a comment

Let's make a horizontal rule...

'''

then take a break.

////
We'll be right with you...

after this brief interruption.
////

== We're back!

Do you feel safer with the tiger in a box?

.Tiger in a box
image::cat.jpg[Tiger, 500px]

.Asciidoctor usage example, should contain 3 lines
[source, ruby]
----
doc = Asciidoctor::Document.new("*This* is it!", :header_footer => false)

puts doc.render
----

// FIXME: use ifdef to show output according to backend
Here's what it outputs (using the built-in templates):

....
<div class="paragraph">
  <p><strong>This</strong> is it!</p>
</div>
....

=== ``Quotes``

____
AsciiDoc is 'so' *powerful*!
____

This verse comes to mind.

[verse]
La la la

Here's another quote:

[quote, Sir Arthur Conan Doyle, The Adventures of Sherlock Holmes]
____
When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
____

Getting Literal [[literally]]
-----------------------------

 Want to get literal? Just prefix a line with a space (just one will do).

....
I'll join that party, too.
....

We forgot to mention in <<numbered>> that you can change the numbering style.

.. first item (yeah!)
.. second item, looking `so mono`
.. third item, +mono+ it is!

// This attribute line will get reattached to the next block
// despite being followed by a trailing blank line
[id='wrapup']

== Wrap-up

NOTE: AsciiDoc is quite cool, you should try it!

[TIP]
.Info
=====
Go to this URL to learn more about it:

* http://asciidoc.org

Or you could return to the xref:first[] or <<purpose,Purpose>>.
=====

Here's a reference to the definition of <<another_term>>, in case you forgot it.

[NOTE]
One more thing. Happy documenting!

[[google]]When all else fails, head over to <http://google.com>.
