Python sphinx 将可单击的SVG图像插入Sphinx文档

Python sphinx 将可单击的SVG图像插入Sphinx文档,python-sphinx,restructuredtext,read-the-docs,Python Sphinx,Restructuredtext,Read The Docs,我有几个节点的SVG图像文件,每个节点都与URL关联。如果我直接在浏览器中打开这个文件,我可以单击每个节点,它将打开不同的URL。但是,当我在Sphinx文档中使用此图片时,它不起作用-图片作为一个整体呈现,因此我需要通过查看图像打开它,然后才能单击节点 我使用的是标准图像指令: .. image:: myfile.svg 可能我需要使用其他工具?一个简单的解决方案是在中添加一个指向svg文件的链接。。image::myfile.svg命令: .. image:: myfile.svg

我有几个节点的SVG图像文件,每个节点都与URL关联。如果我直接在浏览器中打开这个文件,我可以单击每个节点,它将打开不同的URL。但是,当我在Sphinx文档中使用此图片时,它不起作用-图片作为一个整体呈现,因此我需要通过
查看图像
打开它,然后才能单击节点

我使用的是标准图像指令:

.. image:: myfile.svg

可能我需要使用其他工具?

一个简单的解决方案是在
中添加一个指向svg文件的链接。。image::myfile.svg
命令:

.. image:: myfile.svg
   :target: _images/myfile.svg
在生成html文件时,注意检查复制图像的相对目录。默认情况下,它应该是
\u images/

通过这种方式,您可以单击SVG文件,在普通页面中查看它,然后像往常一样单击它(这不是一个完美的解决方案,但仍然是..)。

Sphinx为图像生成
标记,这在大多数情况下是有意义的。但是,要使svg内的链接可单击,应使用
标记,即:

.. raw:: html

    <object data="myfile.svg" type="image/svg+xml"></object>
。。原始::html

(关于您链接到的,我认为Sphinx在这里做不了很多事情,除了在
.image
指令中引入一个新选项之外,它允许用户指定是渲染为
img
还是
对象
标记。)

我自己仍在寻找更好的解决方案,但我遇到了同样的问题,并使用了这种变通方法

您可以使用下载指令为用户提供指向该文件的链接

:download:`svg <images/image.svg>`
:下载:`svg`

我可能误解了OP的要求,但为什么不将SVG作为html包含在sphinx文档中呢?这似乎对我有用:

.. raw:: html
    :file: images/image.svg

要在sphinx中包含可单击的svg链接,我执行了以下操作:

.. raw:: html
    :file: ../graphs/pymedphys_analysis.gamma.svg
见:

这样我就可以在导入的样式表中编写以下内容:

svg{
宽度:100%;
}

这使得svg能够根据需要适合容器

见:

我喜欢这种方式

.. raw:: html

    <a href="https://www.google.com/">
        <img src="https://img.shields.io/static/v1?&style=plastic&logo=appveyor&label=Google&message=link2google&color=FF0000" alt="No message"/></a>
。。原始::html

在这方面也存在类似的问题。我想这个问题可能是在DOCTULLS,这是建立狮身人面像的基础。我不认为这是一个bug ---使用不同的方式嵌入SVG有不同的问题。看见您可以在Docutils邮件列表中询问一些hep,并可能请求此功能,或者您可以编写一个sphinx扩展以按照您的方式包含svg图像。您找到了解决方案吗?@ruslo我认为添加这样的目标会有所帮助,因为新手用户的反应是单击图像,而不是右键单击
→ <代码>查看图像@ruslo我想斯芬克斯的维护人员认为你的bug报告意味着你打算呈现所有
。。图像
SVG作为
对象
标记。这可能会破坏一些其他的,比如
:宽度
:高度
。但是如果你只是写你自己的原始HTML,这与你无关。这个答案对我很有用。我很难让被接受的答案起作用。我正在使用斯芬克斯
版本:4.0.1