以下HTML的Markdown等价物是什么?
<ul><li>Here is a bullet point</li>
<li>Here is another bullet point; it has sub-points:
<ul><li>subpoint 1</li>
<li>subpoint 2</li>
<li>subpoint 3</li></ul>
but then continues with the original bullet point</li>
<li>and here's one more point just to drive it home</li>
</ul>
我似乎无法将“......然后继续...”位保留在封装子列表的同一个项目符号中。我尝试了几种变体:
* Here is a bullet point
* Here is another bullet point; it has sub-points:
* subpoint 1
* subpoint 2
* subpoint 3
but then continues with the original bullet point
* and here's one more point just to drive it home
对于“but then
”具有不同的缩进级别,但无论它与“subpoint 3
”连接的是什么,或者它只是在项目符号点下变成另一个子缩进。特定的行为也会根据我正在使用的Markdown的风格而有所不同。
这是不是太复杂了,无法封装在Markdown中,而且我应该只使用内联HTML?
答案 0 :(得分:4)
你需要包含一些空行来告诉Markdown何时开始列表,何时结束列表,何时开始一个段落(不在列表中)等等......
* Here is a bullet point
* Here is another bullet point; it has sub-points:
* subpoint 1
* subpoint 2
* subpoint 3
but then continues with the original bullet point
* and here's one more point just to drive it home
呈现为:
<ul>
<li>Here is a bullet point</li>
<li>
<p>Here is another bullet point; it has sub-points:</p>
<ul>
<li>subpoint 1</li>
<li>subpoint 2</li>
<li>subpoint 3</li>
</ul>
<p>but then continues with the original bullet point</p>
</li>
<li>
<p>and here's one more point just to drive it home</p>
</li>
</ul>
关键是将嵌套在列表项中的所有内容都想象成它自己的独立Markdown文档,该文档从文档的其余部分缩进了四个空格。在这种情况下,您需要在最后一个列表项和后面的段落之间添加一个空行,所以你也可以在这里做。
有一点需要注意的是,这会产生的输出包括你现在有一个“懒惰列表”的副作用。也就是说,列表项的内容现在包含在<p>
标记中。这在rules:
如果列表项由空行分隔,Markdown会将项目包装在HTML输出中的
<p>
标记中。
如果您不想要额外的<p>
标记,那么您不能在列表项中嵌套多个块级元素。
最后,我会注意到在上面的示例中,第一个列表项没有获得<p>
标记。虽然规则中没有以这种或那种方式记录,但这是原始参考实现的行为(仅列出空白行(空白行前后的项)获取<p>
标记的列表项)。虽然一些实现已经复制了这种行为,但并非所有实现都有,并且它们之间存在各种不同的边缘情况。为了实现一致性,如果我需要在列表中的任何位置使用空行,我发现在每个列表项之间包含一个空行是一个好习惯。因此我会这样做:
* Here is a bullet point
* Here is another bullet point; it has sub-points:
* subpoint 1
* subpoint 2
* subpoint 3
but then continues with the original bullet point
* and here's one more point just to drive it home
哪个应更一致地呈现为:
<ul>
<li>
<p>Here is a bullet point</p>
</li>
<li>
<p>Here is another bullet point; it has sub-points:</p>
<ul>
<li>subpoint 1</li>
<li>subpoint 2</li>
<li>subpoint 3</li>
</ul>
<p>but then continues with the original bullet point</p>
</li>
<li>
<p>and here's one more point just to drive it home</p>
</li>
</ul>