templates - 在 Sphinx 的目录中列出函数

标签 templates python-sphinx tableofcontents

如何列出函数、类等...以显示在 Sphinx 的目录中?

或者,更一般地说,如何将页面中的任意条目(不是字幕)添加到目录中?

顺便说一句:我没有记录 Python 代码,所以我不能使用 autodoc 工具。

编辑

我尝试了指令 .. contents:: name ,但这似乎是为了放置一个 ToC,而不是定义一个条目。

编辑:部分解决方案

我复制了basic/localtoc.html模板到我的_templates目录。
{{ pagename }}给出当前文件的路径和{% include filename %}让我包含一个文件,这样我就可以将它们组合起来,并且只要 conf.py 为每个文件生成我自己的目录正在运行。我会试试这个,但有更自动的解决方案吗?

最佳答案

我倾向于在 API 文档中将成员分为公共(public)和私有(private)部分,因此我希望它们出现在 TOC 层次结构中。我改编了@viblo 和@ramcdougal 的解决方案来实现这一点。
这是我的_static/apitoc.js :

// Inject API members into the TOC in the sidebar.
// This should be loaded in the localtoc.html template.

$(function (){
    $('div.section').each(function(index) {
        var $section = $(this),
            $tocitem = $('.sphinxlocaltoc li:has(> a.reference.internal[href="#' + 
                         $section.attr('id') +
                         '"])');
            $members = $('<ul>').appendTo($tocitem);
        $('> dl > dt', $section).each(function(index) {
            var $member = $(this),
                $tocMember = $('<li class="api-member">');
            $tocMember.text($('.property', $member).text() + ' ');
            $tocMember.append('<a href="#' + $member.attr('id') + '">' + 
                              $('.descname', $member).text() + 
                              '</a>');
            $members.append($tocMember);
        });
    });
});
这里是 _templates/localtoc.html :
<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
{%- if display_toc %}
  {{ toc }}
  <div class="custom-index container">
    <script type="text/javascript" src={{ pathto(master_doc)[:-10] + '_static/apitoc.js' }}></script>
  </div>
{%- endif %}
结果如下所示:

页面内容
mypackage.mymodule
  • 公共(public) API
  • 类(class) MyPublicClass
  • 类(class) AnotherPublicClass
  • my_public_function

  • 私有(private) API
  • 类(class) MyPrivateClass
  • my_private_function

  • 关于templates - 在 Sphinx 的目录中列出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342056/

    相关文章:

    c++ - 为什么我不能将两个不同的比较器传递给一个模板函数?

    c++ - 模板相关参数的类模板参数推导

    python - Sphinx 不改变版本号

    latex - 从 LaTeX 中的 TOC 中删除特定小节

    C++模板使用模板内类的指针的不完整类型

    C++ 无法从模板化方法中调用方法(使用模板)

    python-sphinx - 如何在Sphinx TOC中包含`genindex`?

    python-sphinx - 转义索引指令中的特殊字符

    javascript - 如何将 tocify 与 asciidoctor 一起用于动态目录?