恐怕我还有一个后续问题这个。
考虑以下 MWE
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=.25]
\tikzset{
ncbar/.style={
to path=%
($(\tikztostart)!#1!90:(\tikztotarget)$)
-- ($(\tikztotarget)!($(\tikztostart)!#1!90:(\tikztotarget)$)!90:(\tikztostart)$)
},
ncbar/.default=0.5cm,
}
\draw[red,ultra thin] (0,0) -- (1,2) -- (2,0);
\draw[blue,ultra thin] (0,0) to[ncbar=0.25cm] (1,2) to[ncbar=0.25cm] (2,0);
\end{tikzpicture}
\end{document}
得出的结果是:
请注意,蓝色路径的第二部分的来源并不“正确”。反过来,第二部分蓝色的是不是与红色对应物平行。我该如何解决这个问题?以某种方式重置/设置\tikztostart
?
附加问题:如何使用圆弧的缺失部分(0.25cm
此例中,该圆以红色曲线的顶点为中心,半径为)来弥合两个蓝色部分之间的差距?
答案1
您必须(\tikztotarget)
在to path
定义中包含 final(不包含前面的--
):
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=.25]
\tikzset{
ncbar angle/.initial=90,
ncbar/.style={
to path=($(\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,
}
\draw[red,ultra thin] (0,0) -- (1,2) -- (2,0);
\draw[blue,ultra thin] (0,0) to[ncbar=0.25cm] (1,2) to[ncbar=0.25cm] (2,0);
\end{tikzpicture}
\end{document}