给定此图像(两个节点之间的简单边):
\begin{tikzpicture}[>=latex,line join=bevel,]
\node (a1) at (44bp,8bp) [draw,trapezium] {$A$};
\node (d1) at (44bp,82bp) [draw,trapezium, shape border rotate=180] {$B$};
\draw [->] (d1) ..controls (44bp,62.836bp) and (44bp,41.478bp) .. node {$edge$} (a1);
\end{tikzpicture}
我定义:
\tikzstyle{every node}=[drop shadow, fill=white, draw]
所发生的情况是,边缘上的节点也会被渲染成一个带有阴影的框。我希望边缘标签只是文本,而不会失去规则every node
。
因此我的问题是:有没有办法可以为边缘中的节点指定特定的渲染,同时保持所有其他节点都有阴影?
我必须注意,我的 tikz 图片已经生成,因此我只能控制every
样式。
答案1
edge
您在绘图中没有使用TikZ 意义上的 ,它只是带有节点的普通路径(TikZedge
是使用 创建的\path (A) edge (B)
)。因此,没有every ...
安装特定于“边缘”节点的样式,您无法将其挂接到其中。
既然你说你的图像是生成的(如何生成?),那么你可能需要采取一些不同的方法。在本例中,every node
你可以只应用阴影,而不是添加阴影。every trapezium node
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,shadows}
\begin{document}
\tikzset{every trapezium node/.style={
drop shadow, fill=white, draw
}
}
\begin{tikzpicture}[>=latex,line join=bevel,]
\node (a1) at (44bp,8bp) [draw,trapezium] {$A$};
\node (d1) at (44bp,82bp) [draw,trapezium, shape border rotate=180] {$B$};
\draw [->] (d1) ..controls (44bp,62.836bp) and (44bp,41.478bp) .. node {$edge$} (a1);
\end{tikzpicture}
\end{document}