我目前正在试验杰基尔。大多数事情看起来很好,但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 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
现在出现了一个奇怪的部分:highlight.rb
似乎没有在<pre>
和<code>
之间添加任何空格。
答案 0 :(得分:4)
这个问题是由液体,杰基尔的模板引擎(见液体的Issue 216和杰基尔的Issue 1806)引起的。
目前(12.12.2013)对这个问题的回答是:你不能让Jekyll不添加这些空格。
但是对基础问题的修复是在编译完所有页面后删除空格。我编写了以下Python脚本来执行此操作:
#!/usr/bin/env python
import re, fnmatch, os
def removeWhitespace(file_path):
#read file content
with open(file_path) as f:
content = f.read()
#replace whitespace
openingTag = re.compile('<pre>\s*<code', re.DOTALL)
closingTag = re.compile('</code>\s*</pre>', re.DOTALL)
if re.findall(openingTag, content):
content = re.sub(openingTag, '<pre><code', content)
content = re.sub(closingTag, '</code></pre>', content)
#write without whitespace
with open(file_path,'w') as f:
f.write(content)
# Get all HTML files
files = []
for root, dirnames, filenames in os.walk('.'):
for filename in fnmatch.filter(filenames, '*.html'):
files.append(os.path.join(root, filename))
for filename in files:
removeWhitespace(filename)
答案 1 :(得分:0)
这是样式表相关的。
我能够使用默认设置在我的测试环境中构建您的示例页面而没有任何问题*。
尝试将以下内容添加到style.css
/* standard */
.post pre {
border: 1px solid #ddd;
background-color: #eef;
padding: 0 .4em;
}
*我遇到的唯一问题是它抱怨了以下一行
<a href="http://jekyllrb.com/">Jekyll</a> is a static blog generator.
我通过将该行包装在段落标记中解决了这个问题。