使用 tikz 时未设置位置

使用 tikz 时未设置位置

我正在使用tikzLyX我正在尝试构建一个基本图表。是否可以以某种方式添加节点的路径而不设置每个节点的位置?

现在我使用:

\begin{tikzpicture}
  [scale=.8,auto=left,node/.style={circle,draw}]
  \node[circle,draw] (A) at (0,0) {$v_1$};
  \node[circle,draw] (B) at (4,0) {$v_2$};
 \draw[->] (A)--(B) node[midway,above]{$e_0$};
\end{tikzpicture}

输出:

在此处输入图片描述

但是是否可以删除该at (4,0)部分,以便tikz单独生成图形?我并不真正关心节点位于何处,我只关心它们的出口以及它们之间的路径。所需的代码如下所示:

\begin{tikzpicture}
  [scale=.8,auto=left,node/.style={circle,draw}]
  \node[circle,draw] (A) {$v_1$};
  \node[circle,draw] (B) {$v_2$};
 \draw[->] (A)--(B) node[midway,above]{$e_0$};
\end{tikzpicture}

并且输出应该是相同的(可能90程度不同但逻辑相同)。

主要目标只是声明路径并将tikz为我完成艰苦的工作。

我正在使用网页图形可视化(浏览器中的 Graphviz)。在那里,我只需声明它将为我构建图形的路径(无需设置位置)。我知道不可能使用它,Graphviz并且LyX每个使用它的人都会上传图像。我更喜欢构建节点,这样看起来会更好。

是否有可能以某种方式创建图形而不声明每个节点的坐标?

答案1

graphs库可让您无需担心节点的位置(参见手册 3.1 第 408 页及以下章节)

图形

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{graphs}

\begin{document}

\begin{tikzpicture}
\graph[grow right=30mm,nodes={circle,draw}] {
1 ->[edge label={a}] 2   ->[edge label={b}] 3;
1 -- [bend right,edge label'={c}] 3;
};
\end{tikzpicture}

\end{document}

答案2

你的建议的最低限度的实现可能是

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[start chain,c/.style={circle,draw,join},every join/.style={-latex}]
\node [c,on chain] {A};
\node [c,on chain] {B};
\end{tikzpicture}
\end{document}

在此处输入图片描述

稍微复杂一点的版本可能是

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{chains,decorations.markings}
\newcounter{eindex}
\begin{document}
\begin{tikzpicture}[node distance=2.4cm,start chain,%
midmark/.style={postaction={decorate,decoration={markings,
mark=at position 0.5 with {\stepcounter{eindex}
\node[anchor=south] at (0,0.1){$e_{\theeindex}$};}}}},
c/.style={circle,draw,join},every join/.style={-latex,midmark}]
\node [c,on chain] {A};
\node [c,on chain] {B};
\node [c,on chain] {C};
\end{tikzpicture}
\end{document}

在此处输入图片描述

当然,链条可以朝任何方向延伸,而且还有更多的东西,正如您在 pgfmanual 第 48 节中看到的那样。

相关内容