【问题标题】:Syntax highlighting markdown code blocks in Jekyll (without using liquid tags)Jekyll 中高亮降价代码块的语法(不使用液体标签)
【发布时间】:2018-03-23 07:28:02
【问题描述】:

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

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

但是我已经从 wordpress 导入了我现有的博客,它是用 markdown 编写的(使用 markdown 代码块),我不想阅读每篇文章并修复代码块。另外,我希望我的帖子保持纯 Markdown 格式,以防我需要再次切换博客平台。

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

```bash
cd ~
```

但它似乎不起作用。它只是将它包装在一个普通的code 块中。有什么想法吗?

【问题讨论】:

标签: syntax-highlighting markdown jekyll redcarpet


【解决方案1】:

围栏块 were introduced 与 Redcarpet 2. Jekyll now supports 红地毯2。

顺便说一句,我正在使用 Redcarpet Rouge 直到 Kramdown support 可用。

另外有些人更喜欢 Nanoc 给杰基尔。

【讨论】:

  • 我最近一直在使用 Nanoc,非常喜欢它。
【解决方案2】:

替代解决方案

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

## A section

Here is some Ruby code.

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

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

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

【讨论】:

    【解决方案3】:

    我最终切换到kramdown 来解析带有coderay 的markdown 用于语法突出显示。这样做的好处是它是一个适用于 heroku 的纯 ruby​​ 解决方案。

    【讨论】:

    • 谢谢。似乎 kramdown 不识别 ```r,即使它确实识别带有波浪线的围栏块,~~~。
    • @mirthlab 似乎在数学和代码方面工作得很好,谢谢
    【解决方案4】:

    第 1 步。 安装 Redcarpet

    gem install redcarpet
    

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

    # Build settings
    #markdown: kramdown
    markdown: redcarpet
    

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        对于较早的 Jekyll 博客:

        1. 安装 redcarpet gem:

          gem install redcarpet

        2. 更新 _config.yaml

          markdown: redcarpet
          

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

        Closed Github Issue

        Updated Jekyll Codebase

        【讨论】:

          【解决方案7】:

          所以我也遇到了这个问题,在摸索了很多地方之后,终于在 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/了解详情。

          【讨论】:

          • 博文链接已损坏
          • 使用它,您将收到来自 Github 的错误电子邮件; “您当前正在使用 'redcarpet' Markdown 引擎,GitHub Pages 不再支持该引擎,并且可能随时停止工作。为确保您的网站继续构建,请删除您网站的 '_config.yml' 中的 'markdown' 设置文件并确认您的网站按预期呈现。有关详细信息,请参阅docs.github.com/github/working-with-github-pages/…。"
          【解决方案8】:

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

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

          Kramdown (Jekyll) 支持。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-05-04
            • 2014-02-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多