dot2tex 中的循环。或者轻松绘制复杂的图形

dot2tex 中的循环。或者轻松绘制复杂的图形

我原来的问题:

可以在 dot2tex 中使用循环吗?

我想输入类似以下内容的内容:

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,fit}
\usepackage[pgf]{dot2texi}

\begin{document}

\begin{dot2tex}[tikz,options=-t math]
digraph G {
\foreach \x / \y in {0/1,1/2,2/3}
a\x -> a\y [label = "b_{\x,\y}"]

}
\end{dot2tex}


\end{document}

代替:

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,fit}
\usepackage[pgf]{dot2texi}

\begin{document}

\begin{dot2tex}[tikz,options=-t math]
digraph G {
a0 -> a1 [label = "b_{0,1}"]
a1 -> a2 [label = "b_{1,2}"]
a2 -> a3 [label = "b_{2,3}"]

}
\end{dot2tex}


\end{document}

谢谢。请注意,这是一个玩具示例,我有几个(复杂的)情况可以使用循环。

编辑 我从评论中得知,这是不可能的。

我真正寻找的是能够让我绘制复杂图形的东西(我不想像在 tikz 中那样管理节点的定位)并使用循环来定义图形(有一些规律,可以节省我大量的打字时间)。

如果您知道这样的工具/包,请告诉我。

多谢。

答案1

我使用以下test.tex文件获得相同的输出文件:

\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,fit}
\usepackage[pgf]{dot2texi}

\newtoks\dtttoks

\begin{document}

\begingroup
\global\dtttoks={}
\foreach \x / \y in {0/1,1/2,2/3}{
  \edef\temp{a\x\space -> a\y\space [label = "b_{\x,\y}"]}
  \global\dtttoks=\expandafter{\the\expandafter\dtttoks\temp^^J}
}
\edef\BODY{digraph G {^^J\the\dtttoks}}
\def\start{\begin{dot2tex}[tikz,options=-t math]}
\expandafter\start\BODY
\end{dot2tex}
\endgroup

\begin{dot2tex}[tikz,options=-t math]
digraph G {
a0 -> a1 [label = "b_{0,1}"]
a1 -> a2 [label = "b_{1,2}"]
a2 -> a3 [label = "b_{2,3}"]
}
\end{dot2tex}


\end{document}

test-dot2tex-fig1.dot文件和均test-dot2tex-fig2.dot包含

digraph G {
a0 -> a1 [label = "b_{0,1}"]
a1 -> a2 [label = "b_{1,2}"]
a2 -> a3 [label = "b_{2,3}"]
}

我想,这并不实用。

相关内容