如何为边和节点定义不同的样式?

如何为边和节点定义不同的样式?

给定此图像(两个节点之间的简单边):

\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}

相关内容