从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个空格的统一缩进即可)。 - 块级字符串里可以直接写
<,不需要转义成<,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
相关产品推荐
相关产品推荐

