10

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

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

我得到:

材料

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

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

RST 允许我这样写:

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

但我不喜欢这样,因为重命名文档需要更新索引目录树,而链接更新是我从 MediaWiki 转到 Sphinx 的原因。此外,这会禁止在目录树中使用 :glob: 和通配符

问题:有没有办法在叶子文档本身中指定一个目录树标题,例如在“diffuse.rst”中,作为元属性?

谢谢!

4

1 回答 1

0

从概念上讲,css content 属性将适用于此。假设你的标题是用元素呈现的<h1>,你会想要这样的:

.. raw:: html

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

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

于 2018-08-10T15:28:11.403 回答