如何避免节点样式的样式传入节点中包含的架构
因此在下面的 ECM 上,右侧节点变为绿色并被切成 2 块,而左侧节点没有改变颜色但被切断
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{fit, positioning}
\usetikzlibrary{shapes.multipart}
\begin{document}
\tikzset{rougelarge/.style={fill=red!20,minimum width=15em,minimum height=4em,text width=15em,draw}}
\newcommand{\nodeUn}{
\begin{tikzpicture}
\node[rougelarge](aa){texte sur plusieurs lignes\\texte sur plusieurs lignes};
\node[right=5em of aa,draw](bb){texte};
\end{tikzpicture}
}
\begin{tikzpicture}
\node[rectangle split, rectangle split parts=2,fill=green]{texte sur plusieurs lignes
\nodepart{two}
\nodeUn
};
\end{tikzpicture}
\end{document}
答案1
正如很久以前就有人告诉我的那样,我从未使用过tikzpicture
嵌套在另一个中。考虑改变你的方法。
在这种情况下,一种方法是完全定义每个节点的样式,使其看起来像蚂蚁,这将防止继承交互问题:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{fit, positioning}
\usetikzlibrary{shapes.multipart}
\tikzset{
rouge large/.style={%
fill=red!20,
minimum width=15em,
minimum height=4em,
text width=15em,
draw,
rectangle},
blanc etroit/.style={%
draw,
fill=white,
rectangle},
}
\newcommand{\nodeUn}{
\begin{tikzpicture}
\node[rouge large] (aa)
{texte sur plusieurs lignes\\texte sur plusieurs lignes};
\node[right=5em of aa, blanc etroit] (bb) {texte};
\end{tikzpicture}
}
\begin{document}
\begin{tikzpicture}
\node[rectangle split, rectangle split parts=2,fill=green]
{texte sur plusieurs lignes
\nodepart{two}
\nodeUn
};
\end{tikzpicture}
\nodeUn
\end{document}
答案2
你放了一个 Ti钾Z 图片(存储在 的定义中\nodeUn
)放入另一个 Ti 的节点中钾Z 图片。这通常会导致并发症。但实际上没有必要。
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{fit, positioning,backgrounds}
\usetikzlibrary{shapes.multipart}
\begin{document}
\tikzset{rougelarge/.style={fill=red!20,minimum width=15em,minimum height=4em,text width=15em,draw}}
\begin{tikzpicture}
\node[rougelarge](aa){texte sur plusieurs lignes\\texte sur plusieurs lignes};
\node[right=5em of aa,draw](bb){texte};
\path(aa.west)--(bb.east) node[midway,above=1cm](cc){texte sur plusieurs lignes};
\begin{scope}[on background layer]
\node [fit=(aa) (bb) (cc),fill=green,rectangle]{};
\end{scope}
\end{tikzpicture}
\end{document}
更新:当然,您也可以关闭该选项。
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{fit, positioning}
\usetikzlibrary{shapes.multipart}
\begin{document}
\tikzset{rougelarge/.style={fill=red!20,minimum width=15em,minimum height=4em,text width=15em,draw}}
\newcommand{\nodeUn}{
\begin{tikzpicture}[rectangle split parts=1]
\node[rougelarge](aa){texte sur plusieurs lignes\\texte sur plusieurs lignes};
\node[right=5em of aa,draw](bb){texte};
\end{tikzpicture}
}
\begin{tikzpicture}
\node[rectangle split, rectangle split parts=2,fill=green]{texte sur plusieurs lignes
\nodepart{two}
\nodeUn
};
\end{tikzpicture}
\end{document}
我愿意不是建议这样做。可以预见的是,这样做会适得其反。