Python 如何在Sphinx autodoc中创建函数签名之间的水平线和空白

Python 如何在Sphinx autodoc中创建函数签名之间的水平线和空白,python,formatting,python-sphinx,read-the-docs,autodoc,Python,Formatting,Python Sphinx,Read The Docs,Autodoc,我已经找到了sphinx选项来完成我想做的大部分工作,但是我看不出在使用autodoc时如何在函数签名之间插入空格和水平线 以下是autodoc的产品: get_all_edges(network=None, base_url='http://localhost:1234/v1') docstring for get_all_edges get_all_nodes(network=None, base_url='http://localhost:1234/v1') docstrin

我已经找到了sphinx选项来完成我想做的大部分工作,但是我看不出在使用autodoc时如何在函数签名之间插入空格和水平线

以下是autodoc的产品:

get_all_edges(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_edges

get_all_nodes(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_nodes

get_edge_count(network=None, base_url='http://localhost:1234/v1')
   docstring for get_edge_count
以下是我想要得到的:

get_all_edges(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_edges

   ------------------------------------------------------------

get_all_nodes(network=None, base_url='http://localhost:1234/v1')
   docstring for get_all_nodes

   ------------------------------------------------------------

get_edge_count(network=None, base_url='http://localhost:1234/v1')
   docstring for get_edge_count
。。。或者类似的东西。我对最后一个函数签名是否有尾随分隔符并不感兴趣。也许这很简单,但我看不出来。谢谢

仅供参考,以下是生成我的函数签名的autodoc指令:

PyCy3.networks module
---------------------

.. automodule:: PyCy3.networks
    :members:
    :undoc-members:
    :show-inheritance:

事实证明,这并不难。。。在做了一天的研究之后。:)

主要见解是:

  • autodoc创建HTML,以便每个函数都有class=“function”
  • 类“函数”没有在任何地方定义。。。这是一个钩子 这个目的
  • 可以使用_模板的组合来定义“函数” 和_我的文档文件夹中的静态文件夹
  • #3的灵感来源于:

    (我使用的是readthedocs,所以我不能完全确定它是否适用于命令行sphinx。)

    在我的例子中,“docs”文件夹包含我所有的sphinx文件。我创建了新的子文件夹:“\u模板”和“\u静态/css”

    在_templates中,我创建了一个新文件“layout.html”:

    在_static/css中,我创建了一个新文件“functions.css”:

    因此,layout.html扩展了默认的layout.html并注入了我的新css

    我认为autodoc为此目的为函数签名的各个元素创建了其他钩子(例如,sig name、sig paren和sig param)。您可以在网页调试器中使用Chrome的页面源代码检查器自行发现此问题。

    (感谢bdemchak使用您自己的解决方案更新您的问题)


    我使用的是Sphinx 3.2,并且我能够添加自定义CSS来完成以下工作:

    Sphinx是一个文档系统,它尽可能好地将文本和格式分开(正如它应该的那样)。一般来说,按内容添加格式不是一个好主意。如果要更改格式,请调整模板和/或样式表。使用
    autofunction
    而不是
    automodule
    ,可以实现所需的功能。类似于这里的另一个优秀的如何做的事情,像这样的魅力,谢谢!在我的例子中,文件夹
    \u templates
    \u static
    已经存在,但是在
    docs
    文件夹中的
    source
    文件夹中。我将
    css
    子文件夹添加到
    \u static
    中,以及您向他们建议的文件,一切都很顺利。
    {% extends "!layout.html" %}
    {% set css_files = css_files + [ "_static/css/functions.css" ] %}
    
    .function {
        border-bottom: 3px solid #d0d0d0;
        padding-bottom: 10px;
        padding-top: 10px;
    }