Jekyll语法高亮降价代码块(不使用液体标签)

Jekyll中的语法突出显示仅限于使用液体标签和类似下面的代码:

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

但是我已经从wordpress导入了我现有的博客,并且使用降价代码块进行了降价(markdown),我不想通过每个post来修复代码块。 另外,我想保留我的post在纯markdown格式的情况下,我需要再次转换博客平台。

我把我的Jekyllparsing器切换redcarpet ,希望我可以使用这个markdown语法:

 ```bash cd ~ ``` 

但似乎没有工作。 它只是包装在一个正常的code块。 有任何想法吗?

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

除此之外,我正在使用Redgepet和Rouge,直到Kramdown支持可用。

另外有些人更喜欢Nanoc去Jekyll。

替代解决scheme

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

 ## A section Here is some Ruby code. <pre> <code class="ruby"> puts "hello" </code> </pre> 

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

这不是一个理想的解决scheme,但它应该适用于任何Markdownparsing器。

我结束了切换到kramdownparsingmarkdown与语法高亮coderay 。 这有一个纯粹的ruby解决scheme,在heroku上工作的好处。

第1步。安装Redcarpet 。

 gem install redcarpet 

第2步。像这样更新_config.yaml的构build设置。

 # Build settings #markdown: kramdown markdown: redcarpet 

在最新的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 

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

对于较老的Jekyll博客:

  1. 安装地毯gem:

    gem install redcarpet

  2. 更新_config.yaml

     markdown: redcarpet 

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

封闭的Github问题

更新了Jekyll Codebase

我已经介绍了两种替代解决scheme,将正确格式化的代码片段添加到您的Jekyll驱动的站点。 http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html 。 他们不依赖第三方插件,并与免费的GitHub Pages托pipe兼容。

所以我也遇到了这个问题,并且在用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/

Interesting Posts