![如何在 TikZ 中有条件地绘制树的节点](https://linux22.com/image/299830/%E5%A6%82%E4%BD%95%E5%9C%A8%20TikZ%20%E4%B8%AD%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E7%BB%98%E5%88%B6%E6%A0%91%E7%9A%84%E8%8A%82%E7%82%B9.png)
我想用 tikZ(版本 2.10)绘制几棵树,它们非常相似,因为有第一棵树,其他树是通过省略第一棵树的一些节点获得的。我想避免复制和粘贴,以保持可编辑。因此,结果应该是什么样子的一个最小示例如下:
\begin{tikz}
\node {eins}
child{
node{zwei}
child{
node{drei}
}
}
;
\end{tikz}
\begin{tikz}
\node {eins}
child{
child{
node{drei}
}
}
;
\end{tikz}
我尝试使用以下 \newif \if 构造:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\newif\ifShow
\Showtrue
\node {eins}
child{
\ifShow
node{zwei}
\fi
child{
node{drei}
}
}
;
\end{tikzpicture}
\end{document}
但它会导致错误消息“错误:包 pgf 错误:没有已知的形状名称。”问题似乎出在子节点{node{drei}}上。如果我删除这部分,节点{zwei}的条件绘制就可以正常工作。
您对如何使用 TikZ 有条件地绘制树节点有什么建议吗?
答案1
按照 Peter 的链接,我尝试了一种不同的 if then else 机制。以下代码在 tikz 2.10 中正常运行。我猜 tikz 2.10 已经过时了,但我为像我这样无法轻松控制 tikz 版本的人添加了此解决方案。
\documentclass{article}
\usepackage{tikz}
\usepackage{etoolbox}
\newbool{DEBUG}
\booltrue{DEBUG}
%\boolfalse{DEBUG}
\begin{document}
\begin{tikzpicture}
\node {eins}
child{
\ifbool{DEBUG}{%IF Debug True
node{zwei}
}{%else nothing
}
child{
node{drei}
}
}
;
\end{tikzpicture}
\end{document}