在Jekyll中实现Code Prettify时遇到问题 - 想要使用``而不是<pre></pre>

时间:2016-02-28 00:57:13

标签: html css jekyll google-code-prettify

我一直在尝试在我的Jekyll Code Prettify中实施 blog 。我遵循了一些指南并且能够实现它,但它并不理想。这就是我所做的:

1 - 我前往_includes并在head.html中添加了必要的文件:

森伯斯特主题:

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?autoload=true&amp;skin=sunburst&amp;lang=css" defer="defer"></script>

主题的CSS文件(它位于GitHub上的css文件夹中):

<link rel="stylesheet" href="/css/prettify.css" rel= 'stylesheet' type='text/css'>

2 - 例如,我使用了标记<pre class= "prettyprint"></pre>来测试它。正如您在此post中看到的那样(代码块位于页面底部),它确实有效。如果您注意到,您会看到<iostream>丢失,因为我使用了<pre></pre>,因此它会看到<>个字符,将其视为HTML并且不会显示<iostream> 。这是它的外观:

enter image description here

我可以使用HTML实体来修复它,但这并不理想。我已经搜索了2个小时,但无法找到可靠的来源来解决这个问题。

所以我的问题是:

是否可以使用``而不是<pre></pre>使标记下的 Code Prettify 工作?如果没有,是否有另一种方法在Jekyll中实现它?还是让它更容易使用?如果这些都不可能,是否有更好的替代Jekyll支持Code Prettify

如果您需要查看其他文件,请检查我的repository

2 个答案:

答案 0 :(得分:2)

使用Jekyll,您可以使用两种highligting方法:

反引号样式的fenced-code

_config.yml中,设置:

kramdown:
  input: GFM

突出显示您的代码:

``` c
include <iostream>
using namespace std;

int main () {
cout << "and then there were none" << endl;
return 0;
}
```

带高光液体标签

{% highlight c %}
include <iostream>
using namespace std;

int main () {
cout << "and then there were none" << endl;
return 0;
}
{% endhighlight %}

定型

样式来自_scss/_syntax-highlighting.scss

答案 1 :(得分:-1)

我目前用于代码突出显示的插件是&#34; jekyll-rouge&#34;,它支持&#39;&#39;&#39;&#39;风格降价很好:

https://sacha.me/articles/jekyll-rouge/