2013-04-20 86 views
19

比方说,我有与下列来源斯芬克斯项目:如何在Sphinx TOC中包含主页?

index.rst 
installation.rst 
templating/ 
    index.rst 
    module.rst 
    fieldtype.rst 

index.rst(主页)具有以下TOC树:

.. toctree:: 
    :titlesonly: 

    installation 
    templating/index 

我希望我的模板包括侧边栏列出了所有3个顶级页面(主页,安装,模板/索引)。

我试过在主页添加第二个,隐藏TOC树:

.. toctree:: 
    :hidden: 

    index 

.. toctree:: 
    :titlesonly: 

    installation 
    templating/index 

这实际上给了我想要的结果,除了它使next变量设置为当前页面。所以这个代码在我的模板中:

Next up: <a href="{{ next.link }}">{{ next.title }}</a> 

...总是从主页输出主页链接。不好。

我一直试图硬编码的实际网页的链接直接进入模板的侧边栏:

​​

这也适用,但我不希望强制要在访问的文档web服务器的webroot - 我希望他们也可以从文件系统上工作。

我不能简单地将网址设置为“index.html”,因为当您处于模板化文件中的文件时,该网址无效。

我错过了一些明显的东西吗?必须有一种方法可以将主页导入TOC,而不会破坏next链接以及在本地文件系统上运行的动态路径,即使是在子文件夹内也是如此。

回答

20

原来的答案隐藏在众目睽睽下对狮身人面像的TOC tree page

特殊的条目名称self代表包含toctree指令的文件。如果您想从toctree生成“站点地图”,这很有用。

self添加到TOC树完美地完成了这个技巧!如果你把它放在一个单独的,隐藏的toctree指令,它不会对内容的网页的表格显示了两种:

.. toctree:: 
    :hidden: 

    self 


.. toctree:: 
    :titlesonly: 

    installation 
    templating/index 
+0

不错!这是我错过的一个很好的细节。 – 2013-06-21 13:16:05

+0

和'主页'将自我链接重命名为“首页” – shadi 2017-10-20 12:38:55

+1

不幸的是,'self'不包含任何子标题(请参阅https://github.com/sphinx-doc/sphinx/issues/2103)。 – asmeurer 2017-11-21 23:04:52

2

您可以重命名您的Sphinx项目的根toctree页面,或者,也可以是模板/索引页面吗? master_doc变量可让您命名包含根toctree指令的项目中的文件,并且在本文档项目中不必称为index.rst ...来解决这个问题,我们有一个template/index.html文件和我们的根目录页面实际上被称为reference.rst

+0

谢谢,但与被获取TOC返回到主页的问题。我试过使用rST'include'指令,但那不起作用... – 2013-04-30 14:46:26