我一直在尝试 TikZsep
箭头选项,它允许间隔箭头。我认为它对于制作中点箭头和缩短路径也非常有用。我还没有看到任何人这样做 - 也许我观察得不够仔细。
在这里我制作了一些箭头,从一端到另一端:
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary {arrows.meta,bending}
\begin{document}
\begin{tikzpicture}
\newcommand{\mypath}{(0,0) to[out=90, in=-90] (4,2)}
\draw [red, -{>[sep=0.5cm] Butt Cap[]}] \mypath;
\draw [green, yshift=-1cm, {Butt Cap[] Stealth[reversed, sep=0.5cm]}-] \mypath;
\draw [blue, yshift=-2cm,
{Butt Cap[]
Stealth[reversed, sep=0.1cm]
Stealth[reversed, sep=0.2cm]
Stealth[reversed, sep=0.4cm]
Stealth[reversed, sep=0.8cm]
Stealth[reversed, sep=1.6cm]
}-] \mypath;
\end{tikzpicture}
\end{document}
我不喜欢Butt Cap[]
在末尾避免使用箭头。有没有表示没有箭头的符号。这个:->-
不起作用。也许是我在手册中忽略了的empty
或?有没有办法给出相对长度?-没有给出中点箭头(单位显然是)。\arrow[none]
sep
sep=0.5
pt
这里我使用 来sep
缩短路径,但不改变路径。法线shorten
将从终点切向缩短 - 参见绿色路径:
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary {arrows.meta,bending}
\begin{document}
\begin{tikzpicture}
\newcommand{\mypath}{(0,0) to[out=90, in=-90] (4,2)}
\draw [gray, thick] \mypath;
\draw [red, -{Butt Cap[sep=0.5cm]}] \mypath;
\draw [green, shorten >=0.5cm] \mypath;
\end{tikzpicture}
\end{document}
再次,我不喜欢Butt Cap
箭头,因为它覆盖了(或者说是补充了)默认值line cap
。
编辑:我知道许多其他中点箭头解决方案,例如这里TikZ:如何在线中间画箭头?,但没有使用sep
。
答案1
这不是一个完整的答案,而是对其中一个子问题的回答:您可以定义一个简写,参见 pgfmanual 3.1.8 第 210 页。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary {arrows.meta,bending}
\begin{document}
\begin{tikzpicture}
\newcommand{\mypath}{(0,0) to[out=90, in=-90] (4,2)}
\draw [red, -{>[sep=0.5cm] Butt Cap[]}] \mypath;
\draw [green, yshift=-1cm, {Butt Cap[] Stealth[reversed, sep=0.5cm]}-] \mypath;
\draw [blue, yshift=-2cm,
{Butt Cap[]
Stealth[reversed, sep=0.1cm]
Stealth[reversed, sep=0.2cm]
Stealth[reversed, sep=0.4cm]
Stealth[reversed, sep=0.8cm]
Stealth[reversed, sep=1.6cm]
}-] \mypath;
\begin{scope}[xshift=6cm,b/.tip={Butt Cap[]}]
\draw [red, -{>[sep=0.5cm]b}] \mypath;
\draw [green, yshift=-1cm, {b Stealth[reversed, sep=0.5cm]}-] \mypath;
\draw [blue, yshift=-2cm,
{b
Stealth[reversed, sep=0.1cm]
Stealth[reversed, sep=0.2cm]
Stealth[reversed, sep=0.4cm]
Stealth[reversed, sep=0.8cm]
Stealth[reversed, sep=1.6cm]
}-] \mypath;
\end{scope}
\end{tikzpicture}
\end{document}
至于路径的长度,找出它的一种方法是使用decorations.markings
,但这可能会失去目的。