我需要在kramdown的列表项中嵌入一个代码块。代码块由Pygments突出显示。
结果如下图所示。我希望代码块向右移动以证明它是列表元素的一部分。kramdown 文档使用围栏块样式,它不适用于我的Jekyll网站,所以我使用另一个:
{% highlight robotframework %}
...
{% endhighlight %}
如何以这种方式自动控制缩进?
感谢您的任何建议。
kramdown
支持列表中的围栏代码块。
根据Planet Jekyll FAQ,关键是缩进与列表项对齐的围栏代码块。还需要在围栏块的上方和下方放置一个分隔换行符:
问:我怎样才能让反引号围栏代码块(例如```)在列表中工作(使用kramdown)?
要点是列表中代码块的缩进由列表项标记之后的第一个非空格字符的列号确定。嗯?
让我们使用一些示例(注意前面的空格被替换为点,例如
·
以提供帮助):项目符号列表
*·some text => use 2 spaces indentation e.g. ``` $ gem install beerdb ``` *···some text => use 4 spaces indentation e.g. ``` $ gem install beerdb ```
编号列表
1.·some text => use 3 spaces indentation e.g. ``` $ gem install beerdb ```
==> 如果您将防护代码块与“自然”列表缩进对齐,它将起作用。
有关更多示例,请参阅语法荧光笔沙盒列表页面- (source)。
看来 Kramdown 仅支持文档根(非嵌套)的围栏代码块。虽然其他实现最近已被调整以支持嵌套的围栏代码块,但 Kramdown 仍然实现旧的原始提案,并且有一段时间没有更新。如果您想使用嵌套在列表项中的防护代码块,那么您将需要使用不同的 Markdown 实现(和/或说服开发人员使用 Kramdown 来更新他们的实现)。
您可能需要更新到最新版本的 Kramdown,和/或调整您在受保护代码块的每一行前面的缩进量。在这方面似乎有些不一致。根据这个评论,你应该有四个缩进空格,但是,至少有一些版本已经知道有四个空格会失败,但可以使用两个空格。
无论您使用哪种 Markdown 实现,Jekyll 都提供了一种基于模板的方法来识别代码块以进行高亮显示。但是,这也仅限于在文档根目录上。毕竟,如果您想在 Markdown 文档中使用代码块来展示如何使用此方法,则该代码块将被缩进。因此,Jekyll 只作用于非缩进的块。
您可能会发现 JavaScript 高亮引擎会更好地为您服务。这样你就可以使用标准的(缩进的)代码块,这些代码块可以与任何 Markdown 实现一起工作,并且可以随意嵌套它们。并且一些更好的 JavaScript 高亮引擎有很好的语言检测,所以你通常不需要标记代码块的语言。