我尝试为学生创建一个教程。我想给我问他们的问题编号,但在其中我想添加介绍问题的信息。如何制作一个自动编号列表,在我放置文本时不会重置编号。例如:
This is some info.
1. This is question one.
This is more info.
2. This is question two.
输出结果为:
这是一些信息。
- 这是问题一。
这是更多信息。
- 这是问题二。
我尝试为学生创建一个教程。我想给我问他们的问题编号,但在其中我想添加介绍问题的信息。如何制作一个自动编号列表,在我放置文本时不会重置编号。例如:
This is some info.
1. This is question one.
This is more info.
2. This is question two.
输出结果为:
这是一些信息。
这是更多信息。
标准Markdown不支持直接实现此功能,但可以通过“伪造”(见下文)来实现。事实上,规则如下所述:
需要注意的是,用于标记列表的实际数字对Markdown生成的HTML输出没有影响....重点是,如果您愿意,可以在有序Markdown列表中使用序数,使源中的数字与已发布的HTML中的数字相匹配。但如果您懒得这么做,也没关系。
然而,如果您确实使用了懒惰的列表编号,仍应以数字1开始列表。将来,Markdown可能会支持以任意数字开始有序列表。
正式来说,这种未来从未到来。但是一些不同的Markdown实现可能会将此功能作为非默认选项提供。不幸的是,这很少见(我也不记得是哪些实现)。
无论如何,您将遇到另一个问题。我不清楚您期望的输出如何是有效的HTML。本质上,您正在要求在列表项之外嵌套在列表内的段落。这将是无效的HTML:
<ol>
<p>This is some info.</p>
<li>This is question one.</li>
<p>This is more info.</p>
<li>This is question two.</li>
</ol>
话虽如此,它(几乎)会按照您想要的方式显示(非列表项也缩进)。
这是一些信息。
- 这是问题一。
这是更多信息。
- 这是问题二。
我不建议这样做,但您可以将其用作原始HTML。也许您可以找到其他方法或格式来表示您的数据。
如果您的Markdown实现支持它(虽然非标准,但此功能非常常见且跨实现一致,尽管可能默认情况下未启用),我建议使用嵌套在定义列表中的有序列表。它确实为您提供了正确的嵌套,但非连续数字的问题仍然存在。但是,如果您手动添加数字并转义它们,以使它们不被解释为列表项,则它的效果如下:
This is some info.
: 1\. This is question one.
This is more info.
: 2\. This is question two.
那将呈现为:
<dl>
<dt>This is some info.</dt>
<dd>1. This is question one.</dd>
<dt>This is more info.</dt>
<dd>2. This is question two.</dd>
</dl>
并显示为:
- 这是一些信息。
- 1. 这是第一个问题。
- 这是更多信息。
- 2. 这是第二个问题。
有趣的是,由于SO移除了定义列表上的缩进(通常是默认的),在尝试模拟上面的演示时,我发现有一个更简单的解决方案,可以在所有Markdown实现中使用。只需使用段落、手动编号和不间断空格来强制缩进即可:
This is some info.
1. This is question one.
This is more info.
2. This is question two.
请注意,非断行空格会导致Markdown不将这些行视为列表项,从而避免了需要对它们进行转义的必要性。上面的内容呈现为:
Note that the non-breaking spaces cause Markdown to not see those lines as list items negating the need to escape them. The above renders as:
<p>This is some info.</p>
<p> 1. This is question one.</p>
<p>This is more info.</p>
<p> 2. This is question two.</p>
并显示为:
这是一些信息。
1. 这是第一个问题。
这是更多信息。
2. 这是第二个问题。
在 Jupyter 笔记本的 Markdown 模式中,我们可以通过多种方式创建列表。我自己建议的最简单的方法是:仅需在列表项前附加 *
(请确保在星号后包括空格)。例如:
* one
* two
* three
输出:
- 一
- 二
- 三
另外一种方法是,您只需输入任何一个带有数字
和句点
的内容,如1.
,然后再输入列表项。
1. one
2. two
3. three
那么我们将看到以下输出:
- 一
- 二
- 三
如果你想改变列表格式,比如将点转换成数字或数字转换成点,只需要更改相应格式的一个元素,整个列表就会转换。
例如:
1. one
* two
* three
输出将会是:
- 一
- 二
- 三
和
* one
2. two
3. three
输出:
- 一
- 二
- 三
与期望的不完全相同,但是当我写下1)2)3)等时,Jupyter停止了重新编号。
在Jupyter的markdown中,")"似乎禁用了重新编号。至少对于运行python 3.5.2的Jupyter版本5.0.0而言。
.
的相同方法仍然不起作用。 - n1k31t4