Jekyll 博客高亮代码生成无效的 html

Posted

技术标签:

【中文标题】Jekyll 博客高亮代码生成无效的 html【英文标题】:Jekyll blog highligth code produce invalid html 【发布时间】:2015-07-16 10:31:09 【问题描述】:

使用 Jekyll,我有这个文件:

#_posts/2015-06-20-post.textile
blablabla:

% highlight bash  %
$ ruby example_blocks_1.rb
[0, 2, 4, 6]
hello world
hello world
hello world
hello world
hello world
hello world
% endhighlight  % 

bla bla bla

这是生成的html

<p>blablabla:</p>
<p><div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">$ </span>ruby example_blocks_1.rb
<span class="o">[</span>0, 2, 4, 6]
hello world
hello world
hello world
hello world
hello world
hello world</code></pre></div></p>
<p>blablabla</p>

如果您将 html 放入这样的验证器中:https://validator.w3.org/nu/ 你可以看到:

Error: No p element in scope but a p end tag seen.

好像html不正确,可以参考这里:http://www.w3.org/TR/html401/struct/text.html#h-9.3.1 事实上 p 标签不能包含块级标签

Jekyll 为我生成 html,但我无法修复该行为。这似乎是一个错误。

这是我的_config.yml

markdown: kramdown
highlighter: rouge

你能帮帮我吗?

【问题讨论】:

由于方括号在 Markdown 中具有特殊含义,因此转义它应该会有所帮助:\[0, 2, 4, 6\] 对不起,但对我不起作用 @user1066183 我相信您可以通过为 [0,2,4,6] 和最后一个 hello world 之间的所有内容添加一个制表符或 4 个空格来解决这个问题?这告诉markdown它是一个代码块。这台机器上没有 jekyll,所以试一试 @matrixanomaly 谢谢我已经解决了解析代码中的所有空白。看我的回答。谢谢。 【参考方案1】:

已解决。问题是

之后的空白

例子:

% endhighlight  % 

在最后一个 % 之前有 2 个空格,在最后一个 之后还有其他空格(我们看不到它们,但它们存在)

【讨论】:

以上是关于Jekyll 博客高亮代码生成无效的 html的主要内容,如果未能解决你的问题,请参考以下文章

Jekyll 偏移代码片段高亮的初始行

[Html]Jekyll 代码高亮的几种选择

[Html]Jekyll 代码高亮的几种选择

[Html]Jekyll 代码高亮的几种选择

Jekyll - 在高亮代码块中设置部分代码样式

在 Jekyll 中使用 Pygments 代码高亮显示文件名