自定义globaltoc& localtoc html渲染

时间:2012-09-19 20:07:56

标签: python-sphinx

我正在使用Sphinx设置文档。我确切地说,我对这个lib很新。

我的文档可以使用默认主题之一构建。一切正常:))

现在,我想自定义主题。我更新了layout.html以跟随我的皮肤。在此模板中,我添加了globaltoc.html& localtoc.html。 toc使用toctree()& toc

我想知道是否有办法更新生成的html,或者我是否需要调整我的css到生成的HTML?

谢谢!

1 个答案:

答案 0 :(得分:6)

我会想出你想要的东西 - 因为我觉得我有同样的问题。

例如,在localtoc.html中,模板如下所示:

<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
    {{ toc }}
{%- endif %}

{{ toc }}是狮身人面像的全球宏,我花了大约一个小时的时间去寻找绝对没有运气的地方。

需要注意的是,{{ toc }}呈现出类似的内容:

<ul>
   <li>Toc Item 1</li>
   <li>Toc Item 2</li>
   <li>Toc Item 3</li>
</ul>

问题在于,如果您的CSS希望按类处理<ul><li>标记,则无法轻易更改它们。最终我认为这是Sphinx的编剧/ html.py的限制,它仍然可以手工制作很多东西。

真正的解决方案是替换(可能是builders / html.py),但在Sphinx中肯定是writers / html.py。这比我想要的费用要多得多。

我确实设法找到了一些有些人解决了这个问题的人,但只是部分解决了这个问题:

rst2html5,其中包含html5css3 HTMLWriter&amp; HTMLTransformer。和docutils-html5-writer,看起来非常好 - 但由于构建器/ html.py和html5编写器之间的区别,它不是Sphinx的替代品。

最终我使用jinja过滤器提出了这个解决方案。这是一个丑陋的黑客,但它让我超越了障碍。

<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
   {{ toc|replace("<ul>", "<ul class=\"custom\">", 1) }}
{%- endif %}