You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
5.3 KiB
172 lines
5.3 KiB
4 years ago
|
////
|
||
|
Included in:
|
||
|
|
||
|
- user-manual: Unordered: Complex list content
|
||
|
- writers-guide: complex list content
|
||
|
////
|
||
|
|
||
|
Aside from nested lists, all of the list items you've seen only have one line of text.
|
||
|
But like with regular paragraph text, the text in a list item can wrap across any number of lines, as long as all the lines are adjacent.
|
||
|
The wrapped lines can be indented and they will still be treated as normal paragraph text.
|
||
|
For example:
|
||
|
|
||
|
[source]
|
||
|
----
|
||
|
include::ex-ulist.adoc[tag=indent]
|
||
|
----
|
||
|
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=indent]
|
||
|
====
|
||
|
|
||
|
TIP: When items contain more than one line of text, leave a blank line before the next item to make the list easier to read.
|
||
|
|
||
|
A list item may contain any type of AsciiDoc content, including paragraphs, delimited blocks, and block macros.
|
||
|
You just need to _attach_ them to the list item.
|
||
|
|
||
|
==== List continuation
|
||
|
|
||
|
To add additional paragraphs or other block elements to a list item, you must "`attach`" them (in a series) using a _list continuation_.
|
||
|
A list continuation is a `{plus}` symbol on a line by itself, immediately adjacent to the block being attached.
|
||
|
|
||
|
Here's an example:
|
||
|
|
||
|
[source]
|
||
|
----
|
||
|
include::ex-ulist.adoc[tag=cont]
|
||
|
----
|
||
|
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=cont]
|
||
|
====
|
||
|
|
||
|
Using the list continuation, you can attach any number of block elements to a list item.
|
||
|
Each block must be preceded by a list continuation to form a chain of blocks.
|
||
|
|
||
|
Here's an example that attaches both a listing block and an admonition paragraph to the first item:
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex]
|
||
|
....
|
||
|
|
||
|
Here's how the source is rendered:
|
||
|
|
||
|
.A list with complex content
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex]
|
||
|
====
|
||
|
|
||
|
If you're attaching more than one block to a list item, you're strongly encouraged to wrap the content inside an open block.
|
||
|
That way, you only need a single list continuation line to attach the open block to the list item.
|
||
|
Within the open block, you write like you normally would, no longer having to worry about adding list continuations between the blocks to keep them attached to the list item.
|
||
|
|
||
|
Here's an example of wrapping complex list content in an open block:
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex-o]
|
||
|
....
|
||
|
|
||
|
Here's how that content is rendered:
|
||
|
|
||
|
.A list with complex content wrapped in an open block
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex-o]
|
||
|
====
|
||
|
|
||
|
The open block wrapper is also useful if you're including content from a shared file into a list item.
|
||
|
For example:
|
||
|
|
||
|
[source]
|
||
|
----
|
||
|
* list item
|
||
|
+
|
||
|
--
|
||
|
\include::shared-content.adoc[]
|
||
|
--
|
||
|
----
|
||
|
|
||
|
By wrapping the include directive in an open block, the content can be used unmodified.
|
||
|
|
||
|
The only limitation of this technique is that the content itself may not contain an open block (since open blocks cannot be nested).
|
||
|
|
||
|
==== Dropping the principal text
|
||
|
|
||
|
If the principal text of a list item is blank, the node for the principal text is dropped.
|
||
|
This is how you can get the first block (such as a listing block) to line up with the list marker.
|
||
|
You can make the principal text blank by using the `+{blank}+` attribute reference.
|
||
|
|
||
|
Here's an example of a list that has items with _only_ complex content.
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex-only]
|
||
|
....
|
||
|
|
||
|
Here's how the source is rendered:
|
||
|
|
||
|
// NOTE nowrap breaks this feature (overflow-x: auto on nested block causes block to shift away from list marker)
|
||
|
:prewrap:
|
||
|
.A list with complex content
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex-only]
|
||
|
====
|
||
|
:!prewrap:
|
||
|
|
||
|
==== Attaching to an ancestor list
|
||
|
|
||
|
You may find that you need to attach block content to a parent list item instead of the current one.
|
||
|
In other words, you want to attach the block content to the parent list item so it becomes a sibling of the child list.
|
||
|
To do this, you add a blank line before the list continuation.
|
||
|
The blank line signals to the list continuation to move out of the current list so it attaches the block to the last item of the parent list.
|
||
|
|
||
|
Here's an example of a paragraph that's attached to the parent list item, placing it adjacent to the child list (instead of inside of it).
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex-parent]
|
||
|
....
|
||
|
|
||
|
Here's how the source is rendered:
|
||
|
|
||
|
.A block attached to the parent list item
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex-parent]
|
||
|
====
|
||
|
|
||
|
Each blank line that precedes the list continuation signals a move up one level of nesting.
|
||
|
Here's an example that shows how to attach a paragraph to a grandparent list item using two leading blank lines:
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex-grandparent]
|
||
|
....
|
||
|
|
||
|
Here's how the source is rendered:
|
||
|
|
||
|
.A block attached to the grandparent list item
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex-grandparent]
|
||
|
====
|
||
|
|
||
|
Using blank lines to back out of the nesting may feel fragile.
|
||
|
A more robust way to accomplish the same thing is to enclose the nested lists in an open block.
|
||
|
That way, it's clear where the nested list ends and the enclosing list continues.
|
||
|
|
||
|
[source]
|
||
|
....
|
||
|
include::ex-ulist.adoc[tag=complex-enclosed]
|
||
|
....
|
||
|
|
||
|
Here's how the source is rendered:
|
||
|
|
||
|
.A nested block enclosed in an open block
|
||
|
====
|
||
|
include::ex-ulist.adoc[tag=complex-enclosed]
|
||
|
====
|
||
|
|
||
|
As you've learned in this section, the primary text of a list item can wrap to any number of adjacent lines.
|
||
|
You can also attach any type of content to a list item using the list continuation.
|
||
|
Combining those features with the open block makes it even easier to create lists with complex content.
|