我的文档字符串引用了我定义的其他python类。每次Sphinx遇到这些类之一时,我希望它为该其他类插入指向文档的链接。在狮身人面像中有可能吗?
具体来说,我有一个文档字符串,如:
'''This class contains a bunch of Foo objects'''
我可以写:
'''This class contains a bunch of :class:`~foo.Foo` objects'''
但是我更希望Sphinx查找所有匹配Foo
的文本,并使其看起来好像我已经键入了:class:~foo.Foo
.. |PostItem| replace:: :class:`PostItem <hklib.PostItem>`
.. |PostNotFoundError| replace:: :class:`PostNotFoundError <hklib.PostNotFoundError>`
在rst
文件中,包括此头文件。然后,我可以在任何rst
文件中使用宏:
.. include:: defs.hrst
|PostItem| is a nice class. |PostNotFoundError|, on the other hand is not.
((您也可以使用autogen
扩展名包含来自Python源文件的文档字符串。这些宏也将被替换。)
关于您的示例:我将Foo
添加到头文件并以这种方式写入文档字符串:
'''This class contains a bunch of |Foo| objects'''
我想进入Foo并让Sphinx解释它,就像我写了:class:~foo.Foo
听起来不切实际。似乎它会使RST尝试解析您的文本瘫痪。寻找解释文本和RST支持的一些引用规则(*_|`
)与实际的限制有关。您的要求可能导致RST花一整天时间在每个可能的上下文中检查每个实例
Foo
,并指出您是否想要链接。仅在Foo
的其他情况下,您需要这样做;琐碎的搜索和替换将不起作用。您可以将文档字符串预处理弄乱。
https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#docstring-preprocessing
这可以让您尝试对文档字符串文本进行全局搜索和替换策略。