7

我正在使用 Sphinx 来记录一个 python 项目。我正在使用画布来可视化文档中的一些结果。我的文档需要支持 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 文档页面的注释,文件 layout.html 已修改。此修改是在模板头中插入一个条件 HTML 块,如果在 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,用于设置画布并使用它。

当 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 文档中的相对路径是正确的,而不管 rst 文件的位置如何?

4

1 回答 1

5

如果辅助函数 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 %}
于 2012-08-07T20:56:40.300 回答