Lists
=====

See [the spec](https://daringfireball.net/projects/markdown/syntax#list)

[Skip the basic stuff at the top...]

To make lists look nice, you can wrap items with hanging indents:
??hanging indent

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.

    =>
    (div
     (ul
      (li "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.")
      (li "Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.")))

But if you want to be lazy, you don’t have to:
??lazy indent

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.

    =>
    (div
     (ul
      (li "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.")
      (li "Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.")))


If list items are separated by blank lines, Markdown will wrap the items in <p> tags in the HTML output. For example, this input:
??compact list

*   Bird
*   Magic

    =>
    (div
     (ul
      (li "Bird")
      (li "Magic")))

will turn into:

    <ul>
    <li>Bird</li>
    <li>Magic</li>
    </ul>

But this:
??paragraph list

*   Bird

*   Magic

    =>
    (div
     (ul
      (li (p "Bird"))
      (li (p "Magic"))))

will turn into:

    <ul>
    <li><p>Bird</p></li>
    <li><p>Magic</p></li>
    </ul>

List items may consist of multiple paragraphs.
Each subsequent paragraph in a list item must be indented by either 4 spaces or one tab:
??indented paragraphs

1.  This is a list item with two paragraphs. Lorem ipsum dolor
    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
    mi posuere lectus.

    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
    sit amet velit.

2.  Suspendisse id sem consectetuer libero luctus adipiscing.

    =>
    (div
     (ol
      (li
       (p "This is a list item with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.")
       (p "Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. Donec sit amet nisl. Aliquam semper ipsum sit amet velit."))
      (li
       (p "Suspendisse id sem consectetuer libero luctus adipiscing."))))

It looks nice if you indent every line of the subsequent paragraphs,
but here again, Markdown will allow you to be lazy:
??single-indent paragraphs

*   This is a list item with two paragraphs.

    This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.

*   Another item in the same list.

    =>
    (div
     (ul
      (li
       (p "This is a list item with two paragraphs.")
       (p "This is the second paragraph in the list item. You're only required to indent the first line. Lorem ipsum dolor sit amet, consectetuer adipiscing elit."))
      (li
       (p "Another item in the same list."))))

To put a blockquote within a list item, the blockquote’s > delimiters need to be indented:
?Xblockquotes

*   A list item with a blockquote:

    > This is a blockquote
    > inside a list item.

    =>
    (div
     (ul
      (li
       (p "A list item with a blockquote:")
       (blockquote "This is a blockquote\ninside a list item."))))

To put a code block within a list item, the code block needs to be indented _twice_
 — 8 spaces or two tabs:
?Xcode block

*   A list item with a code block:

        <code goes here>

    =>
    (div
     (ul
      (li
       (p "A list item with a code block:")
       (pre "<code goes here>"))))

It’s worth noting that it’s possible to trigger an ordered list by accident,
by writing something like this:
??mistaken list

1986. What a great season.

    =>
    (div
     (ol
      (li "What a great season.")))

In other words, a number-period-space sequence at the beginning of a line.
To avoid this, you can backslash-escape the period:
??not a list

1986\. What a great season.

    =>
    (div (p "1986" "." " What a great season."))

----
SPDX-FileCopyrightText: 2024 Norman Gray <https://nxg.me.uk>
SPDX-License-Identifier: BSD-2-Clause

