如何在转换为 SVG 时使用 TikZ 和图形绘制指定 SVG 类?

如何在转换为 SVG 时使用 TikZ 和图形绘制指定 SVG 类?

我正在尝试在此基础上继续发展上一个问题

绘制常规图形时,我可以使用 dvisvgm 特效成功指定节点和边缘 SVG 类。

使用此 MWE:

\documentclass[tikz,dvisvgm]{standalone}

\usepackage{tikz}

\usetikzlibrary{graphs}

\begin{document}
\begin{tikzpicture}[]
  \special{dvisvgm:raw <g class="mainnode">}
    \node (1) at (0, 0) {one};
  \special{dvisvgm:raw </g>}
\end{tikzpicture}

\end{document}

我可以跑

$ latexmk -latex='dvilualatex'  -dvi nolayout.tex 
$ dvisvgm --zoom=-1  --optimize --font-format=woff2,autohint nolayout.dvi

特殊之处是正确地包装所创建的节点。

<g class="mainnode">
  <g transform="translate(-7.5 -2.185)matrix(1.00375 0 0 -1.00375 61.437027 -66.642029)" stroke="none" fill="#000">
    <text class="f0" x="-61.207499" y="-66.393055">one</text>
  </g>
</g>

但是,如果我在此示例中使用图形绘制而不是手动指定坐标:

\documentclass[tikz,dvisvgm]{standalone}

\usepackage{tikz}

\usetikzlibrary{graphs, graphdrawing}
\usegdlibrary{layered}

\begin{document}
\begin{tikzpicture}[layered layout]

  \special{dvisvgm:raw <g class="mainnode">}
    \node (1) at (0, 0) {one};
  \special{dvisvgm:raw </g>}

\end{tikzpicture}

\end{document}

特殊部分实际上并没有在 SVG 中包装生成的节点,而是没有内容。

<g class="mainnode"> </g>

<g stroke="none" transform="matrix(1.00375 0 0 -1.00375 61.437027 -66.642029)matrix(.996264 0 0 -.996264 -61.207499 -66.393055)translate(-7.5 -2.185)matrix(1.00375 0 0 -1.00375 61.437027 -66.642029)" stroke-miterlimit="10" fill="#000">
  <text class="f0" x="-61.207499" y="-66.393055">one</text>
</g>

使用图形自动绘图时,如何用特殊元素包装生成的节点?

答案1

如果我将layered layout选项从环境的可选参数移动tikzpicture到实际\graph命令,则输出 SVG 就可以了。

\begin{tikzpicture}%[layered layout]

  \special{dvisvgm:raw <g class="mainnode">}
    \graph[layered layout] {<group specification>};
  \special{dvisvgm:raw </g>}

\end{tikzpicture}

相关内容