我知道嵌套 tikz 图片是 经过考虑的 坏的,但我还是这么做了,因为我不想手动定位。我嵌套了几个类似于另一个关于圈子的问题。问题在于矩形未正确居中,这可以在左右堆叠的垂直线上看到。
这是嵌套引起的问题还是我做错了其他事情?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
class/.style={
draw,
align=center,
rectangle,
rounded corners=20pt,
minimum size=0pt,
inner sep=5pt,
outer sep=0pt,
},
label/.style={
rectangle,
align=center,
inner sep=6pt,
outer sep=4pt, % shifts labels a bit down
node distance=0pt,
},
]
\node [class] (csl) {
\begin{tikzpicture}
\node [class] (ptime) {
\begin{tikzpicture}
\node [class] (mcfl) {
\begin{tikzpicture}
\node [class] (rpl) {
\begin{tikzpicture}
\node [class] (tal) {
\begin{tikzpicture}
\node [class,rounded corners=5pt] (cfl) {CFG};
\node [label, below=of cfl] {TAG, LIG, CCG, HG };
\end{tikzpicture}
};
\node [label, below=of tal] {RPG, (2,2)-MCFG};
\end{tikzpicture}
};
\node [label, below=of rpl] {MCFG, LCFRS};
\end{tikzpicture}
};
\node [label, below=of mcfl] {RCG, simple LMG \\ (= PTIME)};
\end{tikzpicture}
};
\node [label, below=of ptime] {CSG};
\end{tikzpicture}
};
\end{tikzpicture}
\end{document}
答案1
将下面的代码与您的代码进行比较。仍有改进的空间。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{backgrounds,fit}
\tikzset{every fit/.append style=text badly centered}
\tikzset{class/.style={
draw,
rectangle,
rounded corners=20pt,
inner ysep=5pt,
},
label/.style={
align=center,
inner sep=6pt,
outer ysep=4pt,
node distance=0pt,
}
}
\begin{document}
\begin{tikzpicture}
\node [class,rounded corners=5pt] (cfl) {CFG};
\node [label, below=of cfl] (tal) {TAG, LIG, CCG, HG };
\node [label, below=of tal] (rpl) {RPG, (2,2)-MCFG};
\node [label, below=of rpl] (mcfl) {MCFG, LCFRS};
\node [label, below=of mcfl] (ptime) {RCG, simple LMG \\ (= PTIME)};
\node [label, below=of ptime] (csl) {CSG};
\begin{pgfonlayer}{background}
\node [class, inner xsep=5em, fit=(cfl) (tal) (rpl) (mcfl) (ptime) (csl)] {};
\node [class, inner xsep=4em, fit=(cfl) (tal) (rpl) (mcfl) (ptime)] {};
\node [class, inner xsep=3em, fit=(cfl) (tal) (rpl) (mcfl)] {};
\node [class, inner xsep=2em, fit=(cfl) (tal) (rpl)] {};
\node [class, inner xsep=1em, fit=(cfl) (tal)] {};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}