冒名重写文本内联文字

时间:2018-06-13 20:38:22

标签: python python-sphinx restructuredtext autodoc docutils

如何在restructuredText中使用冒号创建内联文字?

我试图记录一个返回字典的Python函数,例如:

def function(...):
    """
    ...
    Returns:
        A dictionary mapping ``{id: {role: value}}``
    """

但是当我用Sphinx编译时,它会抱怨:

WARNING: Inline literal start-string without end-string.

字面结束字符串肯定存在,并且它似乎没有违反other formatting rules,但是我无法用冒号正确地渲染文字(括号不是' t问题; one: two在内联文字中也存在问题)。逃避没有帮助:

""" ``one\: two`` """   --> WARNING
""" ``one\\: two`` """  --> WARNING
r""" ``one\: two`` """  --> WARNING

唯一可行的是:code:角色:

""" :code:`{one: {two: three}}` """  --> OK

这是狮身人面像的限制吗?或者是docutils的错误?或者有没有办法让冒号进入内联文字?

1 个答案:

答案 0 :(得分:2)

此行为不是由于Sphinx,restructuredText或autodoc的固有限制,而实际上是用于处理Google风格文档字符串的(当前版本)Napoleon扩展中的错误。拿破仑使用正则表达式对冒号上的内容进行分区,它贪婪地消耗字符直到它到达冒号。它与:code:角色一起使用的原因是拿破仑在分区之前检测到它们,但它没有检测到内联格式(请注意,其他内联格式化模式也会出现问题,例如*emphasis*或{ {1}})。绕过该错误的一种方法是在内联文字之前放置一个冒号:

**strong**