Sphinx 扩展:带有前导 and/or 尾随空行的文字块?
Sphinx extension: literal block with leading and/or trailing blank lines?
据我所知,不可能创建以空行开头或结尾的文字文本块(例如使用 code-block
指令),因为这对于reStructuredText 语法。
没关系。
但现在我想创建一个使用 docutils
的 literal_block()
节点的自定义指令,并且我想(在我的指令代码中)在开头添加空行 and/or 指令内容结束。
由于这在 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 处理过程中丢失了。
我对 Sphinx 机器的了解不够,无法自行追踪,如有任何帮助,我们将不胜感激!
我宁愿尝试 CSS margin-top 和 margin-bottom 属性。
我找到了自己问题的答案,但比我希望的要复杂得多...
我创建了一个自定义节点 class 并添加了一个 literal_block
实例作为子节点。
我将空行数保存为自定义节点 class 的属性。
然后我为 HTML 和 LaTeX 创建了 "visit" 和 "depart" 函数(实际上只有后者),它们从节点属性中获取数字并在 [=11= 上进行一些不优雅的字符串替换] 摸索着换行。
这对 HTML 和 LaTeX 都很好,但我很高兴听到更优雅的解决方案!
据我所知,不可能创建以空行开头或结尾的文字文本块(例如使用 code-block
指令),因为这对于reStructuredText 语法。
没关系。
但现在我想创建一个使用 docutils
的 literal_block()
节点的自定义指令,并且我想(在我的指令代码中)在开头添加空行 and/or 指令内容结束。
由于这在 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 处理过程中丢失了。
我对 Sphinx 机器的了解不够,无法自行追踪,如有任何帮助,我们将不胜感激!
我宁愿尝试 CSS margin-top 和 margin-bottom 属性。
我找到了自己问题的答案,但比我希望的要复杂得多...
我创建了一个自定义节点 class 并添加了一个 literal_block
实例作为子节点。
我将空行数保存为自定义节点 class 的属性。
然后我为 HTML 和 LaTeX 创建了 "visit" 和 "depart" 函数(实际上只有后者),它们从节点属性中获取数字并在 [=11= 上进行一些不优雅的字符串替换] 摸索着换行。
这对 HTML 和 LaTeX 都很好,但我很高兴听到更优雅的解决方案!