将HTML属性添加到markdown的多行部分

时间:2019-12-02 18:39:52

标签: markdown

我想在Markdown中通过一系列代码为H4和H3和P调用特殊的CSS。我正在使用Kramdown,但如果它具有所需的功能,我会愿意使用另一个。我尝试过:

<div id="X">

### Header

#### Header2

blah 

</id>

它没有用。标头未解释为减价。我还尝试了<span>

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

Kramdown为您提供了许多选项,下面将依次进行解释。

如Markdown rules所述:

  

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

使用原始HTML

当然,您始终可以使用所有原始HTML,这些HTML可以在所有实现中使用。实际上,如果查看原始降价规则的source,您会发现所有标头都是使用原始HTML定义的,因此可以将ID分配给每个标头。因此,这应该可以解决问题:

<h3 id="foo">Header</h3>
<h4 id="bar">Header2</h4>
<p class="baz">blah</p>

当然,您会失去在Markdown中书写(和阅读)的好处。但是,Kramdown提供了许多解决方案。

parse_block_html

Kramdown提供了parse_block_html选项,该选项启用后将允许在原始HTML块内进行Markdown处理。但是,该选项的文档说明:

  

由于通常不希望这样做,因此默认值为false。它是   通常最好通过以下方式有选择地启用kramdown处理:   markdown属性。

markdown = 1

上面提到的“ markdown属性”是指Markdown语法的非标准附加组件,Kramdown默认支持该附加组件以及其文档的HTML Blocks部分中的文档:

  

还可以在每个标签的标签上启用/禁用语法解析   使用markdown属性的基础:

     
      
  • 如果HTML标签具有属性markdown="0",则该标签将被解析为原始HTML块。

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

  •   
  • 如果HTML标签具有属性markdown="block",则该标签的内容将被解析为块级元素。

  •   
  • 如果HTML标签具有属性markdown="span",则该标签的内容将被解析为跨度级别元素。

  •   

就您而言,使用markdown="1"应该可以解决问题(尽管block也可以)。

<div id="X" markdown="1">

### Header

#### Header2

blah 

</id>

属性列表定义

但是,由于Kramdown允许您使用define IDs直接在标头和其他元素上Attribute List Definitions,因此您无需使用原始HTML。

### Header  {#foo)

#### Header2 {#bar}

blah
{: .baz}

上面的Markdown将被转换为以下HTML:

<h3 id="foo">Header</h3>
<h4 id="bar">Header2</h4>
<p class="baz">blah</p>

auto_ids

最后,Kramdown还包含对auto_ids选项的支持,该选项在启用后会向每个标头添加自动生成的ID。