python - 如何修改 Sphinx 文档中的 <head> 以便更新相关链接?

标签 python python-sphinx

我正在使用 Sphinx 来记录一个 python 项目。我正在使用 Canvas 可视化文档中的一些结果。我的文档需要支持 Firefox 和 IE。我需要在文档中包含 excanvas.js 库,但前提是浏览器是 IE。我如何有条件地包含此库以使相对路径正确?

例子....

文档文件夹

/sphinx
   /source
   working_test_page.rst
   test_block.html
   /nested
      non_working_test_page.rst
      test_block_copy.html
   /_templates
      layout.html
   /_static
      excanvas.js
   ...

根据 Sphinx' documentation pages 中的注释,文件 layout.html 被修改。此修改是在模板头部插入一个 HTML 条件 block ,如果在 IE 上查看页面,则添加 excanvas.js。

{% extends "!layout.html" %} 
{% block extrahead %} 
  <!--[if IE]>
    <script type="text/javascript" src="_static/excanvas.js"></script>
  <![endif]--> 
{% endblock %} 

文件 working_test_page.rst 和 non_working_test_page.rst 具有相同的内容。内容如下。唯一的区别是文件的位置。

Script Test
==========

.. raw:: html
   :file: test_block_1.html

文件test_block.html 和test_block_copy.html 的内容相同。这两个文件包含一些 HTML,用于设置 Canvas 并使用它。

当 sphinx 将第一个文件编译到 HTML 构建目录中时,将产生以下文件结构:

/sphinx
   /build
   working_test_page.html
   /nested
      non_working_test_page.html
   /_static
      excanvas.js
   ...

文件 working_test_page.html 具有正确的 excanvas.js 路径并正确加载。文件 non_working_test_page.html 的 excanvas.js 路径错误,无法正确加载。

如何有条件地加载 excanvas.js,以便无论第一个文件的位置如何,sphinx 文档中的相对路径都是正确的?

最佳答案

如果使用辅助函数 pathto(...) 修改条件 HTML 片段,条件链接将被正确格式化。请参阅有关 pathto(file,1) 的文档.

{% extends "!layout.html" %}
{% block extrahead %}
    <!--[if IE]>
      <script type="text/javascript" src="{{pathto("_static/excanvas.js", 1)}}"></script>
    <![endif]-->
{% endblock %}

关于python - 如何修改 Sphinx 文档中的 <head> 以便更新相关链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11853745/

相关文章:

python - Django 获取显示名称选择

python - 使用 sphinx 记录 python 脚本条目 (__name__ == '__main__')

python - 如何在 Sphinx 中为 Python 类/属性/常量/方法指定别名?

python - 使用网格管理器添加小部件后的 tkinter 可滚动 Canvas

python - PyCharm同一个项目可以有多个conda环境变量吗

python - 将索引号转换为 int (Python)

Python multiprocessing.Process 对象的行为就像它持有对另一个进程中的对象的引用。为什么?

python - 自动类和实例属性

latex - 在编写手册/书籍方面,Sphinx 是否比 LaTex 更好?

python - 更新python文件时,Sphinx不会更新html页面