据我所知,不可能创建以code-block
空行开头或结尾的文字文本块(例如,使用指令),因为这对于 reStructuredText 语法来说是模棱两可的。
没关系。
但是现在我想创建一个使用docutils
'literal_block()
节点的自定义指令,并且我希望(在我的指令的代码中)在指令内容的开头和/或结尾添加空行。
由于这在 reStructuredText 语法中是不可能的,我打算使用指令的选项来指定空行的数量,但这不是我的问题,也不是我的问题的一部分。以防万一你想知道...
这是我想要做的一个最小的例子:
import docutils
class MyDirective(docutils.parsers.rst.Directive):
has_content = True
def run(self):
text = '\n\n' + '\n'.join(self.content.data) + '\n\n'
node = docutils.nodes.literal_block(text, text)
print(node)
return [node]
def setup(app):
app.add_directive('mydirective', MyDirective)
它可以这样使用:
.. mydirective::
Hello, world!
这行得通,但是我在指令中添加的换行符不知何故被 Sphinx 吞噬了(在 HTML 和 LaTeX 输出中)。
我怎样才能避免这种情况?
换行符实际上存储在node
对象中(从 的输出中可以看出print()
),但它们似乎在稍后的 Sphinx 处理过程中丢失了。
我对狮身人面像机器的了解不够,无法自行追踪,任何帮助将不胜感激!