降价编辑在段落下不起作用

时间:2017-11-14 05:24:36

标签: html markdown github-pages github-flavored-markdown

我有一个GitHub页面的MD代码。



<p align="justify">
Text Text Text.

</p>

<p align="justify">
**Text** Text Text.


`Text` Text.

</p>
&#13;
&#13;
&#13;

虽然第一个段落标记工作正常,因为其中没有完成Markdown编辑,但第二段标记内的文本不是应该格式化的。 (没有大胆,没有quotes

为什么会这样?那么如何在段落内使用Markdown编辑?

1 个答案:

答案 0 :(得分:1)

Markdown rules明确表示:

  

请注意,在块级HTML标记中不处理Markdown格式化语法。例如,您不能在HTML块中使用Markdown样式的*emphasis*

那就是说,GitHub Pages uses Kramdown来解析Markdown,而Krandown的行为略有不同,这为你提供了更大的灵活性。事实上,Kramdown的documentation州:

  

如果HTML标记具有属性markdown="1",则使用此标记中解析语法的默认机制。

换句话说,这样做:

<p align="justify" markdown="1">
**Text** Text Text.


`Text` Text.
</p>

您将获得以下输出:

<p align="justify">
<strong>Text</strong> Text Text.
<code>Text</code> Text.</p>

Kramdown非常聪明,可以识别您位于<p>标记内,并且不会将新行<p>标记中的各行包裹起来,这将是无效的HTML。如果您确实希望每一行都是一个单独的段落,那么您应该使用<div>来包装所有内容。像这样:

<div align="justify" markdown="1">
**Text** Text Text.


`Text` Text.
</div>

这导致此输出:

<div align="justify">
    <p><strong>Text</strong> Text Text.</p>
    <p><code>Text</code> Text.</p>
</div>

为了完整起见,应该注意GitHub README和Gists不使用相同的Markdown解析器。相反,他们使用扩展的Commonmark解析器,它以原始HTML处理Markdown,与上述两种方式不同。在Commonmark中,原始HTML块的内容是否被解析为Markdown取决于内容是否用空行包装。在这种情况下,正确的方法是这样做:

<div align="justify">

**Text** Text Text.


`Text` Text.

</div>

但是,由于GitHub将删除align属性,因此在github.com上托管的页面(例如README)上没有任何意义。还有一个问题是,Commonmark不够智能,无法检测到包装原始HTML标记是<p>标记,并将每行包装在另一个<p>中,导致HTML无效。因此,在这种情况下,您必须使用<div>

尽管使用空白行方法告诉解析器将内容解析为Markdown是一种更优雅的解决方案markdown="1",但只有Commonmark解析器支持它,而Kramdown不支持。因此,只要GitHub Pages使用Kramdown,您就需要关注Kramdown's rules