如何在无需手动调整的情况下为弯曲箭头添加标签?

如何在无需手动调整的情况下为弯曲箭头添加标签?

这是我的流程图,我想在弯曲的箭头上添加标签 L1、L2 和 L3。虽然以下代码有效(参考:在 TikZ 中向弯曲箭头添加标签

\draw [箭头] (b8.south)++(.3,0) |- ++(0,-1.5) -| 节点[pos=0.225,above] {L3} (b7);

但是需要手动调整位置。有没有有效的方法来解决这个问题?

在此处输入图片描述

答案1

您可以使用autoandmidway选项让节点自动放置标签:

\draw [arrow] (b8.south)++(.3,0) |- ++(0,-1.5) -| node[midway,auto] {L3} (b7);

编辑:如何包含 L1 和 L2 节点。我们用auto我们想要的节点的定位替换:要么leftright。也可以有一种方法可以定义箭头相交的正确级别。或者您可以使用操作提取节点|-的 y 分量,我在这里已经完成了。您将需要使用该库。b11letcalc

\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\tikzset{every node/.append style={inner sep=0pt,outer sep=0pt,
minimum height=1cm,minimum width=2cm,draw},
Lnode/.style={outer sep=#1,inner sep=1mm,
minimum size=0pt,draw=green,fill=green,text=red}};
%
\node[draw=red,ultra thick] (b8) at (5cm,0) {B8};
\node[minimum width=0pt,inner sep=1mm] (b9) at (2,0) {B9};
\node[draw=blue,ultra thick] (b10) at (-1cm,0) {B10};
\node (b11) at (2cm,-2cm) {B11};
% Using let operation to extract the exact coordinates for B-nodes
\draw[->] let \p1=(b11.center),\p2=(b10.center) in
(b10.south) -- (\x2,\y1) node[Lnode=1mm,midway,left]{L1} -- (b11.west);
\draw[<-] let \p1=(b11.center),\p2=(b8.center) in
(b8.south) -- (\x2,\y1) node[Lnode=1mm,midway,right]{L2} -- (b11.east);
\draw[->] (b8) -- (b9); \draw[->] (b9) -- (b10);
\end{tikzpicture}
\end{document}

结果: 自动机节点标记

相关内容