如何更改 tikzset 自动将文本添加到链接中
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning,fit}
\begin{document}
\tikzset{mylink/.style={dashed,->}}
\begin{tikzpicture}
\node[circle,draw] (a) at (0,0){a};
\node[circle,draw] (b) at (5,2){b};
\draw[mylink](a) -- node{aaa}(b) ;
\end{tikzpicture}
\end{document}
答案1
您可以通过大约三种方式来自动获取具有样式的节点。
最简单的方法是使用to
路径运算符,只需将使用的更改to path
为
-- node {#1} (\tikztotarget) \tikztonodes
(这当然只适用于--
路径。)
如果您坚持--
在路径中使用,您可以使用该decorations.markings
库并自动用节点标记这些路径:
mark=at position .5 with {\node {#1};}
这也适用于非直线(--
/ line to
)路径。
第三个选项仅适用于 PGF 的当前 CVS 版本,并使用所谓的边缘节点。与解决方案 1 类似,我将样式更改every edge
为包含此edge node
。(我们也可以在路径中使用every to
and 。) 这里的优点是我们仍然可以将路径更改为例如。to
curve to
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\tikzset{
mylink/.style={
dashed,
->,
},
aaa/.style={
every to/.append style={
to path=-- node {#1} (\tikztotarget) \tikztonodes
}
},
aaa/.default=aaa,
bbb/.style={
decoration={
markings,
mark=at position .5 with {\node {#1};}
},
postaction=decorate
},
bbb/.default=bbb,
ccc/.style={
every edge/.append style={edge node=node {#1}}
},
ccc/.default=ccc
}
\begin{document}
\begin{tikzpicture}
\node[circle,draw] (a) at (0,0) {a};
\node[circle,draw] (b) at (5,2) {b};
\draw[mylink, aaa] (a) to (b);
\end{tikzpicture}
\begin{tikzpicture}
\node[circle,draw] (a) at (0,0) {a};
\node[circle,draw] (b) at (5,2) {b};
\draw[mylink, bbb] (a) -- (b);
\end{tikzpicture}
\begin{tikzpicture}
\node[circle,draw] (a) at (0,0) {a};
\node[circle,draw] (b) at (5,2) {b};
\draw[mylink, ccc, curve to] (a) edge (b);
\end{tikzpicture}
\end{document}
输出