我正在使用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' documentation pages的说明,文件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文档中的相对路径是正确的,无论第一个文件的位置如何?
答案 0 :(得分:4)
如果使用辅助函数pathto(...)来修改条件HTML snipet,则条件链接将被正确格式化。请参阅pathto(file,1)上的文档。
{% extends "!layout.html" %}
{% block extrahead %}
<!--[if IE]>
<script type="text/javascript" src="{{pathto("_static/excanvas.js", 1)}}"></script>
<![endif]-->
{% endblock %}