Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested list in quote environment does not work #3125

Closed
davtorgh opened this issue Sep 22, 2016 · 3 comments
Closed

Nested list in quote environment does not work #3125

davtorgh opened this issue Sep 22, 2016 · 3 comments

Comments

@davtorgh
Copy link

Nested item list, when used in a quote environment, does not get nested. The items are all aligned at the first level.

Example markdown source:

Here it is an item list:

 * item 1;
 * item 2;
    * subitem 1;
 * item item 3;
 * item 4.

This is another paragraph, with a quoted item list.

>* item 1;
> * item 2;
>    * subitem 1;
> * item item 3;
> * item 4.

and this is the latex output:

Here it is an item list:

\begin{itemize}
\tightlist
\item
  item 1;
\item
  item 2;
  \begin{itemize}
  \tightlist
  \item
    subitem 1;
  \end{itemize}
\item
  item item 3;
\item
  item 4.
\end{itemize}

This is another paragraph, with a quoted item list.

\begin{quote}
\begin{itemize}
\tightlist
\item
  item 1;
\item
  item 2;
\item
  subitem 1;
\item
  item item 3;
\item
  item 4.
\end{itemize}
\end{quote}

@jgm As you can see, tha latex code generated in the "quoted" case is incorrect, because there is not the inner \begin{itemize} ... \end{itemize} to nest "subitem 1".

@jkr
Copy link
Collaborator

jkr commented Sep 22, 2016

This is expected, if somewhat annoying, behavior. You're encountering the intersection of two rules:

  1. There can be an optional space after a block-quote marker ("> " == ">")
  2. You need four spaces to produce a new list level (the "four-space rule")

So when you append block-quotes to these list items which have a space before them, the space after the > gets eaten, and the the inner list is only indented by three spaces.

It would be nice if you could just append a block quote and have it work as expected, but I'm not sure there's a way with the four-space rule in effect.

BTW, commonmark's list-handling (which moves away from the four-space rule) seems to address this particular case, so somewhere in the future it will probably be a solved problem.

@jkr
Copy link
Collaborator

jkr commented Sep 22, 2016

I forgot to mention: the upshot of all this is that adding an extra space to the indentation of the inner list takes care of the problem.

@davtorgh
Copy link
Author

Thank you for the explanation @jkr and for the suggested workaround. It works.
I close the issue.

jgm added a commit that referenced this issue Aug 19, 2017
Closes #3511.

Previously pandoc used the four-space rule: continuation paragraphs,
sublists, and other block level content had to be indented 4
spaces.  Now the indentation required is determined by the
first line of the list item:  to be included in the list item,
blocks must be indented to the level of the first non-space
content after the list marker. Exception: if are 5 or more spaces
after the list marker, then the content is interpreted as an
indented code block, and continuation paragraphs must be indented
two spaces beyond the end of the list marker.  See the CommonMark
spec for more details and examples.

Documents that adhere to the four-space rule should, in most cases,
be parsed the same way by the new rules.  Here are some examples
of texts that will be parsed differently:

    - a
      - b

will be parsed as a list item with a sublist; under the four-space
rule, it would be a list with two items.

    - a

          code

Here we have an indented code block under the list item, even though it
is only indented six spaces from the margin, because it is four spaces
past the point where a continuation paragraph could begin.  With the
four-space rule, this would be a regular paragraph rather than a code
block.

    - a

            code

Here the code block will start with two spaces, whereas under
the four-space rule, it would start with `code`.  With the four-space
rule, indented code under a list item always must be indented eight
spaces from the margin, while the new rules require only that it
be indented four spaces from the beginning of the first non-space
text after the list marker (here, `a`).

This change was motivated by a slew of bug reports from people
who expected lists to work differently (#3125, #2367, #2575, #2210,
 #1990, #1137, #744, #172, #137, #128) and by the growing prevalance
of CommonMark (now used by GitHub, for example).

Users who want to use the old rules can select the `four_space_rule`
extension.

* Added `four_space_rule` extension.
* Added `Ext_four_space_rule` to `Extensions`.
* `Parsing` now exports `gobbleAtMostSpaces`, and the type
  of `gobbleSpaces` has been changed so that a `ReaderOptions`
  parameter is not needed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants