根据这答案,我创建了一个用双线绘制矩形的样式。问题是,如果我将fill=color
或之类的选项传递thick
给使用该样式创建的节点,这些选项显然不会传递给外部节点,因此外部节点将无法正确绘制。(参见 MWE)
评论:我不能使用这个double
键,因为我通常希望两条线之间的间隙是透明的。这就是为什么我使用我链接的答案的方法。
所以问题是,有没有办法将样式(nonlin
)的选项传递给\pgfextra
或提取的属性\tikzlastnode
并重新使用它?我为什么需要\pgfextra
在这里使用?或者我只是忽略了一个微不足道的解决方案?请注意外部节点的错误线宽和第一个节点间隙的错误填充:
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds,fit, positioning}
\tikzset{
nonlin/.style = {
rectangle,thick,draw,minimum width=1cm,minimum height=0.6cm,
append after command={
\pgfextra{
\node[fit=(\tikzlastnode), draw, inner sep=1.8pt] (\tikzlastnode-outer) {};
}
}
}
}
\begin{document}
\begin{tikzpicture}
\node(mynode)[nonlin,fill=blue!20]at(0,0){$a$};
\node(node2)[nonlin, right=of mynode]{$b$};
\begin{scope}[on background layer]
\node[fit=(mynode)(node2), inner sep=5pt,fill=gray!30]{};
\end{scope}
\draw[->,thick](mynode-outer)--(node2-outer);
\end{tikzpicture}
\end{document}
答案1
这就是你想要的吗?
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds,fit, positioning}
\tikzset{
nonlin/.style = {
rectangle,thick,draw,minimum width=1cm,minimum height=0.6cm,#1,
append after command={
\pgfextra{
\node[fit=(\tikzlastnode),#1, draw, inner sep=1.8pt] (\tikzlastnode-outer) {};
}
}
}
}
\begin{document}
\begin{tikzpicture}
\node[nonlin={fill=blue!20}] (mynode) at (0,0) {$a$};
\node[nonlin, right=of mynode] (node2) {$b$};
\begin{scope}[on background layer]
\node[fit=(mynode)(node2), inner sep=5pt,fill=gray!30]{};
\end{scope}
\draw[->,thick](mynode-outer)--(node2-outer);
\end{tikzpicture}
\end{document}