簡體   English   中英

在Jekyll中突出顯示markdown代碼塊的語法(不使用液體標簽)

[英]Syntax highlighting markdown code blocks in Jekyll (without using liquid tags)

似乎Jekyll中的語法突出顯示僅限於使用液體標簽和pygments,如下所示:

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

但是我從wordpress導入了我現有的博客,它是用markdown編寫的(使用markdown代碼塊),我不想通過每個帖子來修復代碼塊。 此外,我想以純縮寫格式保留我的帖子,以防我再次需要切換博客平台。

我將我的Jekyll解析器切換到redcarpet ,希望我可以使用這個markdown語法:

```bash
cd ~
```

但它似乎沒有用。 它只是將它包裝在一個普通的code塊中。 有任何想法嗎?

Redcarpet 2 引入了圍欄塊.Jekyll 現在支持 Redcarpet 2。

順便說一句,我使用Redcarpet with Rouge直到Kramdown支持可用。

此外,有些人更喜歡Nanoc和Jekyll。

替代解決方案

Markdown允許HTML,所以如果你不介意添加一些JS,你可以這樣做:

## A section

Here is some Ruby code.

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

然后你可以使用Highlight.js這里的文檔)來添加基於該類的突出顯示。

它不是一個理想的解決方案,但它適用於任何Markdown解析器。

我最終切換到kramdown來解析markdown,它帶有用於語法高亮的coderay 這樣做的好處是可以在heroku上運行的純紅寶石解決方案。

步驟1.安裝Redcarpet

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. 安裝redcarpet gem:

    gem install redcarpet

  2. 更新_config.yaml

     markdown: redcarpet 

有關參考和更多信息,請參閱:

關閉Github問題

更新了Jekyll Codebase

我已經描述了兩種替代解決方案,可以將正確格式化的代碼片段添加到您的Jekyll驅動站點。 http://demisx.github.io/jekyll/2014/01/13/improve-code-highlighting-in-jekyll.html 他們不依賴於第三方插件並兼容免費的GitHub頁面托管。

所以我也遇到了這個問題,在敲了很多地方之后,我終於意識到在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/了解詳情。

您還可以使用triple-tilde語法:

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

這是由Kramdown(傑基爾)支持的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM