如何编码 svg 图层以便它们出现在 Inkscape 图层下拉菜单中?

How to code svg layers so they appear in Inkscape layers drop down menu?

我正在为以后的 Inkscape post-编辑编写一些 svg。另外,我有一些我想在下拉菜单中显示为图层的组。但目前,当我点击时,我只看到 (root) 而仅此而已,而我实际上有 12 层应该产生 12 行堆积。

我目前这样做:

svg.append("g")
    .attr("groupmode","layer")
    .attr({'id':'L1_borders','label':'L1_borders'})

但它不起作用(see & download)。

如何对 svg 图层进行编码以便它们出现在 Inkscape 图层下拉菜单中?

打开Inkscape GUI,创建一个新图层,检查它显示,由于某些原因,Inkscape在一些属性键之前添加了命名空间"inkscape:",例如:

因此反映此行为的 D3 代码应该是:

svg.append("g")
    .attr("inkscape:groupmode","layer")
    .attr({'id':'L1_borders','inkscape:label':'L1_borders'})

这让我很恼火,因为它不太可能是标准的。烦人。

实际上,即使是那个添加,也会被 D3js 清理干净,我完全支持这个大胆的举动!

然而,我需要这些。我最终做了一个小 hack :

svg.append("g")
    .attr(":inkscape:groupmode","layer")
    .attr({'id':'L1_borders',':inkscape:label':'L1_borders'})

D3js 清理第一个 ...: 并留下 inkscape:label。它然后工作。由前。在 L0 和 L1 上完成时:

层现在可以在下拉 GUI 层下拉菜单中作为可点击的行进行访问。

哦,丑陋的调皮的非标准hack~~~