如何在reStructuredText中的代码块中强制使用空格

Nam*_*yen 8 python whitespace restructuredtext

在RST中,我们在块前面使用一些空格来说这是一个代码块.因为Python也使用空格来缩进代码块,所以如果我编写Python代码,我希望我的RST代码块保留这些空格.我怎样才能做到这一点?

假设我们有一个班级:

class Test(object):
Run Code Online (Sandbox Code Playgroud)

我们想要编写一个名为__init__this的成员的方法.这个方法属于另一个代码块,但我们希望有一些视觉线索,以便读者知道第二个块是前一个块的延续.目前,我#用来标记代码块的垂直引导线,如下所示:

    def __init__(self):
        pass
#
Run Code Online (Sandbox Code Playgroud)

没有#,def __init__(self)将被打印在相同的缩进级别class Test(object).必须有更优雅的方式.

Owe*_*wen 0

啊...我以前遇到过这个;)。# 技巧是我通常使用的,唉。如果您阅读规范,听起来它总是会取消前导缩进。[1]

您还可以使用替代语法:

::

>     def foo(x):
>         pass
Run Code Online (Sandbox Code Playgroud)

使用前导“>”将保留前导空间。

[1]:http://docutils.sourceforge.net/docs/ref/rst/restructedtext.html#indented-literal-blocks

编辑

只是仔细研究了 docutils 代码(这也让我很烦恼),并且可以确认它总是会删除常见的缩进,没有任何问题。通过修改来改变这种行为很容易,但这会使生成的重组文本变得非标准。

  • 文本中也保留了前导“>”。它不仅每行需要一个额外的字符,而且还可能让读者感到困惑。 (2认同)