由其他箭头组成的箭头

由其他箭头组成的箭头

我想制作一个箭头,箭头是一个实心圆,周围有圆弧。我可以通过把Arc BarbCircle放在一起来实现这一点,但问题是它们的间距会根据箭头是在起点还是终点而断开:

\documentclass[margin=3mm,tikz]{standalone}

\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{circuits.ee.IEC}

\newcommand*{\ioport}{[sep=1mm]{Arc Barb}[reversed,scale=1.6,sep=-1mm]{Circle}}

\tikzset
  { >={direction ee}
  }

\pgfsetarrowoptions{direction ee}{5pt}
\begin{document}

\begin{tikzpicture}
  \draw[{\ioport<}-{<\ioport}] (0,0) -- (10,0);
  \draw[{\ioport>}-{>\ioport}] (10,-1) -- (0,-1);
\end{tikzpicture}

\end{document}

结果显示,箭头在行尾处与我想要的完全一致,但它在行首处却散开了:

在此处输入图片描述

我想进行改变\ioport以便它可以在边缘的两端使用。

我发现一个可怕的解决方法是为两个行尾创建两个不同的命令:

\newcommand*{\ioportstart}{[sep=1mm]{Circle}[sep=0mm]{Arc Barb}[reversed,sep=-1mm,scale=1.6]} 
\newcommand*{\ioportend}{[sep=1mm]{Arc Barb}[reversed,sep=-1mm,scale=1.6]{Circle}[sep=0mm]}

但我确实想避免在两个行端使用不同的名称。

答案1

我不确定您想要哪一个箭头,但例如,查看手册第 210 页,我想到了这个:

\documentclass[margin=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{myr/.tip = {<[sep=1mm]{Arc Barb}[scale=1.6,sep=0mm]{Circle}},
    my-my/.tip = {myr[reversed]},
    >={direction ee},
    }
\pgfsetarrowoptions{direction ee}{5pt}
\begin{document}
\begin{tikzpicture}
  \draw[my-] (0,-2) -- ++(10,0) node[midway, fill=white]{1};
  \draw[-my] (0,-3) -- ++(10,0) node[midway, fill=white]{2};
  \draw[my-my] (0,-4) -- ++(10,0) node[midway, fill=white]{3};
  \draw[my-] (10,-5) -- ++(-10,0) node[midway, fill=white]{4};
  \draw[-my] (10,-6) -- ++(-10,0) node[midway, fill=white]{5};
  \draw[my-my] (10,-7) -- ++(-10,0) node[midway, fill=white]{6};
\end{tikzpicture}
\end{document}

在此处输入图片描述

基本上,您定义从右到左的提示(我认为,不要相信我从左到右的陈述!)然后该my-my技巧会扩展到三种基本形式。

答案2

这只是 @Rmano 优秀答案的扩展。通过尝试,似乎不需要先定义一个提示,然后将其扩展到两个方向。-它只需一个提示即可工作:

\documentclass[margin=3mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{circuits.ee.IEC}
\tikzset{my/.tip = {>[sep=1mm]{Arc Barb}[scale=1.6, reversed, sep=-1mm]{Circle}}, >={direction ee}
    }
\begin{document}
\begin{tikzpicture}
 \draw[my-] (0,-2) -- ++(10,0) node[midway, fill=white]{1};
  \draw[-my] (0,-3) -- ++(10,0) node[midway, fill=white]{2};
  \draw[my-my] (0,-4) -- ++(10,0) node[midway, fill=white]{3};
  \draw[my-] (10,-5) -- ++(-10,0) node[midway, fill=white]{4};
  \draw[-my] (10,-6) -- ++(-10,0) node[midway, fill=white]{5};
  \draw[my-my] (10,-7) -- ++(-10,0) node[midway, fill=white]{6};
\end{tikzpicture}
\end{document}

箭

答案3

核选项是放弃组合箭头,并自己绘制:

\pgfarrowsdeclare{io}{io}
 {
  \pgfarrowsleftextend{-8\pgflinewidth}
  \pgfarrowsrightextend{8\pgflinewidth}}
 {
   \pgfpathcircle{\pgfpoint{8\pgflinewidth}{0}}{4\pgflinewidth}
   \pgfusepathqfill
   \pgfpathmoveto{\pgfpoint{8\pgflinewidth}{-8\pgflinewidth}}
   \pgfpatharc{270}{90}{8\pgflinewidth}
   \pgfusepathqstroke
 }

\newcommand*{\ioport}{[sep=1mm]{io}[sep=1mm]}

在此处输入图片描述

相关内容