You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Jekyll的_data目录读取YAML文件时保留前导空格问题

解决Jekyll代码块丢失前导空格的问题

问题根源

你用双引号包裹YAML中的代码字符串时,YAML解析器会自动压缩换行后的前导空格,导致渲染时只有首行空格保留,后续行的缩进直接丢失。

修复方案

1. 用YAML块级字符串保留完整格式

把YAML文件中code字段的双引号写法改成块级字符串(用|符号),它能完整保留换行、缩进和所有空白字符:

Sample Title:
  type: Script
  description: "Description of script"
  code: |
    for(double i = Start; i < End; i += 1){

        display();

    }
  • 注意code: |后面必须换行,代码内容的每一行都要比code:多一层缩进(保持2或4个空格的统一缩进即可)。
  • 块级字符串里可以直接写<,不需要转义成&lt;,YAML会正确解析这些特殊字符。

2. 布局中正确输出代码

在card.html布局里,保持<pre><code>包裹代码,同时加上escape过滤器确保HTML特殊字符被转义(避免代码中的<、>等破坏页面结构):

<div class="column">
  <div class="content">
    {{ page.card.description | markdownify }}
    <h2>Script</h2>
    <pre><code>{{ page.card.code | escape }}</code></pre>
  </div>
</div>

3. 验证kramdown配置(可选)

检查_config.yml中的kramdown配置,确保没有开启会移除缩进的选项,默认配置一般无需修改:

kramdown:
  input: GFM
  syntax_highlighter: rouge

这样修改后,代码块的每一行前导空格都会被完整保留,渲染效果和你在YAML中编写的格式完全一致。

内容的提问来源于stack exchange,提问作者Enkrypton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:25:59