问题
我想添加一个 tikz style
,它只影响大图中的某些箭头,并添加一个postaction
。我还需要弯曲和标记这些箭头,因此使用命令创建了很多edge
。
然而,正如这个 Tikz 手册(第 131 页,第 13.11 节),edge
路径是在主路径之后计算的。因此(我认为),箭头postaction
失败了edge
。
问题
我可以postaction
在edge
路径上使用吗?如果可以,如何使用?
例子
\documentclass{standalone}
\usepackage{tikz}
\tikzset{
arrow/.style = { -stealth, red, line width = 2mm,
postaction = { draw, blue, line width = 1mm, shorten >=1mm }
}
}
\begin{document}
\begin{tikzpicture}
\draw[arrow] (0,0) -- (+1,+1);
\draw[arrow] (0,0) edge (-1,-1);
\end{tikzpicture}
\end{document}
生产
期望
答案1
您必须将箭头样式应用于边缘,而不是整个路径。为此,您可以使用every edge
样式。正如@percusse 在他的评论中所说,您必须添加draw
样式。
\documentclass{standalone}
\usepackage{tikz}
\tikzset{
arrow/.style = {-stealth, draw=red, line width = 2mm,
postaction = { draw=blue, line width = 1mm, shorten >=1mm }
},
earrow/.style={
every edge/.style={arrow}
}
}
\begin{document}
\begin{tikzpicture}
\draw[arrow] (0,0) -- (+1,+1);
\draw[earrow] (0,0) edge (-1,-1);
\end{tikzpicture}
\end{document}
答案2
我认为获得您想要的正确方法是使用定义开始和结束<arrow_tip>-<arrow_tip>
,通常是<->
,但您的风格应该是stealth-stealth
。
结果:
梅威瑟:
\documentclass[border=20pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{
arrow/.style = {
draw,
red,
stealth-stealth,
line width = 2mm,
postaction = {
draw,
blue,
line width = 1mm,
shorten >=1mm,
shorten <=1mm,
stealth-stealth
}
}
}
\begin{document}
\begin{tikzpicture}
\draw[arrow] (-1,-1) -- (1,1);
\draw[arrow] (1,-1) -| (3,1);
\draw[arrow] (4,-1) .. controls +(right:2cm) and +(down:2cm) .. (6,1);
\end{tikzpicture}
\end{document}