在kramdown中将代码块嵌入到列表项中并使用适当的缩进

时间:2016-01-25 08:18:22

标签: css markdown kramdown

我需要在 kramdown 的列表项中嵌入代码块。 代码块由 Pygments 突出显示 结果如下图所示。我希望代码块向右移动以证明它是list元素的一部分。 kramdown文档使用 fenced block style ,它与我的 Jekyll 网站不兼容,所以我使用了另一个:

{% highlight robotframework %}
...
{% endhighlight %}

如何以这种方式自动控制压痕?
谢谢你的任何建议。

this

2 个答案:

答案 0 :(得分:1)

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
   ```
     

<强> ==&GT;如果将带隔离的代码块与“自然”列表缩进对齐,它将起作用。

     

有关更多示例,请参阅syntax highlighter sandbox list page - (source)

答案 1 :(得分:0)

看来Kramdown只支持文档根(不是嵌套)的受防护代码块。虽然最近其他实现已经过调整以支持嵌套的受防护代码块,但Kramdown仍然实现了旧的原始提议,并且在一段时间内没有更新。如果您想使用嵌套在列表项中的受防护代码块,那么您将需要使用不同的Markdown实现(和/或说服开发人员向Kramdown更新其实现)。

您可能需要更新到更新版本的Kramdown,和/或调整屏蔽代码块每行前面的缩进量。在这方面似乎存在一些不一致之处。根据{{​​3}},你应该有四个缩进空格,但是,至少有一些版本知道失败有四个空格但是有两个空格。

无论您使用哪种Markdown实现,Jekyll都提供了一种基于模板的识别代码块的方法,以突出显示目的。但是,这也仅限于文档根目录。毕竟,如果您想在Markdown文档中使用代码块来显示如何使用此方法,那么该代码块将缩进。因此,Jekyll只对非缩进块进行操作。

您可能会发现JavaScript突出显示引擎会更好地为您服务。这样你就可以使用标准(缩进)代码块,它可以与任何Markdown实现一起使用,并根据你的需要嵌套它们。一些更好的JavaScript突出显示引擎具有非常好的语言检测功能,因此您通常不需要标记代码块的语言。