曲线路径作为标注

曲线路径作为标注

我经常想添加所谓的“标注箭头”来吸引人们对技术图形某些部分的注意,例如下面带有箭头的两条弯曲路径:

在此处输入图片描述

虽然我只使用过 TikZ 几次,但我的问题是不是 “有人能帮我做这件事吗?”反而,“您能向我概述一下您的哲学或方法吗?”在技​​术图形中添加带有箭头的曲线路径,该路径可以放置在各种位置和/或根据手头的特定任务采用各种长度。

现在,我正在尝试使用inout命令,并通过在特定坐标上放置路径并手动调整角度来实现这一点,但缺点是似乎我想要的每个新标注都是一个全新的问题。所以我主要想知道其他人会使用什么方法来解决这个问题。

答案1

编辑:我的第一个答案适用于最新的TikZ 的 CVS 版本。我下面提供了一个降级版本(兼容 TikZ 2.10)。

第一版(TikZ 的最新 CVS 版本)

以下是我试图回答你这个非常模糊的问题:

在此处输入图片描述

代码(poi=兴趣点):

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
  zigzag/.style={
    to path={
      coordinate (m) at ($(\tikztostart)!.5!(\tikztotarget)$)
      coordinate (m1) at ($(m)!1mm!90:(\tikztostart)$)
      coordinate (m2) at ($(m)!1mm!90:(\tikztotarget)$)
      plot[smooth] coordinates{ (\tikztostart) (m1) (m2) (\tikztotarget)}
    }
  },
}

\begin{document}
\begin{tikzpicture}
  \node[draw,circle,fill=gray] (poi) {POI};

  \node[blue] (c1) at (0,2) {$y = f(x)$};
  \draw[blue,-latex] (c1.south) to[zigzag] (poi.north);

  \node[red] (c2) at (2,0) {$y = g(x)$};
  \draw[red,-latex] (c2.west) to[zigzag] (poi.east);
\end{tikzpicture}
\end{document}

第二版本(与 TikZ 2.10 兼容)

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
  zigzag/.style={
    to path={
      coordinate (m) at ($(\tikztostart)!.5!(\tikztotarget)$)
      coordinate (m1) at ($(m)!1mm!110:(\tikztostart)$)
      coordinate (m2) at ($(m)!1mm!110:(\tikztotarget)$)
      plot[rounded corners=1mm] coordinates{ (\tikztostart) (m1) (m2) (\tikztotarget)}
    }
  },
}

\begin{document}
\begin{tikzpicture}
  \node[draw,circle,fill=gray] (poi) {POI};

  \node[blue] (c1) at (0,2) {$y = f(x)$};
  \draw[blue,-latex] (c1.south) to[zigzag] (poi.north);

  \node[red] (c2) at (2,0) {$y = g(x)$};
  \draw[red,-latex] (c2.west) to[zigzag] (poi.east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容