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

使用Sphinx时reStructuredText嵌套列表含代码块失效问题

没问题,reStructuredText完全支持嵌套列表嵌入代码块的场景,你遇到的问题主要是缩进层级和块分隔没处理对。我给你修正后的.rst代码,再拆解一下关键要点:

修正后的.rst代码

===========
Tester Page
===========

以下是一些测试段落。

1. 这是一个描述高级步骤的段落,包含3个子步骤。

   a. 这是一个子项,附带示例:

      ::

         ls -l foo.txt

   b. 现在这个子项不会被当成代码块的一部分了!这是另一个子项,附带示例:

      ::

         git add bar.txt

2. 这是步骤2。

文档结束。

如果你想给代码块指定语法高亮(比如bash),也可以用更明确的code-block指令,效果更可控:

===========
Tester Page
===========

以下是一些测试段落。

1. 这是一个描述高级步骤的段落,包含3个子步骤。

   a. 这是一个子项,附带示例:

      .. code-block:: bash

         ls -l foo.txt

   b. 现在这个子项不会被当成代码块的一部分了!这是另一个子项,附带示例:

      .. code-block:: bash

         git add bar.txt

2. 这是步骤2。

文档结束。

关键注意事项

  1. 严格的缩进层级:

    • 父编号列表(1.、2.)的子内容(包括子列表)必须缩进至少4个空格(或者和列表标记后的第一个字符对齐,比如1. 后面的文字开始位置,子项要对齐到这里)。
    • 子字母列表(a.、b.)要相对于父列表项再缩进一级,确保reStructuredText能识别这是嵌套子项,而不是新的段落。
    • 代码块的::或者code-block指令,以及代码内容,必须相对于所属的子列表项再缩进一级,这样才会被解析为该子项的附属内容。
  2. 空行分隔块:
    列表项的描述文本、子列表、代码块之间最好空一行,避免reStructuredText把不同的内容块错误合并(比如你之前遇到的子项文字被当成代码块的一部分,大概率是因为子项和前面的代码块之间没有正确分隔)。

这样调整后,生成的HTML就能正确显示嵌套的编号列表+字母子列表,每个子项的代码块也会独立展示啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:28:42