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

Use version number in file links in Sphinx

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

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

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

|version|

不允许使用该语法将版本 link 包含到文件中:

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

那么,如何为名为 name_of_file.<version_num>.min.js 的文件生成 links 并使用来自 conf.py 的版本号?

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

简答:

您需要将 link 的部分拆分到 |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>

长答案

我们需要克服几个障碍:

问题一: 现在,|version| 在您的文档中本质上是一个 substitution definition. When you use a substitution reference,它必须以 space 开头,例如 |version|

因此,即使在不是 link 的常规 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

所以你不能在 link \`name_of_file.|version|.min.js`\ 中进行替换,|version|。这就是为什么我们必须使用 raw-html 并将其分解成多个部分,我们再创建 2 个替换定义 |link-pre||link-post|,它们将被替换为它们的 raw-html 在生成的输出中。

我尝试使用内联 :raw-html: role 但这没有帮助,所以不幸的是解决方案变得冗长。