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