markdown
使用代码围栏时添加类的正确方法是什么?
无论哪种 hack 恰好适用于您正在使用的实现。
首先,围栏代码块只是部分标准化。它们不在原来的规则中。但是,它们最近被添加到Commonmark 规范中,该规范仅提供一个类来指定一种语言。除此之外,规范指出:
可以在打开代码围栏之后提供信息字符串。尽管此规范没有要求对信息字符串进行任何特殊处理,但第一个单词通常用于指定代码块的语言。在 HTML 输出中,语言通常通过在代码元素中添加一个类来指示,该代码元素由language-
后跟语言名称组成。
规范中的一个示例显示定义了多个项目:
~~~~ ruby startline=3 $%@#$
但是,在输出中只有第一个单词存在。其他一切都丢失了。
<pre><code class="language-ruby">
如上所述,防护代码块是 Commonmark 规范的最新成员。大多数实现在指定它们之前已经在不同程度上支持它们。因此,处理第一个单词以外的任何内容的方式多种多样。您需要检查您正在使用的特定实现的文档。
当您用 标记此内容时[hugo]
,我检查了Hugo 的文档,其中示例表明语言识别仅支持一个单词。Hugo 的文档还指出,他们在后台使用Goldmark进行 Markdown 解析。Goldmark 将自己标记为“符合标准”的 Commonmark 实现,这表明它将按照规范中记录的方式运行。但是,它确实支持第三方扩展。有人总是可以创建一个扩展,它支持围栏代码块的信息字符串中的更多功能。
在第三方扩展之外,您将需要使用 hack 来欺骗解析器将多个类视为一个单词。