2013-04-20 82 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