在Sphinx中使用文件链接中的版本号

时间:2015-06-18 16:33:03

标签: python-sphinx

在Sphinx中,可以使用以下语法生成文件链接:

`name_of_file.js <some/location/name_of_file.js>`_

在conf.py文件中,定义了一个version变量,我们可以在.rst文件中使用这样的变量:

|version|

不允许使用该语法将版本包含在文件链接中:

`name_of_file.|version|.min.js <some/location/name_of_file.|version|.min.js>`_

那么,如何生成名为name_of_file.<version_num>.min.js之类文件的链接并使用conf.py中的版本号?

1 个答案:

答案 0 :(得分:6)

我需要类似的东西,经过多次实验,我有一个解决方法。请注意,这是一个糟糕的解决方案,但它确实有效。

答案简短:

您需要将链接的各个部分拆分为| version |的左侧和右侧并使用原始html和|version|。你的.rst会是这样的:

Example of a link with version in it |link-pre|\ |version|\ |link-post|

.. |link-pre| raw:: html

    <a href="some/location/name_of_file.

.. |link-post| raw:: html

    .min.js">name_of_file.min.js</a>

答案很长

我们需要克服几个障碍:

问题1: 现在,|version|基本上是substitution definition。当您在文档中使用substitution reference时,必须使用space这样的|version|

因此,即使是常规的rsT句子(不是链接),也不能name_of_file.|version|.min.js。您需要执行name_of_file.\ |version|.min.js,即使用space

逃避\

问题2:reST:http://docutils.sourceforge.net/FAQ.html#is-nested-inline-markup-possible

不支持嵌套内联标记

因此,您无法在链接|version|内进行替换[{1}}。这就是为什么我们必须使用raw-html并将其分成几部分,然后我们创建另外两个替换定义\`name_of_file.|version|.min.js`\|link-pre|,它们将在生成的输出中替换为raw-html。 / p>

我尝试使用内联|link-post| role,但这没有帮助,所以很遗憾,解决方案结果是冗长的。