在Jekyll中语法高亮标记代码块(不使用液体标记)



似乎Jekyll中的语法高亮显示仅限于使用液体标记和pypyts,如:

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

但是我已经从wordpress导入了我现有的博客,它是在markdown(使用markdown代码块)中编写的,我不想要通过每篇文章和修复代码块。此外,我想保持我的文章在纯降价格式,以防我需要再次切换博客平台。

我把我的Jekyll解析器切换到redcarpet,希望我可以使用这个降价语法:

```bash
cd ~
```

但它似乎不起作用。它只是把它包装在一个普通的code块中。什么好主意吗?

围栏介绍了红地毯2。化身现在支持Redcarpet 2 .

作为题外话,我使用红地毯与胭脂直到Kramdown支持可用。

此外,有些人更喜欢Nanoc哲基尔。

备选方案

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

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

然后你可以使用Highlight.js(文档在这里)来基于这个类添加高亮。

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

我最终切换到kramdown来解析markdown,这是coderay附带的语法高亮显示。这是一个纯ruby解决方案,可以在heroku上工作。

步骤1。安装红地毯。

gem install redcarpet

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

# 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. Install redcarpet gem:

    gem install redcarpet

  2. 更新_config.yaml
  3. markdown: redcarpet
    

参考和进一步的信息见:

关闭Github Issue

更新的Jekyll代码库

所以我也遇到了这个问题,在我的头撞了很多地方后,终于意识到在Jekyll的官方redcarpet2支持下,这很简单。将此写入_config.yml

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

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

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

您也可以使用三斜线语法:

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

相关内容

  • 没有找到相关文章

最新更新