通过Liquid模板的字符串错误导致Pygments语法高亮失败

17 投票
3 回答
2968 浏览
提问于 2025-04-17 04:31

我正在使用Jekyll把我的markdown文件转换成网页,同时用Pygments来给代码加上高亮显示。

这里是maruku显示的错误信息:

Liquid error: undefined method `join' for "\n song_info = []\n for song in songs:\n song_info.append(song.name) \n":String

我的标记语言内容如下:

{% highlight python %}
    song_info = []
    for song in songs:
        song_info.append(song.name)                                                                                                                                   
{% endhighlight %}

在iPython中测试Pygments没有出现任何错误。

有什么想法吗?;o(

提前谢谢你们!

3 个回答

1

只需要把 liquid-2.3.0 的文件换成从 Github上下载的最新版本

这个方法适用于 jekyll-0.11.2 + liquid-2.3.0 + Pygments

2

顺便提一下,GitHub推荐使用RedCarpet

要使用它,首先需要配置Jekyll,方法是./_config.yml文件中添加markdown: redcarpet。接着,在你的开发机器上使用[sudo] gem install redcarpet来安装RedCarpet,这样你就可以编译你的Jekyll网站了。

21

我也遇到了同样的问题,所以我把 liquid 这个库的版本降回到了 2.2.2 作为解决办法。看起来是 2.3.0 版本在处理 pygments 这个功能时有个 bug,或者是 Jekyll 在使用它时出了问题。

sudo gem uninstall liquid
sudo gem install liquid --version '2.2.2'

撰写回答