gal*_*tte 6 restructuredtext python-sphinx
在toctree中插入文档时,显示的链接是文档的主标题.所以当我这样做时:
.. toctree::
materials/diffuse
materials/glossy
materials/specular
Run Code Online (Sandbox Code Playgroud)
我明白了:
物料
"材料"这个词在toctree中显然是多余的,但在文档标题中很重要,以便更好地理解.
RST允许我写这个:
.. toctree::
Diffuse<materials/diffuse>
Glossy<materials/glossy>
Specular<materials/specular>
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这样,因为重命名文档需要更新索引toctree,链接更新是我从MediaWiki转到Sphinx的原因.此外,这会禁用在toctree中使用:glob:和wildcards
问题:有没有办法在叶子文档本身中指定一个toctree标题,例如在"diffuse.rst"中作为元属性?
谢谢!
从概念上讲,CSS 内容属性适用于此。假设你的标题是用<h1>元素渲染的,你会想要这样的东西:
.. raw:: html
<style>
h1:after {
content: " Material";
}
</style>
Run Code Online (Sandbox Code Playgroud)
该<style>...</style>块正在做这项工作。您的文档保留单字标题(漫反射、光泽、镜面),CSS 在渲染时添加“材质”。因此,您的页面具有您想要的标题,并且您的目录树没有每个项目的冗余“材料”。但是,您希望该块仅出现在“材质”部分的页面上 - 您不能将其添加到主 css 文件中,否则它将影响所有<h1>元素。不幸的是,据我所知,Sphinx 没有一种<style>在页面部分正确创建块的机制。<head>因此,要使用这种 CSS 技术,您必须接受将其放入.. raw:: html页面上某处所示的指令中的完整技巧。你把它放在文档中的什么位置并不重要——你选择的任何位置都会生成无效的 html,但会呈现你想要的内容:你的 toctree 标签不会包含“material”;您的页面标题将会。