gpt4 book ai didi

jekyll - 如何避免Jekyll在高亮中添加空格?

转载 作者:行者123 更新时间:2023-12-04 04:30:46 24 4
gpt4 key购买 nike

我目前正在尝试使用Jekyll。大多数情况看起来都不错,但是Jekyll处理代码突出显示的方式似乎有问题。

我用色素。

然后,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>

看起来像



问题是 codepre之间的空格:

如何告诉Jekyll不要在这些标签之间插入空格?
  • repository with my blog
  • a rendered example page(带有此source page)。

  • 找 bug
  • 我的Jekyll版本是jekyll 1.3.1
  • 使用gem environment,我发现自己的 gem 位于/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>之间添加任何空格。

    最佳答案

    此问题是由Liquid(Jekyll的模板引擎)引起的(请参阅Liquid的Issue 216和Jekyll的Issue 1806)。

    该问题的当前答案(2013年12月12日)是:您不能阻止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)

    关于jekyll - 如何避免Jekyll在高亮中添加空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314234/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com