以下示例中的 nodename.number 是什么?

以下示例中的 nodename.number 是什么?

以下示例中的 nodename.number 是什么?例如 a.345?更改数字会任意旋转箭头。如何确定数字以使其保持平行?

\begin{figure}[!htb]
 \begin{center}
  \begin{tikzpicture}[node distance=1.5cm, auto, >=stealth]
   % nodes
\node[block] (a){\textbf{START} };
\node[block] (b)[right of= a, node distance =6cm]{\textbf{END}};

   % edges


\draw[-open triangle 45] (a.345) -- node[rotate=0,above, yshift=1cm] {a-B} (b.195);
\draw[open triangle 45-] (a.15) -- node[rotate=0,below, yshift=-0.5cm] {B-A} (b.165);


  \end{tikzpicture}
  \caption{Diagram }
  \label{flowchart}
 \end{center}
\end{figure}

在此处输入图片描述

答案1

正如 Caramdir 在 Jubobs 链接的答案中所说:

标准节点的锚点node.〈angle〉角度介于 0(=东)和 360 之间,按逆时针测量。这些节点位于节点的边界上,位于与中心成给定角度的线上。

这也解释了数字的作用。

问题的第二部分有点棘手(根据block您未在问题中说明的样式设置方式,可能会有一些变化)。使用角度来表示所需内容的问题在于,对于不同的形状,与角度相对应的点的高度可能不同:

相同角度,不同高度

因此,尽管您可能希望使用角度来指定箭头离开一个形状的位置,但您可能不想使用角度来指定它进入另一个形状的位置。您真正想说的是“保持水平直到碰到边界”。据我所知,没有内置的构造可以做到这一点,但使用交点的坐标规范|-和来模拟它并不难-|。在您的例子中,您有一个从离开的箭头aa.345现在您希望它水平移动直到到达b。它将到达b左侧,因此我们需要知道x左侧的坐标。这恰好与锚点的x坐标相同。所以我们想要的坐标和的。这可以使用库中的构造来完成,但也可以写成。这意味着“垂直线通过与水平线相交的点。”。westbya.345xb.westletcalc(b.west |- a.345)b.westa.345

这样做的一个缺点是,如果您更改箭头的出口点,则必须a.345在两个位置都更改。您可以使用coordinate标记该点:\coordinate (a exit) at (a.345); \draw[->] (a exit) -- (b.east |- a exit);。或者您可以使用一些技巧来定义一个“虚拟坐标”,该坐标始终扩展到指定的最后一个点。这就是我下面所做的。

\documentclass{article}
%\url{http://tex.stackexchange.com/q/113998/86}
\usepackage{tikz}
\usetikzlibrary{arrows}

\tikzset{
  block/.style={draw,fill=cyan}
}

\makeatletter
\expandafter\def\csname pgf@sh@np@last point\endcsname{\def\centerpoint{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}}
\expandafter\def\csname pgf@sh@ns@last point\endcsname{coordinate}
\expandafter\def\csname pgf@sh@pi@last point\endcsname{\pgfpictureid}%
\expandafter\def\csname pgf@sh@nt@last point\endcsname{{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}}
\expandafter\def\csname pgf@sh@np@last saved point\endcsname{\def\centerpoint{\pgfqpoint{\tikz@lastsavedx}{\tikz@lastsavedy}}}
\expandafter\def\csname pgf@sh@ns@last saved point\endcsname{coordinate}
\expandafter\def\csname pgf@sh@pi@last saved point\endcsname{\pgfpictureid}%
\expandafter\def\csname pgf@sh@nt@last saved point\endcsname{{1.0}{0.0}{0.0}{1.0}{0.0pt}{0.0pt}}
\makeatother

\begin{document}


  \begin{tikzpicture}[node distance=1.5cm, auto, >=stealth]
   % nodes
\node[block] (a){\textbf{START} };
\node[block] (b)[right of= a, node distance =6cm]{\textbf{END}};

   % edges


\draw[-open triangle 45] (a.345) -- node[rotate=0,above, yshift=1cm] {a-B} (b.west |- last point);
\draw[open triangle 45-] (a.15) -- node[rotate=0,below, yshift=-0.5cm] {B-A} (b.west |- last point);

  \end{tikzpicture}
\end{document}

来自节点的平行箭头

相关内容