是否可以将graphviz元素链接到sphinx链接?

时间:2015-12-14 14:28:09

标签: python-sphinx graphviz

我在graphviz文档中使用Sphinx,并希望重用由RestructuredText代码自动生成的链接。

  

你可能想直接跳到底部的UPDATE 2   摘要(剧透:对我不起作用)

我从

获得的输出
Hello
-----
Test of a graph

.. graphviz::

    digraph process {
           a [label="first", href="http://google.com"];
           b [label="second", href="#World"];
           a -> b;
        }

World
-----
Something else.

是正确的,但尽管生成的图片是SVG,但firstsecond无法点击:

enter image description here

如果我右键单击嵌入的图片并在新标签页中打开它,它会显示我可以点击的活动链接。看起来嵌入图像会阻止链接处于活动状态。

我的conf.py与graphviz相关的元素:

extensions = [
    'sphinx.ext.todo', 'sphinx.ext.graphviz'
]
graphviz_output_format = 'svg'

在Sphinx中是否有特定的内容可以为嵌入式图形设置此行为?

更新

bug report filed

更新2

我尝试使用updated Sphinx(它引入了与graphviz相关的更改)。结果是:

  • 打开新页面不起作用。我选择了非HTTPS页面(http://www.timeanddate.com/)而不是Google,我将页面嵌入IFRAME

enter image description here

  • 结果在浏览器(Chrome 47,FF 43,IE Edge)
  • 中保持一致

总结是嵌入功能(谢谢@xuhdev的工作)至少对我来说是不起作用的。

1 个答案:

答案 0 :(得分:2)

我发现了问题,我认为这是一个错误。 graphviz扩展插入<img>内的svg图像,这使得svg文件是非交互式的。我made a pull request通过用对象替换img标记来解决问题。您可以通过使用我的分支来解决此问题:

pip install git+https://github.com/xuhdev/sphinx@graphviz-interactive-svg

添加内联svg文件选项的替代解决方案也是available

您还需要使用target更新graphviz文件:

digraph process {
       a [label="first", href="http://google.com", target="_top"];
       b [label="second", href="#World"];
       a -> b;
    }

您可以查看可能的目标here

相关问题