819

In the following markdown code I want item 3 to start with list number 3. But because of the code block in between markdown starts this list item as a new list. Is there any way to prevent that behaviour?

Desired output:

1. item 1
2. item 2
```
Code block
```
3. item 3

Produced output:

  1. item 1
  2. item 2

Code block

  1. item 3
asked Aug 6, 2013 at 19:36
3
  • 7
    Here's the correct solution. The triple backticks in the Macmade's answer actually just produce a <code> HTML element with newlines in it, which is not syntax-highlightable, and has an extra blank line above visibly highlighted as code. Commented Mar 3, 2014 at 4:55
  • 1
    If you're really desperate, you could look up the HTML character codes for the numbers you wish to use (and for every subsequent item)... as in &#50;&#57;. this is list item number 29. This may not work in all markdown parsers though. Commented Oct 24, 2016 at 23:35
  • 1
    In case anyone stumbles in here today, use 1. for every item in your numbered list and markdown will take care of the numbering for you. If you wish to start a list (make it look like a continuation) then start the list with the desired number e.g. 3. The question as-is probably produces the desired output now. Answer below Commented May 18, 2024 at 6:47

17 Answers 17

1052

Use four spaces to indent content between bullet points

1. item 1
2. item 2
 ```
 Code block
 ```
3. item 3

Produces:

  1. item 1
  2. item 2

    Code block

  3. item 3
Levi Fuller
16.2k4 gold badges41 silver badges47 bronze badges
answered Aug 6, 2013 at 19:45
Sign up to request clarification or add additional context in comments.

15 Comments

Yes, indentation makes it clear to the parser that the code block belongs to the list item 2. Otherwise, it's just a normal paragraph, and will end the list.
But ... what if you don't want indentation there? Markdown has no solution, as far as I know. It's often a natural thing to start a list, then stop and provide some text that's a meta comment about the list--what we just did, and what's coming next--without the text being, logically, part of the list--and then continue the list. Markdown does not want us to do that. It's a form of thought that Markdown does not want people to express--that Markdown does not know how to express, that Markdown thinks is too ... free. Tools should follow thought. Sigh. I could write in HTML, or make PDFs.
Doesn't seem to work at all for me. I have a simple numbered list, and indented and new-lined as shown above. Still restarts at 1.
In the few Markdown editors that I've tried (Bitbucket, Tumblr), this doesn't work -- it renders inline code instead of a properly indented code block.
In IntelliJ it makes a difference how many blank lines are at the bottom of each numbered block. If you leave 2 blank lines, it restarts numbering; leave only one and it continues.
|
74

As an extension to existing answers. For those trying to continue a numbered list after something other than a code block. For example a second paragraph. Just indent the second paragraph by at least 1 space.

Markdown:

1. one
2. two
 three
3. four

Output:

  1. one

  2. two

    three

  3. four

answered Mar 31, 2016 at 15:00

7 Comments

Sweet! I had a series of pseudo code blocks and MathJax equations. This was exactly what I needed.
Doesn't work on GitHub Wiki. Adding more spaces will at least make the numbering the same type as the numbers above tho. :rofl:
@ChaimEliyah Thats because im 99% sure the wiki doesn't use GitHub flavoured markdown (im sure I've come across this curiosity previously)
This will also take care of situations where you have a list entry containing some text, some code, and finally more text before the end of the list entry.
This answer worked for me for a list with inline images, whereas the accepted answer did not.
|
50

Notice how in Macmade's solution, you can see an extra line of code above the "Code block".

Here are two better solutions:

  1. Indent the code block by an extra 4 spaces (so usually 8, in this nested list example, 12). This will put the code in a <pre> element. On SO, you can even specify syntax highlight with a
    <!-- language: lang-js --> indented by 4 spaces (+1 here due to the nested list).

    1. item 1
    2. item 2

      Code.block('JavaScript', maybe)?
      
    3. item 3

  2. Or, just put the Code block within backticks and indent by 4 spaces (here, 1 extra because of the nested list). You'll get a regular indented text paragraph, with a <code> element inside it. This one you can't syntax-highlight:

    1. item 1
    2. item 2

      Code block

    3. item 3

Note: you can click "edit" on this answer to see the underlying Markdown code. No need to save ;)

answered Mar 3, 2014 at 4:46

3 Comments

This is a solution for this particular problem, but it's not a general solution to the problem of restarting a Markdown list at the next number after some intervening text. It appears that there is no way to do this, which drives me crazy. Everything else about Markdown is great.
@Mars as you can see from DavidT's answer, the general solution is to indent the text with any number of spaces. For instance, adding one space instead of four will allow you to insert any intervening text without having to create a code block.
Actually, SO is not designed to let you see the underlying code. Even with an account, all I get is "There are too many pending edits on Stack Overflow. Please try again later."
43

Macmade's solution doesn't work for me anymore on my Jekyll instance on Github Pages anymore but I found this solution on an issue for the kramdown github repo. For OP's example it would look like this:

1. item 1
2. item 2
```
Code block
```
{:start="3"}
3. item 3

Solved my issues handily.

answered Jan 10, 2017 at 18:18

2 Comments

Unfortunately, this does not work with GitHub readme files. :(
Was excited to read this, but in my Fastpages (Jekyll Github Pages) blog that uses kramdown, that start code is simply ignored. I suspect it gets mangled by Liquid or nbdev.
27

If you use tab to indent the code block it will shape the entire block into one line. To avoid this you need to use html ordered list.

  1. item 1
  2. item 2

Code block

<ol start="3">
 <li>item 3</li>
 <li>item 4</li>
</ol>
answered Apr 17, 2016 at 3:43

1 Comment

Works for me with markdown on the "dev.to" dev blog platform, thanks.
27

If you happen to be using the Ruby gem redcarpet to render Markdown, you may still have this problem.

You can escape the numbering, and redcarpet will happily ignore any special meaning:

1\. Some heading
text text
text text
text text
2\. Some other heading
blah blah
more blah blah
answered Aug 3, 2020 at 9:13

2 Comments

This is the only solution works for me: multiple line code blocks in ordered list, and the code still formatted correctly with newlines, and works on Github.
Just opened a PR with redcarpet to support broken-up ordered lists. Fingers crossed.
14

When you indent with 4 spaces, you never have to increment your numbers from "1." to "2." to "3."...

Markdown:

1. item 1
1. item 2
 ```
 Code block
 ```
1. item 3

Produces this output:

1. item 1
2. item 2
 ```
 Code block
 ```
3. item 3
answered Mar 20, 2023 at 17:58

Comments

11

In CommonMark Spec has a rules about this

1. foo
2. bar
3) baz

Generate this HTML

<ol>
<li>foo</li>
<li>bar</li>
</ol>
<ol start="3">
<li>baz</li>
</ol>
tarleb
23.1k5 gold badges62 silver badges94 bronze badges
answered Dec 29, 2021 at 15:02

2 Comments

This is the correct answer by far.
You're the G.O.A.T. Thanks. A good example of a use case for this is homework assignments that might skip numbers.
7

Source:

<span>1.</span> item 1<br/>
<span>2.</span> item 2
```
Code block
```
<span>3.</span> item 3

Result:

1. item 1
2. item 2

Code block

3. item 3

answered Oct 26, 2017 at 23:09

1 Comment

this is HTML, not Markdown
5

If you don't want the lines in between the list items to be indented, like user Mars mentioned in his comment, you can use pandoc's example_lists feature. From their docs:

(@) My first example will be numbered (1).
(@) My second example will be numbered (2).
Explanation of examples.
(@) My third example will be numbered (3).
answered Jan 13, 2019 at 1:47

3 Comments

This is the most universal solution to this problem. There's no need to indent and It even works if you have headings between the list elements.
The (@) corresponds to a global continuing list (so there can be only one. Using pandoc's startnum extension you can start an ordered list with the number you want and it just works.
This gets rendered as a literal '(@)' by kramdown, nothing more.
5

You can try to add a backslash (\) before the period (1\. item 1), which disables the list auto-numbering. Note: this will remove left side indentation.

1. item 1

def call_of_duty()
 return press_f()

3. item 3

print("fus ro dah")

7. item 7

print("Omae Wa Mou Shindeiru")

10. item 10


From the link source:

3\. Put on shoes
2\. Open door
1\. Step outside
renders
3. Put on shoes
2. Open door
1. Step outside
answered Nov 1, 2021 at 15:14

Comments

3

I solved this problem on Github separating the indented sub-block with a newline, for instance, you write the item 1, then hit enter twice (like if it was a new paragraph), indent the block and write what you want (a block of code, text, etc). More information on Markdown lists and Markdown line breaks.

Example:

  1. item one
  2. item two

    this block acts as a new paragraph, above there is a blank line

  3. item three

    some other code

  4. item four
answered Feb 19, 2017 at 20:43

1 Comment

This also applies in GatsbyJS
3

2024: Explicitly restart the list at the number you want. Markdown allows you to use any number and it will auto-increment. I nearly always use 1. for every item in a numbered list and let markdown take care of things, makes it really easy to change the order.

Markdown

1. item 1
1. item 2
```
Code block
```
3. item 3
1. item 4

Output

  1. item 1
  2. item 2
Code block
  1. item 3
  2. item 4
answered May 17, 2024 at 20:13

1 Comment

This works because "3" represents a start number.
2

If you want to have text aligned to preceding list item but avoid having "big" line break, use two spaces at the end of a list item and indent the text with some spaces.

Source: (dots are spaces ;-) of course)

1.·item1··
····This is some text
2.item2

Result:

  1. item1
    This is some text
  2. item2
answered May 22, 2020 at 23:36

2 Comments

Thanks--although this is not strictly speaking an answer to the original question, it is an answer to what some people want to know when they find their way to this page.
It's a lot worse actually. Generally code editors/formatters will strip trailing whitespaces from source code, therefore breaking this newline syntax. The only sure-fire way to insert a newline is using <br> element, as per markdown guide: markdownguide.org/basic-syntax/#line-break-best-practices.
2

Note that there are also a number of extensions available that will fix this behaviour for specific contexts of Markdown use.

For example, sane_lists extension of python-markdown (used in mkdocs, for example), will recognize numbers used in Markdown lists. You just need to enable this extension markdown.markdown(some_text, extensions=['sane_lists'])

answered Mar 5, 2020 at 11:17

Comments

1

Put the list numbers in parentheses instead of followed by a period.

(1) item 1
(2) item 2 code block (3) item 3

answered Jan 4, 2016 at 19:16

3 Comments

This destroys the <ol> and <li> elems and instead just wraps them in <p> tags. Additionally, you literally get (1).
I think that was the intent.
It keeps <ol> and <li> for me (using Pandoc via Hakyl)l. It seems to be the switch from x. form to (x) form that causes a new start parameter to be inserted into the <li>.
0

My solution is very simple: don't use the dot space.

e.g.

1.apple
2.banana
3.cherry
4.drone

which produces:

1.apple

2.banana

3.cherry

4.drone

answered Jun 6, 2022 at 4:21

2 Comments

This doesn't seems like a "very simple" solution to me, lets say you want to delete the 2nd item ( banana) now you have to rename all the items below it isn't it?
No, since it markdown, it will solve it for you and do an ordered list: carpentries-incubator.github.io/markdown-intro/06-lists/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.