在Jekyll中突出显示markdown代码块的语法(不使用液体标签)

mar*_*ada 43 markdown syntax-highlighting jekyll redcarpet

似乎Jekyll中的语法突出显示仅限于使用液体标签和pygments,如下所示:

{% highlight bash %}
cd ~
{% endhighlight %}
Run Code Online (Sandbox Code Playgroud)

但是我从wordpress导入了我现有的博客,它是用markdown编写的(使用markdown代码块),我不想通过每个帖子来修复代码块.此外,我想以纯缩写格式保留我的帖子,以防我再次需要切换博客平台.

我将我的Jekyll解析器切换到redcarpet希望我可以使用这个markdown语法:

```bash
cd ~
```
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.它只是将它包裹在一个正常的code块中.有任何想法吗?

小智 20

Redcarpet 2 引入了围栏块 .Jekyll 现在支持 Redcarpet 2.

顺便说一句,我使用Redcarpet with Rouge 直到 Kramdown支持 可用.

此外,有些人更喜欢 Nanoc 和Jekyll.


Nat*_*ong 16

替代解决方案

Markdown允许HTML,所以如果你不介意添加一些JS,你可以这样做:

## A section

Here is some Ruby code.

<pre>
  <code class="ruby">
    puts "hello"
  </code>
</pre>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用Highlight.js(这里的文档)来添加基于该类的突出显示.

它不是一个理想的解决方案,但它适用于任何Markdown解析器.


mar*_*ada 9

我最终切换到kramdown来解析markdown,它带有用于语法高亮的coderay.这样做的好处是可以在heroku上运行的纯红宝石解决方案.

  • 谢谢.似乎kramdown不识别```r,即使它确实识别了带有波浪线的围栏块,~~~. (5认同)

kjt*_*aka 7

步骤 1.安装Redcarpet

gem install redcarpet
Run Code Online (Sandbox Code Playgroud)

步骤 2._config.yaml像这样更新构建设置。

# Build settings
#markdown: kramdown
markdown: redcarpet
Run Code Online (Sandbox Code Playgroud)