![在路径的一端添加箭头而不改变另一端](https://linux22.com/image/343495/%E5%9C%A8%E8%B7%AF%E5%BE%84%E7%9A%84%E4%B8%80%E7%AB%AF%E6%B7%BB%E5%8A%A0%E7%AE%AD%E5%A4%B4%E8%80%8C%E4%B8%8D%E6%94%B9%E5%8F%98%E5%8F%A6%E4%B8%80%E7%AB%AF.png)
是否可以为路径的一端指定箭头尖,而不覆盖另一端的现有规范?
我注意到,通过使用无效的箭头末端类型可以实现这一点(至少在路径的末端,但不是路径的起点,并且使用旧版本的 pgf?),但这当然会产生错误。是否有箭头形状显示“使用当前默认箭头或缺少箭头”,从而导致此行为?
\documentclass[tikz, border=2pt]{standalone}
\begin{document}
\tikzset{arrowstart/.style={<-initial}}
\begin{tikzpicture}
\begin{scope}[->]
\draw[arrowstart] (0,.2) -- +(1,0);
\end{scope}
\begin{scope}[|-|]
\draw[arrowstart] (0,0) -- +(1,0);
\end{scope}
\draw[arrowstart] (0,-.2) -- +(1,0);
\end{tikzpicture}
\end{document}
应产生:
(当然,如果我知道另一端的箭头应该是什么,那么我可以使用正确的规范,但如果我想在几个不同的范围内使用相同的样式,那么这可能不切实际。)
答案1
我不知道如何恢复当前箭头,但您可以initial
默认将箭头定义为空,然后在范围内重新定义它。
\documentclass[tikz, border=2pt]{standalone}
\tikzset{
initial/.tip = {},
arrowstart/.style={<-initial}
}
\begin{document}
\begin{tikzpicture}
\begin{scope}[initial/.tip = {latex}, -initial, yshift=4mm]
\draw[red] (0,2mm) -- +(1,0);
\draw[arrowstart] (0,0) -- +(1,0);
\end{scope}
\begin{scope}[initial/.tip = {|}, initial-initial]
\draw[red] (0,2mm) -- +(1,0);
\draw[arrowstart] (0,0) -- +(1,0);
\end{scope}
\begin{scope}[yshift=-4mm]
\draw[red] (0,2mm) -- +(1,0);
\draw[arrowstart] (0,0) -- +(1,0);
\end{scope}
\end{tikzpicture}
\end{document}