Graphviz 下标

4

我正在试图安装并使用Graphviz,并且我急需在我的节点标签中使用下标。不幸的是,在浏览了无数关于类似问题的帖子后,似乎我符合所有提出的解决方案,但仍然无法正常工作。以下是我的代码:

 digraph G{
execute [label=<ex<SUB>2</SUB>>];
main -> parse -> execute;
main -> init;
main -> cleanup;
init -> make_string;
main -> printf;
}

同时运行以下命令:

$ dot -Tps:cairo -v test.gv -o out.ps

输出内容为:

> dot - graphviz version 2.26.3 (20100126.1600)
Activated plugin library: libgvplugin_pango.so.6
Using textlayout: textlayout:cairo
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Using render: cairo:cairo
Using device: ps:cairo:cairo
The plugin configuration file:
    /usr/lib/graphviz/config6
        was successfully loaded.
    render  :  cairo dot fig gd map ps svg tk vml vrml xdot
    layout  :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device  :  canon cmap cmapx cmapx_np dot eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg pdf plain plain-ext png ps ps2 svg svgz tk vml vmlz vrml wbmp x11 xdot xlib
    loadimage   :  (lib) eps gd gd2 gif jpe jpeg jpg png ps svg
Error: Unknown HTML element <SUB> on line 1 
fontname: "Times-Roman" resolved to: (ps:pango  Times Roman,) (PangoCairoFcFont) "DejaVu Sans 14" 
in label of node execute
network simplex:  7 nodes 6 edges maxiter=2147483647 balance=1
network simplex: 7 nodes 6 edges 0 iter 0.00 sec
mincross: pass 0 iter 0 trying 0 cur_cross 0 best_cross 0
mincross G: 0 crossings, 0.00 secs.
network simplex:  13 nodes 16 edges maxiter=2147483647 balance=2
network simplex: 13 nodes 16 edges 1 iter 0.00 sec
routesplines: 6 edges, 18 boxes 0.00 sec
Using render: cairo:cairo
Using device: ps:cairo:cairo

我不太熟悉cairo或svg渲染,并且我不确定它是与graphviz捆绑在一起还是完全是一个单独的库。我使用Ubuntu 12,通过apt-get安装了graphviz。非常感谢任何帮助。谢谢。

据我理解,那就是我认为我正在做的事情。抱歉,我刚刚编辑了它,我加了斜体以测试是否也起作用,但它们没有。 - Mgarvey
如果我不能使用HTML下标,有其他人有获得下标的替代解决方案吗? - Mgarvey
那个例子对我来说完全没有问题(使用的是graphviz 2.28.0)。 - larsks
我使用的是2.26.3版本。也许Ubuntu在存储库方面有所滞后?我不认为两个版本之间的差异可能是我的渲染器无法正常工作。这不是我的示例,所以有人知道问题可能出在哪里吗?顺便说一句,感谢大家的回复。 - Mgarvey
尝试在标签周围加上引号?抱歉,我现在无法尝试,所以我只能建议。 - Codie CodeMonkey
显示剩余2条评论
2个回答

4
这是为什么 - 来自graphviz文档
引用:

粗体、斜体、下划线、下标和上标的字体标记(<B>, <I>, <U>, <SUB><SUP>)仅在2011年10月14日后的版本中提供,目前仅通过cairo和svg渲染器提供。

您当前使用的版本是2.26.3,该版本发布于2010年1月。我建议您升级。
请参见这个类似问题的答案

即使使用20140413版本,这个问题仍然存在。请查看下一个答案(在Graphviz的北方)。没错! - liuyang1
@Procras 由于原问题的提问者通过更新Graphviz解决了问题,我认为这是另一个问题(用不支持相同SVG特性的应用程序使用Graphviz SVG输出?)。 - marapet

2

另一个可能的问题是,某些SVG渲染器(inkscape?)似乎无法识别用于图形可视化-Tsvg(即-Tsvg:core:core)输出中下标的基线跳跃结构。

请尝试-Tsvg:cairo。这可能有效,因为cairo渲染器会执行自己的低级字形定位,并且不依赖SVG中那些令人头痛的高级功能。

Stephen North


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