Sphinx:同一图像是否可以有不同的相对路径?

9

我刚使用Sphinx,想在两个不同的*.rst文件中展示相同的图像。

第一个*.rst文件"lower.rst"与"figures"文件夹处于同一级别,我可以像这样包含一个图像:

.. figure:: figures/figure1.png

第二个 * .rst 文件 "higher.rst" 比 "lower.rst" 高出几个级别。实际上,我是这样在 higher.rst 中包含 lower.rst 的:
.. include:: relative/path/to/lower.rst.

不幸的是,在higher.rst中,来自lower.rst的图表未显示:

"image file not readable" error.

higher.rst在当前目录中查找图像,而不是指向原始的低级目录。

这个问题在这里有所涉及: Can sphinx link to documents that are not located in directories below the root document?,但是我仍然不明白如何通过那里给出的信息解决我的问题。

1个回答

8

将您的文件放在根目录下的一个文件夹中,并更改您的标记以相对于根目录使用前导/来查找它们。

.. figure:: /_static/figure1.png

现在从更高级别的文件中,您应该能够包含较低级别的文件,并且两个文件都应该显示图像。

不过,还有一个后续问题:是否有办法避免图表的重复标签警告? - anfho
我假设你的包含文件被视为一个常规的 reST 文档,因为它与 source_suffix 中的一个值匹配。 你可以更改后缀(例如,my_included_file.inc),或者将其添加到 conf.py 中的 exclude_patterns 中进行模式匹配。 - Steve Piercy
不确定如何为包含在toctree中但后缀不同的两个相同文档编写排除模式? - anfho
哦。我有很多文件在较低的路径位置,我希望也能在顶级路径位置使用include语句。我当然可以将每个文件名都放入exclude模式中(这就是exclude.*所做的:exclude_patterns=[exclude.*],对吗?),但我想知道是否有更聪明的方法可以做到这一点?如果我同时排除*.rst*.inc文件(这也是exclude.*的作用,对吗?),那么它们都将无法为toctree所识别?或者我错了吗? - anfho
更多示例可以在exclude_patterns文档中找到。 - Steve Piercy
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接