我使用Jekyll创建了我的网站,确切地说,使用Beatiful-Jekyll主题。对于语法突出显示,我使用了Rouge。当我不显示行号时,一切正常。当我显示行号时,有时行号不是从代码的第一行开始(在末尾相同,它们在末尾停止一些行)。有时它们与代码保持一致,有时却没有。
这里是一个一切正常的示例:
这是一个示例,其中行号与行代码对齐,但是缺少第一行和最后一行(在另一个示例中,缺少前三个和后三个)。
最后一个例子是,行号与行代码不对齐:
我相信问题出在linenos。要显示行号,我使用
{% highlight <language> linenos %}
<code>
{% endhighlight %}
因为我在_config.yml文件中尝试了以下配置:
kramdown:
input: GFM
syntax_highlighter: rouge
syntax_highlighter_opts:
css_class: 'highlight'
span:
line_numbers: false
block:
line_numbers: true
start_line: 1
并且在这种情况下,默认显示的行号显示正确,但是使用{%Highlight linenos%}显示的行号仍然不好。
default_line_numbering_without_linenos
提前感谢
我知道这是一篇过时的文章,但是我很难找到答案,所以我在这里发布了我的发现。
TL; DR将minify_html设置为false并使用下面的液体缩小html页面。在Jekyll 4.0.0版中有效]
编辑1。
进一步调查显示,代码括号内的尾部空格也会引起类似的行为。
text
text
最后一个空行在最小化html的同时中断了pre标签。当捕获输出html并将换行符转换为br并使用br标签分割整个html字符串时,会发生这种情况,因此尾随的空行会丢失。 (可能会使用空格而不是空行,但是我没有尝试)
结束编辑1。
我遇到了同样的问题。我的本地“ jekyll服务”服务器很好,但是Gitlab页面显示了它,就像问题中的示例一样。这使我意识到,在本地运行站点时,我通常将“ minify_html”设置为false,结果当我将minify_html设置为true时,本地版本也损坏了。我完全删除了jekyll默认的minify_html,并使用了下面的代码。
{%- capture to-compress -%}
{{ content }}
{%- endcapture -%}
{%- assign inside-code-block = false -%}
{%- capture to-remove-br -%}
{%- assign lines = to-compress | newline_to_br | split: '<br />' -%}
{%- for line in lines -%}
{%- if line contains "<code>" -%}
{%- assign inside-code-block = true -%}
{%- elsif line contains "</code>" -%}
{%- assign inside-code-block = false -%}
{%- endif -%}
{%- if inside-code-block == true -%}
{{ line }}
{%- else -%}
{{ line | lstrip }}
{%- endif -%}
{%- endfor -%}
{%- endcapture -%}
{{ to-remove-br }}
layout: <name of the layout you made>
该代码是我个人尝试缩小html的实验,它似乎可以正常工作。代码会忽略<code>
标记内的所有内容,因此markdown语法应该可以正常工作。
[当我尝试使https://jch.penibelst.de/布局正常工作时(我无法做到)。)
液体语法帮助:-https://shopify.github.io/liquid/basics/whitespace/-https://github.com/Shopify/liquid/wiki/Liquid-for-Designers