降价:继续编号清单


473

在下面的markdown代码中,我想item 3从列表编号3开始。但是由于markdown之间的代码块,此列表项将作为新列表启动。有什么办法可以防止这种行为?

所需的输出:

1. item 1
2. item 2

```
Code block
```

3. item 3

产生的输出:

  1. 项目1
  2. 项目2

Code block

  1. 项目3

4
这是正确的解决方案。Macmade的答案中的三个反引号实际上只是产生一个<code>HTML元素,其中包含换行符,这不是语法突出显示的,并且上面有一个额外的空白行,以代码形式突出显示。
Dan Dascalescu 2014年

1
如果您真的很绝望,可以在HTML字符代码中查找要使用的数字(以及随后的每个项目)...,如中所示&#50;&#57;. this is list item number 29。不过,这可能不适用于所有降价解析器。
罗伊·廷克

Answers:


620

使用四个空格在项目符号点之间缩进内容

1. item 1
2. item 2

    ```
    Code block
    ```
3. item 3

产生:

  1. 项目1
  2. 项目2

    Code block

  3. 项目3

5
是的,缩进使解析器清楚地知道代码块属于列表项2。否则,它只是普通段落,将结束列表。
Macmade

42
但是...如果您不想在那里缩进怎么办?据我所知,Markdown没有解决方案。开始列表,然后停止并提供一些有关列表的元注释通常是很自然的事情-我们刚刚做了什么,以及接下来要做什么-从逻辑上讲,这些文本都不是列表的一部分-并且然后继续列出。Markdown不希望我们这样做。Markdown不希望人们表达这种想法,Markdown不知道如何表达,Markdown认为这太自由了。工具应遵循思想。叹。我可以用HTML编写或制作PDF。
火星

2
似乎根本不适合我。我有一个简单的编号列表,并如上图所示缩进和换行。仍然从1重新开始
Ray

10
在我尝试过的几种Markdown编辑器(Bitbucket,Tumblr)中,这不起作用-它呈现内联代码,而不是适当缩进的代码块。
thdoan '16

2
在IntelliJ中,每个编号块的底部有多少行空行会有所不同。如果您保留2空行,它将重新开始编号;只留下一个,然后继续。
大黄

36

请注意,在Macmade的解决方案中,如何在“代码块”上方看到一行额外的代码。

这是两个更好的解决方案:

  1. 将代码块缩进额外的4个空格(在此嵌套列表示例中,通常为8个空格)。这会将代码放入一个<pre>元素中。在SO上,您甚至可以指定语法高亮显示
    <!-- language: lang-js -->缩进4个空格(由于嵌套列表,此处为+1)。

    1. 项目1
    2. 项目2

      Code.block('JavaScript', maybe)?
    3. 项目3

  2. 或者,只需将Code块放在反引号内,并缩进4个空格(此处是1个,这是因为嵌套列表)。您将获得一个常规的缩进文本段落,其中包含一个<code>元素。您不能在语法上突出显示以下内容:

    1. 项目1
    2. 项目2

      Code block

    3. 项目3

注意:您可以在此答案上单击“编辑”以查看基础的Markdown代码。无需保存;)


27
这是针对此特定问题的解决方案,但不是解决插入某些文本后在下一个数字处重新启动Markdown列表的问题的一般解决方案。看来没有办法做到这一点,这使我发疯。Markdown的其他一切都很棒。
火星

您可以从DavidT的答案中看到@Mars,一般的解决方案是使文本缩进任意数量的空格。例如,添加一个空格而不是四个空格将允许您插入任何中间的文本,而无需创建代码块。
ClydeTheGhost

36

作为现有答案的扩展。对于那些试图在除代码块以外的内容之后继续编号列表的人。例如第二段。只需将第二段缩进至少1个空格。

降价:

1. one
2. two

 three
3. four

输出:


1
甜!我有一系列的伪代码块和MathJax方程。这正是我所需要的。
xtian

在GitHub Wiki上不起作用。添加更多空格将至少使编号与tho以上数字具有相同的类型。:
rofl

1
@ChaimEliyah Thats因为我99%的人确定Wiki不使用GitHub风格的markdown(我之前曾遇到过这种好奇心)
DavidT

这也可以解决以下情况:在列表条目末尾有一个包含一些文本,一些代码以及最后更多文本的列表条目。
Frotz

14

如果使用制表符缩进代码块,它将把整个代码块整形为一行。为了避免这种情况,您需要使用html有序列表。

  1. 项目1
  2. 项目2

代码块

<ol start="3">
  <li>item 3</li>
  <li>item 4</li>
</ol>

13

Macmade的解决方案在我在Github Pages上的Jekyll实例上不再适用于我,但是我在kramdown github存储库的一个问题上找到了该解决方案。对于OP的示例,它看起来像这样:

1. item 1
2. item 2

```
Code block
```

{:start="3"}
3. item 3

轻松解决了我的问题。


3
不幸的是,这不适用于GitHub自述文件。:(
Nostalg.io

7

资源;

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


结果;

1.项目1
2.项目2 Code block 3.项目3


4

如果您不希望缩进列表项之间的行,如用户Mars在其评论中提到的那样,则可以使用pandocexample_lists功能。从他们的文档

(@)  My first example will be numbered (1).
(@)  My second example will be numbered (2).

Explanation of examples.

(@)  My third example will be numbered (3).

是!这很棒。做得好。
javadba

这是解决此问题的最通用的方法。无需缩进,如果列表元素之间有标题,它甚至可以工作。
lillemets 19/09 / 26,13

(@)对应于一个全球性的持续列表(所以只能有一个使用。pandocstartnum扩展,你可以开始你想要的号码排序列表,它就可以工作。
阿比德·H. Mujtaba

2

将列表编号放在括号中,而不要使用句号。

(1)项目1
(2)项目2 code block (3)项目3


5
这会破坏<ol><li>元素,而是将它们包装在<p>标签中。此外,您实际上会得到(1)
jmargolisvt

2
我认为这是目的。
Gal 2016年

1

我在Github上解决了这个问题,用换行符分隔缩进的子块,例如,您编写了项1,然后按Enter键两次(例如,如果它是一个新段落),使该块缩进并编写您想要的内容(一个块代码,文本等)。有关Markdown列表Markdown换行符的更多信息。

例:

  1. 第一项
  2. 第二项

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

  3. 第三项

    some other code

  4. 第四项

0

请注意,还有许多扩展可以针对Markdown使用的特定上下文解决此问题。

例如,python-markdown的sane_lists扩展名(例如,在mkdocs中使用)将识别Markdown列表中使用的数字。您只需要启用此扩展arkdown.markdown(some_text, extensions=['sane_lists'])


0

如果要使文本与上一个列表项对齐,但又避免出现“大”换行符,请在列表项的末尾使用两个空格,并用一些空格对文本进行缩进。

来源:(点是空格;-)当然)

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

结果:

  1. item1
    这是一些文字
  2. item2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.