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

如何阻止Kramdown移除Jekyll站点代码块中的缩进?

Kramdown代码块缩进丢失问题解决方案

问题核心原因是Kramdown默认会解析块级HTML标签内部的Markdown语法,手写<pre><code>包裹代码时,代码前的缩进会被识别为Markdown嵌套层级标记,最终被清理,不需要更换渲染器,按以下优先级选择方案即可:

  • 方案1:使用原生围栏代码块(零配置,最推荐)
    不要手写HTML的pre/code标签,直接用Markdown三反引号围栏编写代码块,指定对应语言,Kramdown会完整保留所有原始缩进,完全兼容GitHub Pages默认构建环境,不需要修改任何配置:

    from sort.AbstractSort import AbstractSort
    
    class BubbleSort(AbstractSort):  
        @staticmethod  
        def swap(arr, i, j):  
            arr[i], arr[j] = arr[j], arr[i]  
      
        def _sort(self, arr):  
            for i in range(len(arr) - 1):  
                for j in range(len(arr) - 1):  
                    if arr[j] > arr[j + 1]:  
                        BubbleSort.swap(arr, j, j + 1)  
            return arr
    

    该写法兼容所有主流Markdown渲染器,也不会和当前使用的prettyprint高亮插件冲突。

  • 方案2:给手写HTML代码块添加Kramdown控制属性
    如果需要兼容历史内容、必须保留手写pre标签的写法,只需要给pre标签添加parse="false"属性,显式告诉Kramdown不要解析该标签内部的任何内容,缩进就会原样输出:

    <pre class="lang-py prettyprint-override" parse="false"><code>from sort.AbstractSort import AbstractSort
    
    class BubbleSort(AbstractSort):  
        @staticmethod  
        def swap(arr, i, j):  
            arr[i], arr[j] = arr[j], arr[i]  
      
        def _sort(self, arr):  
            for i in range(len(arr) - 1):  
                for j in range(len(arr) - 1):  
                    if arr[j] > arr[j + 1]:  
                        BubbleSort.swap(arr, j, j + 1)  
            return arr
    </code></pre>
    
  • 方案3:全局修改Kramdown配置
    如果不想逐个调整存量代码块,可以修改站点根目录_config.yml中的Kramdown配置项,全局关闭块级HTML内容解析,之前切换GFM模式未生效就是缺少这个核心配置:

    kramdown:
      input: GFM
      parse_block_html: false
      syntax_highlighter: rouge
      hard_wrap: false
    

    配置修改后需要重启本地Jekyll服务、或者等GitHub Pages重新构建全站才能生效。

不建议更换其他Markdown渲染器,GitHub Pages对第三方渲染器的支持有限,更换后大概率出现现有Markdown语法、主题组件不兼容的问题,上述三个方案完全可以解决缩进丢失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:30:59