不同的toctree标题和文档标题,仅在文档源中指定

时间:2015-09-03 20:41:59

标签: python-sphinx restructuredtext

在toctree中插入文档时,显示的链接是文档的主标题。所以当我这样做时:

.. toctree::
   materials/diffuse
   materials/glossy
   materials/specular

我明白了:

材料

  • 漫反射材料
  • 光面材料
  • 镜面材质

“材料”这个词在toctree中显然是多余的,但在文档标题中很重要,以便更好地理解。

RST允许我写这个:

.. toctree::
   Diffuse<materials/diffuse>
   Glossy<materials/glossy>
   Specular<materials/specular>

但我不喜欢这样,因为重命名文档需要更新索引toctree,链接更新是我从MediaWiki转到Sphinx的原因。此外,这会禁用在toctree

中使用:glob:和wildcards

问题:有没有办法在leaf文档中指定一个toctree标题,例如在“diffuse.rst”中作为元属性?

谢谢!

1 个答案:

答案 0 :(得分:-1)

从概念上讲,css content属性将在此处适用。假设您的标题是使用<h1>元素呈现的,则您需要这样的内容:

.. raw:: html

   <style>
      h1:after {
         content: " Material";
      }
   </style>

<style>...</style>块正在工作。您的文档保留一个单词标题(“漫反射”,“光泽”,“镜面反射”),​​而CSS在渲染时添加了“材质”。因此,您的页面具有所需的标题,并且toctree中没有每个项目的多余“材料”。但是,您希望该块在“材料”部分的页面上仅显示-您不能仅将其添加到主CSS文件中,否则它将影响所有{{1 }}元素。不幸的是,据我所知,Sphinx没有一种机制可以在页面的<h1>部分中正确创建<style>块。因此,要使用此CSS技术,您必须接受将其放入页面上某处的<head>指令中的完整技巧。将其放在文档中的位置并不重要-您选择的任何位置都将生成无效的html,但是将呈现您想要的内容:您的toctree标签将不包含“ material”;您的页面标题将会。