我想在Markdown中通过一系列代码为H4和H3和P调用特殊的CSS。我正在使用Kramdown,但如果它具有所需的功能,我会愿意使用另一个。我尝试过:
<div id="X">
### Header
#### Header2
blah
</id>
它没有用。标头未解释为减价。我还尝试了<span>
。
有什么办法吗?
答案 0 :(得分:1)
Kramdown为您提供了许多选项,下面将依次进行解释。
如Markdown rules所述:
请注意,Markdown格式语法不会在其中处理 块级HTML标签。例如,您不能使用Markdown风格的
*emphasis*
在HTML块中。
当然,您始终可以使用所有原始HTML,这些HTML可以在所有实现中使用。实际上,如果查看原始降价规则的source,您会发现所有标头都是使用原始HTML定义的,因此可以将ID分配给每个标头。因此,这应该可以解决问题:
<h3 id="foo">Header</h3>
<h4 id="bar">Header2</h4>
<p class="baz">blah</p>
当然,您会失去在Markdown中书写(和阅读)的好处。但是,Kramdown提供了许多解决方案。
Kramdown提供了parse_block_html选项,该选项启用后将允许在原始HTML块内进行Markdown处理。但是,该选项的文档说明:
由于通常不希望这样做,因此默认值为
false
。它是 通常最好通过以下方式有选择地启用kramdown处理: markdown属性。
上面提到的“ 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>
最后,Kramdown还包含对auto_ids选项的支持,该选项在启用后会向每个标头添加自动生成的ID。