为什么Markdown的项目符号需要额外的空行分隔?

4

我的 Markdown 页面包含以下内容:

- [Section1](#section1)  
  - [Subsection1](#subsection1)
  - [Subsection2](#subsection2)
- [Section2](#section2)
- [Section3](#section3)
- [Section4](#section4)

期望输出结果 (假设每个项目符号都是一个超链接):

  • 部分1
    • 子部分1
    • 子部分2
  • 部分2
  • 部分3
  • 部分4

实际输出结果 (假设每个项目符号都是一个超链接):

  • 部分1

    • 子部分1
    • 子部分2
       
  • 部分2

  • 部分3

  • 部分4

我不知道为什么Github/Jekyll服务器不能产生期望的输出。

当我在浏览器(Chrome)中查看源码时,发现以下内容(这是不期望的):

<ul>
<li>
<p><a href='#section1'>Section1</a></p>

<ul>
<li><a href='#subsection1'>Subsection1</a></li>

<li><a href='#subsection2'>Subsection2</a></li>
</ul>
</li>

<li>
<p><a href='#section2'>Section2</a></p>
</li>

<li>
<p><a href='#section3'>Section3</a></p>
</li>

<li>
<p><a href='#section4'>Section4</a></p>
</li>
</ul>

为什么我在这里看到了<p>标签?是生成器或我的Markdown代码出了问题吗?

我该如何解决?


你的MarkDown代码没问题。我在MarkdownPadMarkdown Dingus中都检查过了,生成的代码符合预期。可能是Github/Jekyll出了什么问题。 - Michael Geary
在什么情况下可能会生成带有额外行的输出?某些空格的组合(在代码中是不可见的)可能会影响输出吗? - Nawaz
既然你提到了,我看到你的Markdown源代码第一行有两个尾随空格。在Dingus中,这会导致在第二个<ul>之前插入一个<br />元素。你可以在Dingus中自己尝试加上或去掉这两个空格。然而,这个<br />似乎不会影响渲染后的HTML输出 - 就像你在Github上得到的<p>标签那样。 - Michael Geary
我在想,如果Markdown源代码中出现错误,是否可能会输出<p>。如果无论如何都不可能出现<p>,那么Github生成器肯定存在漏洞。 - Nawaz
你使用的是哪个Markdown引擎? - RobertKenny
@RobertKenny:我正在使用Github使用的引擎(即我的HTML页面是由Github上的引擎生成的)。 - Nawaz
1个回答

5

我刚刚进行了一些测试,看起来是markdown处理引擎导致了这个问题。

  • 使用Maruku markdown引擎会添加空行。
  • 使用redcarpet markdown引擎不会添加额外的行。
  • 使用kramdown markdown引擎也不会添加额外的行。

(无法在Windows上安装rdiscount,因此无法进行测试)


当然,对于GitHub页面 https://help.github.com/articles/using-jekyll-with-pages ,您可以通过更改_config.yml中的设置来覆盖并使用RDiscount。 - RobertKenny
这是一个很棒的信息。非常感谢。接受了答案。 :-) - Nawaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接