编译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
相关产品推荐
相关产品推荐

