在路径的一端添加箭头而不改变另一端

在路径的一端添加箭头而不改变另一端

是否可以为路径的一端指定箭头尖,而不覆盖另一端的现有规范?

我注意到,通过使用无效的箭头末端类型可以实现这一点(至少在路径的末端,但不是路径的起点,并且使用旧版本的 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}

在此处输入图片描述

相关内容