【发布时间】:2013-12-17 07:56:41
【问题描述】:
我目前正在试验 Jekyll。大多数事情看起来都很好,但是 Jekyll 处理代码高亮的方式似乎有问题。
我使用 pygments。
然后 Jekyll 似乎使用了这样的片段:
{% highlight python %}
#!/usr/bin/env python
def wer(r, h):
"""
{% endhighlight %}
生成类似的代码
<div class="highlight">
<pre>
<code class="python"><span class="c">#!/usr/bin/env python</span>
<span class="k">def</span> <span class="nf">wer</span><span class="p">(</span><span class="n">r</span><span class="p">,</span> <span class="n">h</span><span class="p">):</span>
<span class="sd">"""</span>
<span class="sd"> Calculation of WER with Levenshtein distance.</span>
<span class="sd"> Works only for iterables up to 254 elements (uint8).</span>
<span class="sd"> O(nm) time ans space complexity.</span>
[...]
<span class="n">doctest</span><span class="o">.</span><span class="n">testmod</span><span class="p">()</span>
</code>
</pre>
</div>
看起来像
问题是code 和pre 之间的空格:
如何告诉 Jekyll 不要在这些标签之间放置空格?
寻找错误
- 我的 Jekyll 版本是
jekyll 1.3.1。 - 使用
gem environment,我发现我的宝石位于/var/lib/gems/1.9.1。 - 使用
grep -rn "highlight" --exclude-dir=site --exclude-dir=test *我发现高亮标签在/var/lib/gems/1.9.1/gems/jekyll-1.3.1/lib/jekyll/tags/highlight.rb中被解析 - 由于这可能是 Jekyll 错误,我添加了 issue 1801
现在是奇怪的部分:highlight.rb 似乎没有在<pre> 和<code> 之间添加任何空格。
【问题讨论】:
-
我看了你的source code。只是出于好奇,您为什么在降价文件中使用 HTML 标签?你为什么不使用 Markdown?
-
我目前正在尝试从 WordPress 迁移到 Jekyll。所以原因很简单,我之前有 HTML。我目前不确定是否要切换。使用 HTML 的一个优点是我知道语法。
-
Jekyll 确实支持 HTML 文件。如果您要在帖子中使用纯 HTML,我建议您将文件扩展名从
.markdown更改为.html。这样您的帖子就不会通过 Markdown 处理器发送。 -
感谢您提及这一点。由于降价可能是另一个错误来源,我已切换到
.html文件。问题依然存在。 -
我也尝试将文件扩展名更改为
.html,但这并没有解决任何问题。我还将您的帖子转换为降价,但仍然产生相同的错误。由于在这两种情况下<pre>和<code>标签之间都添加了空格,我认为这是处理器和{% highlight bash %}标签的问题。