Sphinx使用literalinclude指令引入代码块时如何去除多余缩进?
解决方法
直接使用Sphinx literalinclude 指令内置的 :dedent: 参数即可移除统一的多余前导缩进,两种常用方案如下:
- 方案1:基于指定行号提取,添加
:dedent:配置,参数值为每一行多余的前导空格数。你当前示例每一行多了4个空格的缩进,填写4即可,修改后的完整配置如下:
.. literalinclude:: ../../examples/example.py :language: python :lines: 13-42 :dedent: 4
注:原来的
:tab-width: 0配置无法处理缩进问题,可以直接删除。:dedent:仅移除所有行共有的前导统一空格,不会破坏代码内部的嵌套缩进结构。
- 方案2:如果提取的是完整Python函数/类的内部代码,可改用
:pyobject:参数直接指定目标对象名,不需要手动维护行号,Sphinx会自动提取对应代码并处理缩进,示例如下:
.. literalinclude:: ../../examples/example.py :language: python :pyobject: 目标函数/类的名称
修改配置后重新构建文档,代码块就会去掉多余缩进,显示为预期的格式。
内容的提问来源于stack exchange,提问作者Batman
相关产品推荐
相关产品推荐

