如何在 reStructuredText 中创建嵌套列表?

Posted

技术标签:

【中文标题】如何在 reStructuredText 中创建嵌套列表?【英文标题】:How to create a nested list in reStructuredText? 【发布时间】:2011-07-29 20:04:22 【问题描述】:

我正在尝试使用以下代码(遵循 Sphinx 和 docutils 文档)创建一个正确嵌套的列表:

1. X

  a. U
  b. V
  c. W

2. Y
3. Z

我希望这会产生两个 OLs,但我得到以下输出:

<ol class="arabic simple"> 
  <li>X</li> 
</ol> 

<blockquote> 
  <div>
    <ol class="loweralpha simple"> 
      <li>U</li> 
      <li>V</li> 
      <li>W</li> 
    </ol> 
  </div>
</blockquote> 

<ol class="arabic simple" start="2"> 
  <li>Y</li> 
  <li>Z</li> 
</ol> 

我做错了什么?是不是不能得到下面的结果?

<ol class="arabic simple"> 
  <li>X
    <ol class="loweralpha simple"> 
      <li>U</li> 
      <li>V</li> 
      <li>W</li> 
    </ol> 
  </li>
  <li>Y</li> 
  <li>Z</li> 
</ol> 

【问题讨论】:

【参考方案1】:

确保嵌套列表与父列表文本的缩进级别相同(或三个字符,以较大者为准),如下所示:

1. X

   a. U
   b. V
   c. W

2. Y
3. Z

然后你会得到你期望的输出。

【讨论】:

看来这并不完全正确。在我的情况下,我使用* 作为列表指示符,当我缩进下一行时,两个字符需要与父列表的文本对齐,我的列表被视为块引用内的单独列表。我发现的经验法则是内部列表必须缩进至少三个字符 @Akrikos 谢谢!我更新了答案以包含该警告。 在使用 * 列表时,用 3 个空格缩进内部列表对我不起作用。我认为第一次答案是正确的。【参考方案2】:

如果您希望 Sphinx 为您处理编号,请执行此操作。

#. X
#. Y

   #. u 
   #. v 

#. Z

【讨论】:

只是重新突出显示这个细节,因为它仍然适用:u 和 v 必须缩进至少 3 个空格(不是 2 个空格),以匹配父级别的文本。否则,您将得到“1.Z”而不是“3.Z”。 @S.Kirby 如果使用像iii. 这样的列表项,它使用更多的地方,似乎还必须缩进更多。似乎文本必须对齐,并且似乎没有特定的空格数可以用于所有情况。 请注意,额外的空行在这里也很重要。因此,嵌套子列表的每个元素需要 3 个空格,并且在空行的上方和下方。

以上是关于如何在 reStructuredText 中创建嵌套列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何右对齐 reStructuredText 简单表中的列内容?

将markdown转换为reStructuredtext?

格式化 reStructuredText 中链接中的文本

在 reStructuredText 中跳过标题级别

reStructuredText语法

使用 LaTeX 在 reStructuredText 中进行数学运算