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

编译Linux文档遇Unexpected indentation错误,求修复方法

修复Linux文档编译时的RST缩进错误

当使用sudo make htmldocs编译Linux文档时,出现以下缩进错误:

/linux_work/linux_stable/Documentation/admin-guide/device-mapper/writecache.rst:23: ERROR: Unexpected indentation.
/linux_work/linux_stable/Documentation/ABI/testing/sysfs-bus-nvdimm:11: ERROR: Unexpected indentation.
/linux_work/linux_stable/Documentation/ABI/testing/sysfs-bus-iio-sx9324:2: ERROR: Unexpected indentation.

以下是具体的排查和修复方法:

  • 显式查看空白字符:RST缩进错误常源于空格与Tab混用,肉眼难以分辨。用cat -A命令可将Tab显示为^I,空格保持原样。以writecache.rst第23行为例,查看附近内容:

    cat -A /linux_work/linux_stable/Documentation/admin-guide/device-mapper/writecache.rst | sed -n '20,25p'
    

    若发现Tab字符,直接替换为空格(RST标准用4个空格缩进)。

  • 批量替换Tab为空格:用sed命令将文件中所有Tab替换为4个空格,对三个出错文件分别执行:

    sed -i 's/\t/    /g' /linux_work/linux_stable/Documentation/admin-guide/device-mapper/writecache.rst
    sed -i 's/\t/    /g' /linux_work/linux_stable/Documentation/ABI/testing/sysfs-bus-nvdimm
    sed -i 's/\t/    /g' /linux_work/linux_stable/Documentation/ABI/testing/sysfs-bus-iio-sx9324
    
  • 校验缩进层级一致性:同层级的RST元素(比如列表项、子段落)需要保持相同的缩进长度。用以下脚本查看目标行及上下行的前导空白数:

    # 以writecache.rst第23行为例
    for line in 22 23 24; do
      echo -n "Line $line: "
      sed -n "${line}p" /linux_work/linux_stable/Documentation/admin-guide/device-mapper/writecache.rst | awk '{print length($0) - length(ltrim($0))}'
    done
    

    若某行的前导空白数和上下文不一致,手动调整到相同长度。

  • 检查特殊RST结构的缩进:如果出错行属于字段列表、代码块或嵌套结构,需确保符合RST语法要求:

    • 字段列表中,冒号后的内容要与同字段的其他内容对齐;
    • 代码块要么用4个空格缩进,要么用.. code-block::标记并保持正确的嵌套缩进。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:22:07