Python sphinx 将可单击的SVG图像插入Sphinx文档
我有几个节点的SVG图像文件,每个节点都与URL关联。如果我直接在浏览器中打开这个文件,我可以单击每个节点,它将打开不同的URL。但是,当我在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
查看图像
打开它,然后才能单击节点
我使用的是标准图像指令:
.. 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