将自定义脚本添加到sphinx中的某些文档

时间:2017-10-24 13:33:21

标签: python python-sphinx

我有这个文件夹结构,用于在sphinx中生成docs(html):

doc-root
- static (custom.css, custom.js)
- doc-1 (*.rst)
- doc-2 (*.rst)
- doc-3 (*.rst)
conf.py
index.rst (toctree for doc-1, doc-2 and doc-3)

我正在生成htmls,并且只想将custom.js添加为doc-2的脚本标记。

我尝试在root conf.py的setup(app)中添加app.add_javascript('custom.js'),但是sphinx将custom.js添加到所有生成的htmls中。

我添加了一个doc-1 / conf.py并添加了setup(app),但它永远不会被调用,因为我使用root中的-c选项从根目录生成htmls。

有没有办法实现这一点,让sphinx尊重conf.py从其子文件夹中提供,或者在root conf.py中提供逻辑?

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案:

将custom.js添加到_static/文件夹;然后创建一个包含内容的doc-root/templates/layout.html文件:

{% extends "!layout.html" %}

{%- block extrahead %}
<meta name="sourcename" content="{{ sourcename }}" />
{% if "doc-2" in sourcename %}
  <script type="text/javascript" src="./_static/custom.js"></script>
{% endif %}
{% endblock %}

确保src attr指向正确的相对js文件。我添加了元标记只是为了回显当前的doc值。当sourcename变量包含doc-2 / index.rst.txt值时,将添加脚本。