在 TikZ 中向弯曲箭头添加标签

在 TikZ 中向弯曲箭头添加标签

在这个问题中TikZ 是否有与 PSTricks \ncbar 命令等效的命令?Jake 提供了一个非常好的 PSTricks\ncbar命令的 TikZ 版本。

使用 TikZ 中的常规节点连接,我可以使用参数[auto]自动沿路径放置节点。我希望能够使用路径来做到这一点\ncbar,但我不知道该怎么做。

因此,在下面的代码中,我想沿着弯曲箭头添加一个 C 节点,类似于在直箭头上添加的 C 节点。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\tikzset{
    ncbar angle/.initial=90,
    ncbar/.style={
        to path=(\tikztostart)
        -- ($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)
        -- ($(\tikztotarget)!($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztostart)$)
        -- (\tikztotarget)
    },
    ncbar/.default=0.5cm,
}
\begin{document}

   \begin{tikzpicture}[auto]
   \node (A) at (1,4) {A};
   \node (B) at (3,4) {B};
   \draw[->] (A) to  node {C} (B);
   \draw[->] (A) to [ncbar=-1.5em] node {C} (B); % can I get this to work?
   \end{tikzpicture}

\end{document}

代码输出

答案1

您可以\tikztonodes在主链接中添加路径构造。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\tikzset{
    ncbar angle/.initial=90,
    ncbar/.style={
        to path=(\tikztostart)
        -- ($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$) 
        -- ($(\tikztotarget)!($(\tikztostart)!#1!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztotarget)$)!\pgfkeysvalueof{/tikz/ncbar angle}:(\tikztostart)$) 
           \tikztonodes
        -- (\tikztotarget) 
    },
    ncbar/.default=0.5cm,
}
\begin{document}

   \begin{tikzpicture}[auto]
   \node (A) at (1,4) {A};
   \node (B) at (3,4) {B};
   \draw[->] (A) to  node {C} (B);
   \draw[->] (A) to [ncbar=-1.5em] node[pos=0.3,below] {C} (B); 
   \end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容