49

It seems like syntax highlighting in Jekyll is limited to using liquid tags and pygments like so:

{% highlight bash %}
cd ~
{% endhighlight %}

But I've imported my existing blog from wordpress and it was written in markdown (using markdown code blocks) and I don't want to have to go through each post and fix the code blocks. Also, I want to keep my posts in pure markdown format in case I ever need to switch blogging platforms again.

I switched my Jekyll parser to redcarpet with the hope that I could use this markdown syntax:

```bash
cd ~
```

But it doesn't seem to work. It just wraps it in a normal code block. Any ideas?

4

8 回答 8

24

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

顺便说一句,在Kramdown 支持 可用 之前 ,我将 Redcarpet 与 Rouge一起使用。

此外,有些人更喜欢 Nanoc 而不是 Jekyll。

于 2012-02-20T19:07:05.277 回答
19

替代解决方案

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

## A section

Here is some Ruby code.

<pre>
  <code class="ruby">
    puts "hello"
  </code>
</pre>

然后,您可以使用Highlight.js此处的文档)基于该类添加突出显示。

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

于 2012-08-04T19:16:20.487 回答
9

我最终切换到kramdown来解析coderay附带的用于语法突出显示的 markdown。这具有成为适用于 heroku 的纯 ruby​​ 解决方案的好处。

于 2011-12-28T22:49:17.993 回答
7

步骤 1.安装Redcarpet

gem install redcarpet

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

# Build settings
#markdown: kramdown
markdown: redcarpet
于 2015-03-18T05:12:53.570 回答
1

在最新的 jekyll 支持代码块,但如果你使用旧版本,你需要破解。

下面呢?尝试将以下文件添加为您的_plugin/triple-backtick.rb

module Jekyll
  class MarkdownConverter
    alias :old_convert :convert
    def convert(content)
      content.gsub!(/(?:^|\n)```(\w*)\n(.*\n)```\n/m) do |text|
        cls = $1.empty? ? "prettyprint" : "prettyprint lang-#{$1}"
        "<pre class=\"#{cls}\"><code>#{$2}</code></pre>"
      end
      old_convert(content)
    end
  end
end
于 2012-10-15T12:16:02.127 回答
1

Redcarpet 默认集成到 Jekyll 中,代码突出显示将按预期运行。

对于较旧的 Jekyll 博客:

  1. 安装 redcarpet gem:

    gem install redcarpet

  2. 更新 _config.yaml

    markdown: redcarpet
    

有关参考和更多信息,请参阅:

关闭 Github 问题

更新了 Jekyll 代码库

于 2015-09-29T01:32:32.267 回答
0

所以我也遇到了这个问题,在摸索了很多地方之后,终于在 Jekyll 的官方 redcarpet2 支持下实现了,这非常简单。把它写在你的 _config.yml

# Conversion
markdown: redcarpet
highlighter: pygments
redcarpet:
  extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "strikethrough", "superscript"]

确保您有 pygments css 文件并包含它。这一步很重要。

您可以阅读我的博文 http://blog.championswimmer.in/2015/10/jekyllsyntax-highlighting-in-github-favoured-markdown-codeblocks/了解详情。

于 2015-10-24T22:29:13.343 回答
0

您还可以使用三重波浪号语法:

~~~ruby
class Base
  def two
    1 + 1
  end
end
~~~

Kramdown (Jekyll) 支持。

于 2018-03-22T23:28:02.953 回答