在下面的示例中,我定义的样式every node
使用了阴影。我的a
节点使用该默认样式,无需修改。但是,我想为节点覆盖该样式b
,该节点应该完全没有阴影。
我尝试过
- 传递
fill opacity=0
到drop shadow
本地,或 - 不向选项 (
drop shadow=,
) 传递任何内容,
但节点b
仍然有阴影。
我已阅读 TikZ/PGF (v3.0) 手册中有关该shadows
库的第 66 节,但尚未找到覆盖drop shadow
样式的方法。有什么帮助吗?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows}
\tikzset{
every node/.style={
draw,
drop shadow = {opacity=0.5,fill=red},
fill = white,
},
}
\begin{document}
\begin{tikzpicture}
\node (a) {a};
\node[
right=of a,
drop shadow={opacity=0}, % the shadow is still there
% drop shadow=, % also no effet
] (b) {b};
\end{tikzpicture}
\end{document}
答案1
阴影会添加preaction
。TikZ 不提供删除预操作的方法。在序言中,您可以定义自己的reset preactions
键 :
\makeatletter
\tikzset{reset preactions/.code={\def\tikz@preactions{}}}
\makeatother
这是一个完整的例子:
\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows}
\makeatletter
\tikzset{reset preactions/.code={\def\tikz@preactions{}}}
\makeatother
\tikzset{
every node/.style={
draw,
drop shadow = {opacity=0.5,fill=red},
fill = white,
},
}
\begin{document}
\begin{tikzpicture}
\node (a) {a};
\node[right=of a,reset preactions] (b) {b};
\end{tikzpicture}
\end{document}
正如 Claudio Fiandrino 在其评论中所建议的,要将此新键应用于范围内的所有节点,您可以将其附加到every node
样式:
\documentclass[margin=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows}
\makeatletter
\tikzset{reset preactions/.code={\def\tikz@preactions{}}}
\makeatother
\tikzset{
every node/.style={
draw,
drop shadow = {opacity=0.5,fill=red},
fill = white,
},
}
\begin{document}
\begin{tikzpicture}
\node (a) {a};
\begin{scope}[every node/.append style={reset preactions}]
\node[right=of a] (b) {b};
\node[right=of b] (c) {c};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
如果我们把节点(或者节点我们不想遮蔽)并scope
使用选项general shadow/.style={}
?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,shadows}
\tikzset{
every node/.style={
draw,
drop shadow = {opacity=0.5,fill=red},
fill = white,
},
}
\begin{document}
\begin{tikzpicture}
\node (a) {a};
\begin{scope}[general shadow/.style={}]
\node[right=of a] (b) {b};
\end{scope}
\end{tikzpicture}
\end{document}
随着更多节点我们可以更好的观察效果。
\begin{tikzpicture}
\node (a) {a};
\begin{scope}[general shadow/.style={}]
\node[right=of a] (b) {b};
\node[right=of b] (c) {c};
\end{scope}
\node[right=of c] (d) {d};
\end{tikzpicture}