如何在 Jekyll 中抑制空白行?

Posted

技术标签:

【中文标题】如何在 Jekyll 中抑制空白行?【英文标题】:How to suppress blank line in Jekyll? 【发布时间】:2013-07-19 05:23:19 【问题描述】:

我将 GitHub Pages 用于我的博客,但遇到了 Jekyll 的问题。我的 post.html 有这样的块:

%    for testpost in site.posts   %
%           four                  %
%          lines of               %
%         processing              %
%         goes here               %
%    endfor                       %

中间的部分无关紧要。重要的部分是% % 标记之外的行尾,因此会呈现到html 中。由于这是一个循环,它会将大约 1000 个空白行放入 HTML 页面的中间。它不影响显示,但它使 View/Source 很麻烦。

关于如何避免那些多余的空行有什么想法吗?

【问题讨论】:

【参考方案1】:

由于Liquid v4(包含在v3.5中的Jekyll中)有一个Whitespace control,最终解决了空行、空格等情况。

文档链接:https://shopify.github.io/liquid/basics/whitespace/

【讨论】:

【参考方案2】:

我在https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup 中发现了一个很好的解决方法,并且它与 github 页面兼容

只需将您的循环包含在捕获语句中,然后将 nil 分配给生成的 var。

% capture cache %
    % for p in site.posts %
       do stuff here
    % endfor %
% endcapture %% assign cache = nil %

【讨论】:

NB -- 这种方法仅适用于 liquid。如果这样做,则在捕获标记之间生成的任何 html 内容都会被完全忽略。 我不明白这是如何工作的。谁能解释一下?【参考方案3】:

怎么样

 page.content | escape | strip_newlines 

【讨论】:

如何使用 header.html 之类的包含来做到这一点? 想通了:% capture header %% include header.html %% endcapture % header | strip_newlines 【参考方案4】:

Jekyll plugin 去掉了空格。

Aucor 的 Jekyll 插件:例如插件。修剪不需要的 换行符/空格和按权重属性对页面进行排序。

您可以直接从它的Github repository 获取它。所以基本上你用% strip %% endstrip % 包装你的代码。即使这不适合您的需要,您也可以轻松更改 ruby​​ 脚本。

例如:

% strip %
    %    for testpost in site.posts   %
    %           four                  %
    %          lines of               %
    %         processing              %
    %         goes here               %
    %    endfor                       %
% endstrip %

但是,请记住 Jekyll 插件的本质,您不能在 Github Pages 服务器上运行它们。

引用Jekyll Doccumentation:

GitHub Pages 由 Jekyll 提供支持,但是出于安全原因,所有 Pages 站点都是使用 --safe 选项禁用自定义插件生成的。不幸的是,这意味着如果您要部署到 GitHub Pages,您的插件将无法工作。

您仍然可以使用 GitHub Pages 发布您的网站,但您需要在本地转换网站并将生成的静态文件推送到您的 GitHub 存储库,而不是 Jekyll 源文件。

【讨论】:

【参考方案5】:

其实这个问题有一个新的解决方案,不需要任何插件。

压缩 HTML 的 Jekyll 布局。一目了然:

删除不必要的空格; 删除可选的结束标签; 删除可选的开始标签; 移除 cmets; 在<pre> 中保留空格; GitHub 页面兼容; 忽略开发环境; 可配置的受影响元素; 配置文件模式; 自动测试。

http://jch.penibelst.de/

如果您 - 出于某种原因 - 不想使用它,这是一篇不错的文章,其中描述了一些解决方法: Compressing Liquid generated code - sylvain durand

【讨论】:

以上是关于如何在 Jekyll 中抑制空白行?的主要内容,如果未能解决你的问题,请参考以下文章

如何抑制 s-s-rS 2008 中的空子报表

如何在Excel中删除多余的空白行和列

如何在空白行之间插入动态公式?

excel数据表格中的空白行如何清除?

如何从表格中删除多余的空白行?

如何在Android Studio中删除代码格式化中不必要的空白行